Domanda

Sto lavorando su un progetto Java che vi permette agli utenti di analizzare più file con potenzialmente migliaia di linee. Le informazioni analizzati verranno memorizzate in diversi oggetti, che poi verranno aggiunti a un insieme.

Dal momento che l'interfaccia grafica non richiede di caricare tutti questi oggetti in una sola volta e tenerli in memoria, sto cercando un modo efficace per caricare / scaricare dati da file, in modo che i dati vengono caricati solo nella collezione quando un utente lo richiede.

Sono solo le opzioni di valutazione al momento. Ho anche pensato al caso in cui, dopo aver caricato un sottoinsieme dei dati nella collezione, e presentandolo sulla GUI, il modo migliore per ricaricare la precedenza osservato dati. Eseguire nuovamente il parser / Popolare di raccolta / Popola GUI? o probabilmente trovare un modo per mantenere la raccolta in memoria, o serializzare / deserializzare la raccolta stessa?

So che il carico / scarico sottoinsiemi di dati possono ottenere difficile se si esegue una sorta di filtraggio dei dati. Diciamo che a filtrare su ID, quindi la mia nuova sottoinsieme conterrà i dati di due sottoinsiemi analizzati precedenti. Questo sarebbe nessun problema è Continuo a una copia master di tutto i dati in memoria.

Ho letto che google-collezioni sono buone ed efficienti durante la manipolazione di grandi quantità di dati, e metodi di offerta che semplificano un sacco di cose quindi questo potrebbe offrire un'alternativa per permettermi di tenere la raccolta in memoria. Questo è solo parlare generale. La domanda su cosa la raccolta da utilizzare è una cosa separata e complesso.

Lo sai qual è la raccomandazione generale su questo tipo di attività? Mi piacerebbe sentire quello che hai fatto con scenari simili.

posso fornire più specifiche, se necessario.

È stato utile?

Soluzione

È possibile incorporare un database nell'applicazione, come HSQLDB . In questo modo si analizza i file la prima volta e quindi utilizzare SQL per fare querys semplici e complessi.

  

HSQLDB (HyperSQL DataBase) è il   motore di database relazionale SQL leader   scritto in Java. Ha un driver JDBC   e supporta quasi piena ANSI SQL-92   (Formato BNF albero) oltre a molti SQL: 2008   miglioramenti. e offre un piccolo, veloce   motore di database che offre in-memory   e tavoli e supporti basati su disco   modalità incorporati e server .   Inoltre, include strumenti di tali   come uno strumento a riga di comando SQL e GUI   strumenti di query.

Altri suggerimenti

Se si dispone di tonnellate di dati, un sacco di file, e siete a corto di memoria, è possibile fare una prima scansione del file per indicizzarlo. Se il file è diviso in record per riga feed, e non si sa come leggere la cronaca, si potrebbe indice i record da posizioni di byte. Più tardi, se si voleva leggere un certo insieme di indici, si dovrebbe fare una ricerca veloce per trovare quale byte gamme è necessario leggere, e leggere quelli di InputStream del file. Quando non serve più tali elementi, saranno GCed. Lei non potrà mai contenere più elementi del necessario nel mucchio.

Questa sarebbe una soluzione semplice. Sono sicuro che si può trovare una libreria di fornire con più funzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top