Torna in homepage www.vincenzomanzoni.com
Homepage personale e blog di Vincenzo Manzoni
 
 FAQFAQ   CercaCerca   Cerca con GoogleCerca con Google   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati   Feed AtomFeed
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

Problema...
Vai a 1, 2  Successivo
 
Questo forum � chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento � chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> L'angolo di Leonardo Da Vincienzomanzoni.com
Precedente :: Successivo  
Autore Messaggio
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Lun Nov 03, 2008 11:15 am    Oggetto: Problema... Rispondi citando

Ho una domanda da porre ad ingegneri informatici e non.

Ho una tabella di un database che possiede pi� di 4 milioni di record e per accedervi velocemente ho creato una serie di indici: funziona perfettamente.

Ora per� ho un problema. Lo spazio occupato � troppo grande, perci� volevo sapere se conoscevate una maniera alternativa per poter accedere ai dati, ad esempio utilizzando un file binario o qualcosa del genere...

Ogni record della tabella possiede molti campi (circa una ventina), potrei eliminarne molti, ma lo spazio occupato rimane troppo grande. Mi serve una soluzione differente, che mi permette di avere uno spazio di memoria occupata molto pi� basso ed allo stesso tempo un accesso veloce ai dati.

Qualche idea?
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
vinz
Amministratore
Amministratore


Registrato: 12/12/03 12:56
Messaggi: 6648
Residenza: San Pellegrino Terme (Bergamo)

MessaggioInviato: Lun Nov 03, 2008 12:07 pm    Oggetto: Re: Problema... Rispondi citando

Giorgio ha scritto:
Ora per� ho un problema. Lo spazio occupato � troppo grande, perci� volevo sapere se conoscevate una maniera alternativa per poter accedere ai dati, ad esempio utilizzando un file binario o qualcosa del genere...

Ci dai qualche dettaglio in pi�? Per esempio, sono gli indici o i dati che occupano tanto spazio? Qual � l'ordine di grandezza? Rolling Eyes

Sembra un problema interessante. Wink
Top
Profilo Invia messaggio privato HomePage  
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Lun Nov 03, 2008 12:11 pm    Oggetto: Re: Problema... Rispondi citando

vinz ha scritto:
Ci dai qualche dettaglio in pi�? Per esempio, sono gli indici o i dati che occupano tanto spazio? Qual � l'ordine di grandezza?

No no il problema � il grande numero di dati, non gli indici.

Beh, lo spazio occupato credo che sia intorno ai 900 Mbyte, compresso per�... Smile

A me basterebbe avere un file con poche informazioni per ogni record, non tutte quelle presenti nel DB. L'importante � che occupi poco spazio e che abbia un accesso veloce. Se l'accesso non fosse cos� veloce potrei pensare di indicizzare il tuttoper� non so quanto convenga, dovrei fare un po' di prove.
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
Pastacolpesto
Utente adolescente
Utente adolescente


Registrato: 19/05/04 18:47
Messaggi: 730
Residenza: Bergamo

MessaggioInviato: Lun Nov 03, 2008 2:01 pm    Oggetto: Rispondi citando

900 Mega per 4 milioni di record? Ma sei sicuro?
Che db �?

Comunque se non ti servono tutte le informazioni ti consiglio di farti un'altra tabella con sole le informazioni che ti servono, sicuramente la cosa � pi� veloce.
Che tipo di query dovresti fare?

Io non l'ho mai usato, ma se � SQl server c'� un tool che mentre fai un po' di query cerca di trovare una fantomatica esecuzione ottima della query piazzando indici qua e l�. L'hai provato?
_________________
La teoria � quando si sa tutto e niente funziona. La pratica � quando tutto funziona e nessuno sa il perch�. Noi abbiamo messo insieme la teoria e la pratica: non c'� niente che funzioni... e nessuno sa il perch�..
A.Einstein
Top
Profilo Invia messaggio privato Invia e-mail MSN 
ICQ
Tomaux
Utente adulto
Utente adulto


Registrato: 12/08/04 17:56
Messaggi: 2494
Residenza: bergamo

MessaggioInviato: Lun Nov 03, 2008 4:07 pm    Oggetto: Rispondi citando

Imparati le informazioni a memoria!
_________________
A volte mi fermo e penso:
"THE EARTHQUAKE!!! OH MY FUCKING GOD, THE EARTHQUAKE!!!"
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
Francesco
Utente adulto
Utente adulto


Registrato: 23/12/03 15:24
Messaggi: 2113
Residenza: Busnago (MI)

