Domanda

Ho circa 200.000 file di testo che vengono inseriti in un file bz2. Il problema che ho è che quando la scansione il file bz2 per estrarre i dati di cui ho bisogno, va estremamente lento. Deve guardare attraverso l'intero file bz2 per mettere il singolo file sto cercando. Esiste un modo per accelerare questo?

Inoltre, ho pensato forse organizzare i file nella tar.bz2 così posso invece avere sa dove guardare. Esiste un modo per organizzare i file che vengono messi in un bz2?

Ulteriori informazioni / Edit: Ho bisogno di interrogare il file compresso per ogni file di testo. Esiste un metodo di compressione migliore che supporta un numero così elevato di file ed è il più completamente compresso?

È stato utile?

Soluzione

Dovete usare bzip2? Leggendolo di documentazione , è abbastanza chiaro non è progettato per supportare l'accesso casuale. Forse si dovrebbe utilizzare un formato di compressione che più si avvicina alle tue esigenze. I buoni supporti vecchi formato ZIP accesso casuale, ma potrebbe comprimere peggio, naturalmente.

Altri suggerimenti

impacchi Bzip2 in grandi blocchi (900 KiB per impostazione predefinita, credo). Un metodo che potrebbe accelerare la scansione del file tar drammaticamente, ma ridurrebbe prestazioni di compressione, sarebbe per comprimere ogni file individualmente e poi tar i risultati insieme. Questo è essenzialmente ciò che file formato ZIP sono (anche se usando la compressione zlib, piuttosto che bzip2). Ma si potrebbe quindi facilmente afferrare l'indice di catrame e hanno solo per decomprimere il file specifico (s) che si sta cercando.

Non credo che la maggior parte dei programmi tar offrono molto la capacità di organizzare i file in modo significativo, anche se si potrebbe scrivere un programma per fare questo per il vostro caso particolare (So Python ha le librerie di catrame-scrittura se ho usato solo una o due volte). Tuttavia, saresti ancora avete il problema di dover decomprimere maggior parte dei dati prima di trovare quello che stavi cercando.

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