Idee di implementazione per archiviare più file in un singolo file per un accesso più rapido?

2

Il mio requisito è quello di memorizzare un numero elevato di file all'interno di un singolo file. I file memorizzati potrebbero essere qualsiasi cosa come immagini, video o semplici file di testo. Voglio alcune idee per implementare lo stesso. Sto pensando di implementare un file system all'interno di un file, ma non sono sicuro che sia una buona idea.

Aggiungere ulteriori dettagli come richiesto: la piattaforma da sviluppare è Android. L'idea inizialmente era di archiviare tutti i dati usando sqlite e fornire la crittografia su di esso, ma penso che alla fine porterà ad un rallentamento all'aumentare delle dimensioni del file. Il file aumenterà di dimensioni con il tempo.

L'area principale di preoccupazione qui è il tempo di accesso. Inoltre voglio fornire la crittografia per questo singolo file. Qualsiasi suggerimento è benvenuto.

    
posta eminemence 05.12.2012 - 19:27
fonte

4 risposte

11

Nota: se hai dichiarato lo scopo del tuo contenitore di file in modo più chiaro, descrivendo i modelli di accesso, le piattaforme desiderate e il problema che stai risolvendo in generale, le risposte potrebbe essere migliore.

La tua descrizione sembra terribilmente simile a un file di risorse di gioco, un tipo di file famoso. Questi file non sono destinati ad essere aggiornati di frequente (se mai), ma sono ottimizzati per la ricerca e la lettura veloce.

Esistono diverse implementazioni note: ad esempio, iD Software utilizzava file WAD e file PAK , ma alla fine è venuto per utilizzare i file ZIP .

Molte applicazioni utilizzano vari derivati del formato IFF , costruiti da blocchi che si descrivono da sé e, con una certa cura, in modo efficiente aggiornabile.

In un file chunked o in un file zip (considerate compressione zero), è possibile crittografare ciascuna voce in modo indipendente, prima di scriverlo nel file. A condizione che si utilizzi un codice a blocchi come AES256, i dati non cambiano le dimensioni, ad eccezione dell'allineamento al limite del blocco. Sicuramente vuoi che la tua chiave di decifrazione sia archiviata altrove:)

Scrivere un file system per fornire la crittografia non è solo possibile, ma è stato effettivamente fatto molte volte. Ad esempio, Linux ha encfs e Windows ha cartelle crittografate. TrueCrypt è un sistema avanzato virtuale crittografato disponibile su molte piattaforme.

Si noti che mentre i file zip forniscono una sorta di crittografia nativa, questa crittografia è relativamente debole. Lo stesso vale per i file rar, per quanto ne so.

    
risposta data 05.12.2012 - 20:36
fonte
1

Google conferma che è una buona idea in alcuni casi: link

In questo esempio Google ottimizza riducendo il numero di richieste HTTP. L'utente scarica un file immagine contenente pochi sprite di navigazione e quindi il browser si divide e lo posiziona con CSS e JS.

    
risposta data 05.12.2012 - 22:33
fonte
0

but am not sure if its a good idea.

Sembra di essere! Non dici con quale sistema operativo stai lavorando. Nei sistemi operativi basati su Unix, una directory già è un tipo di file. Quindi, due cose da considerare:

  • Potresti riuscire a contrassegnare questo requisito 'fatto' e andare avanti.

  • Se decidi di andare avanti con il progetto, dovrai riflettere attentamente su come la tua implementazione può essere più veloce di quelle esistenti.

risposta data 05.12.2012 - 20:04
fonte
0

Hai preso in considerazione il formato jar? È specifico per Java, ma in seguito sarebbe facilmente portabile su più sistemi operativi. Il drawback è che i tuoi utenti dovrebbero avere java sulle loro macchine per fare qualsiasi cosa con i file dopo il download e probabilmente dovresti fare del lavoro per renderli automatici / trasparenti. Dovresti anche gestire la crittografia / decrittografia in qualche modo.

    
risposta data 05.12.2012 - 20:32
fonte

Leggi altre domande sui tag