MessaggioInviato: Lun Nov 03, 2008 8:22 pm    Oggetto: Rispondi citando

A mio parere, e per quello che ho studiato di db, il fattore occupazione su disco vs. velocit� di accesso � un trade off, ovvero aumenti la velocit� aumentando gli indici e quindi lo spazio occupato e viceversa, non � che puoi scappare tanto lontano da questo...
Non vorrei dire stupidate, ma mi sembra di ricordare che il para o qualche esercitatore all'epoca ci avesse detto che i db pi� veloci e speed-critical usano anche il 90% dello spazio occupato solo per gli indici!

Come consiglio ti direi di ridurre all'osso i campi, tanto per iniziare, quindi cercare se esiste qualcosa che ti permetta di comprimere in maniera trasparente all'utilizzatore i dati del db, inoltre controllare se esistono dati ridondanti e se ad esempio una diversa struttura potrebbe migliorare le cose. Se hai query statiche e predefinite anche un'ottimizzazione delle query potrebbe essere una via percorribile.
Infine dopo che hai rimpicciolito il tutto, ti metti a smanettare con gli indici fino a quando raggiungi la dimensione limite che vuoi avere. Cos� a naso ti direi che probabilmente puoi indicizzare in modo "custom" sulle tue query, sempre che siano statiche ovviamente, ovvero individuare qual'� l'operazione pi� dispendiosa che esegue la tua query e cercare di lavorare su quell'aspetto, quest'ultima cosa me la sono appena inventata, non sono affatto sicuro che sia una strada percorribile nella pratica!
_________________
God is real........... unless declared integer or long
Top
Profilo Invia messaggio privato Invia e-mail  
ICQ
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Mar Nov 04, 2008 10:19 am    Oggetto: Rispondi citando

Allora, come gi� avevo detto la riduzione dei campi non � un problema, non tutte le informazioni presenti sono necessariamente utili.

Grazie per i vostri consigli, ma a me interessa avere una soluzione alternativa all'utilizzo di un DB... Se esiste. Cio� un file con un formato particolare o qualcosa di simile, dove posso scrivere gli stessi dati presenti nel DB (anzi molti meno).
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
Francesco
Utente adulto
Utente adulto


Registrato: 23/12/03 15:24
Messaggi: 2113
Residenza: Busnago (MI)

MessaggioInviato: Mar Nov 04, 2008 11:18 am    Oggetto: Rispondi citando

XML? CSV? Per� l'accesso a questi file � sequenziale, quindi dovresti scorrere sempre tutto e con milioni di record.... ci metti anni... non so, magari esistono metodi di accesso alternativi, magari no... Very Happy
_________________
God is real........... unless declared integer or long
Top
Profilo Invia messaggio privato Invia e-mail  
ICQ
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Mar Nov 04, 2008 11:41 am    Oggetto: Rispondi citando

Francesco ha scritto:
XML? CSV? Per� l'accesso a questi file � sequenziale, quindi dovresti scorrere sempre tutto e con milioni di record.... ci metti anni... non so, magari esistono metodi di accesso alternativi, magari no... Very Happy
Potrei indicizzarli ed accedere all'indice, ma speravo che qualcuno di voi conoscesse soluzioni alternative ...
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
abaddon
Utente adulto
Utente adulto


Registrato: 05/04/04 16:32
Messaggi: 2033

MessaggioInviato: Mar Nov 04, 2008 7:47 pm    Oggetto: Rispondi citando

4milioni di righe su file � da suicidio che sia xml o meno o_o
francamente non ho ben capito il problema all'inizio pensavo che volevi ottimizzare il db, ora parli di metodi alternativi per memorizzare le cose...

a sto punto se effettivamente � cos� il consiglio di Fede non � male, nel senso, selezioni le cose che ti interessano e ti ricrei un db customizzato con i dati che ti interessano e quello grosso lo "butti".

Potresti guardare anche i tipi di dato da utilizzare, infatti a seconda del tipo di dato che hai cambia la dimensione es:

char=1 byte int=4 byte; long=4 byte (prese al volo da un sito, spero siano giusti perch� francamente non mi ricordavo pi� Very Happy)

comunque il discorso � che se usi un campo char per scrivere 10000 hai usato 5byte se usavi un int ne usavi 4byte e lo stesso il contrario, se hai numeri piccoli allora forse ti conviene salvarli come char cos� usi 1 byte invece di 4 byte costanti... perdendo ovviamente gli operatori anche se volendo potresti usare alcuni comandi tipo CAST o CONVERT per castare i dati al volo a livello di query (in SQLSERVER ci sono sti comandi perch� li ho usati recentemente, penso anche negli altri DB medio alti)

boh queste sono le cose che mi vengono in mente, poi ci sarebbe da leggere qualche enciclopedia sulla gestione dei dati presumo...
Top
Profilo Invia messaggio privato HomePage  
ICQ
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Mar Nov 04, 2008 9:04 pm    Oggetto: Rispondi citando

XML � da spararsi...
Top
Profilo Invia messaggio privato MSN 
vinz
Amministratore
Amministratore


Registrato: 12/12/03 12:56
Messaggi: 6648
Residenza: San Pellegrino Terme (Bergamo)

MessaggioInviato: Mar Nov 04, 2008 10:38 pm    Oggetto: Rispondi citando

Giorgio, secondo me dovresti specificare meglio i requisiti. Puoi usare o no un database? Perch� se s�, la soluzione migliore � quella di fare una analisi delle tabelle attuali, fare una proiezione sugli attributi che ti sevono, costruirci sopra degli indic furbi (hash o BTree a seconda) e poi usare SQL per le query.
Difficilmente puoi, con moderato sforzo, fare meglio di un db in termini di velocit�.

Se invece non puoi usare un db, devi per forza usare un file binario. A questo punto ti devi creare due file: uno che contiene i dati e uno che contiene gli indici ai dati. All'avvio, carichi in memoria solo il contenuto dell'indice, sull'indice fai le interrogazioni e quindi accedi al file con le informazioni.

Personalmente, non vedo altre alternative. Smile
_________________
Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla
Top
Profilo Invia messaggio privato HomePage  
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Mer Nov 05, 2008 12:18 pm    Oggetto: Rispondi citando

vinz ha scritto:
Personalmente, non vedo altre alternative. Smile
Ok, a quanto sembra non ci sono soluzioni migliori a quelle che gi� conoscevo...

Comunque sia, pensavo di essere stato chiaro. Mi ripeto: il DB che possiedo � molto grande ed occupa un sacco di spazio, ma l'accesso ai suoi dati l'ho reso molto veloce grazie all'utilizzo di indici. Per diminuire lo spazio basta che mi creo un DB identico ma con meno campi per ogni record, e fin qui ok... Mma a questa conclusione c'ero gi� arrivato.

Io volevo sapere se esisteva una alternativa all'utilizzo di un DataBase...
Giorgio ha scritto:
volevo sapere se conoscevate una maniera alternativa per poter accedere ai dati, ad esempio utilizzando un file binario o qualcosa del genere...
Da quanto mi avete detto, l'unico sistema che conoscete � proprio l'utilizzo del file binario, perci� nulla che non conoscevo gi�... Peccato Confused
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
vinz
Amministratore
Amministratore


Registrato: 12/12/03 12:56
Messaggi: 6648
Residenza: San Pellegrino Terme (Bergamo)

MessaggioInviato: Mer Nov 05, 2008 2:43 pm    Oggetto: Rispondi citando

Dato che 900 MB non sono poi "moltissimi" Wink, potresti pensare di caricarli prima in memoria e poi accederci direttamente. In questo caso, devi crearti tu una struttura che li contenga, allocare lo spazio in memoria in maniera dinamica (malloc o new) e poi crearti una struttura ad indice (magari ti basta solo un hash) per andare a "prenderli".
_________________
Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla
Top
Profilo Invia messaggio privato HomePage  
Giorgio
Utente adulto
Utente adulto


Registrato: 08/01/04 19:19
Messaggi: 1793
Residenza: Sedrina (Bergamo)

MessaggioInviato: Mer Nov 05, 2008 4:21 pm    Oggetto: Rispondi citando

vinz ha scritto:
Dato che 900 MB non sono poi "moltissimi" Wink, potresti pensare di caricarli prima in memoria e poi accederci direttamente. In questo caso, devi crearti tu una struttura che li contenga, allocare lo spazio in memoria in maniera dinamica (malloc o new) e poi crearti una struttura ad indice (magari ti basta solo un hash) per andare a "prenderli".
Mmh... Rolling Eyes Si giusto, non so esattam come fare, per� in effetti caricandoli in memoria avrei un accesso pi� veloce.
_________________
Nessuno potr� viver la mia vita al posto mio, per quanto mi identifichi nel battito di un altro, sar� sempre attraverso questo cuore... - Jovanotti, "Mezzogiorno"

-- My site
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN 
Mostra prima i messaggi di:   
Questo forum � chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento � chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> L'angolo di Leonardo Da Vincienzomanzoni.com Tutti i fusi orari sono GMT 1 ora
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it