Qual è la migliore pratica per l'archiviazione di enormi quantità di testo (in un database o come file?), E per comprimerlo?

StackOverflow https://stackoverflow.com/questions/504544

Domanda

Sto creando un'app Web che gestisce e-mail interne e altri blocchi di testo di dimensioni medio-piccole frequenti tra utenti e client. Qual è il metodo migliore per archiviare questi dati? In un database (MySQL) o come migliaia di singoli file? Che ne dici di comprimerlo (gzcompress di PHP o le funzioni di compressione di MySQL)?

Questa non sarà un'applicazione pubblica, quindi il carico dell'utente sarà minimo (meno di 20 utenti alla volta). Tuttavia, ci saranno molte comunicazioni avanti e indietro ogni giorno all'interno dell'app, quindi mi aspetto che la quantità di dati cresca abbastanza grande col passare del tempo (motivo per cui mi piacerebbe comprimerlo).

Vorrei conservare i dati in un database per facilità di accesso e portabilità, ma alcuni dei thread che ho visto qui riguardo alle immagini hanno suggerito di utilizzare l'archiviazione dei file. Cosa ne pensi?

Grazie, Seth

Modifica per chiarimenti: non ho bisogno di alcun tipo di ricerca del testo, motivo per cui mi spingerei a comprimerlo per risparmiare spazio.

È stato utile?

Soluzione

Per immagini e documenti che sono già in un formato specifico (Excel, documenti word, file pdf, ecc.) preferisco l'archiviazione dei file. Ma per il solo testo non elaborato probabilmente preferirei utilizzare un database. È più facile replicare su macchine per il failover, è possibile eseguire ricerche di sottostringa sul testo e anche se non conosco un algoritmo specifico da utilizzare per comprimerlo, penso che un database sarebbe un modo migliore per andare. Ma solo se hai già solo il testo ed è solo testo. Qualsiasi altro formato di documento preferirei utilizzare l'archiviazione dei file.

E a meno che non mi manchi qualcosa, userei un CLOB anziché un BLOB, se fosse solo testo.

Altri suggerimenti

Uno dei motivi principali per mantenere i file in un database è quello di mantenerlo coerente con il resto dei dati che si stanno archiviando. Sarà più semplice eseguire backup, (ri) distribuire con set di dati predefiniti ecc. Inoltre è più facile garantire l'integrità delle transazioni.

Uno dei vantaggi dell'archiviazione del testo come file potrebbe essere che è più semplice servirli utilizzando un server web, se questo è l'unico vantaggio rimanente dell'uso dei file, è possibile cercare di memorizzare nella cache i file sul server Web, che fornirà gran parte del semplice backup e delle transazioni del database ma allo stesso tempo consente un po 'di accelerazione per le richieste http.

Avrei scelto di usare un DB. Descrivi uno scenario in cui hai intenzione di memorizzare una grande quantità di messaggi. Non fornisci molte informazioni sul sistema, ma immagino che probabilmente vorresti ordinare, raggruppare e applicare diverse altre proprietà ai messaggi. Sarebbe molto più facile e probabilmente più veloce conservare il messaggio con i suoi attributi in un DB invece di usare l'archiviazione dei file.

Quando si tratta di compressione, non so quale dei metodi sia più efficace. Probabilmente dovresti provare entrambi prima di scegliere.

Mi chiedo quanto sia grande " medium chunk " ;. Se il testo è solo messaggi scritti (quindi meno di 10 KB), la compressione li rende ancora più piccoli e non avrebbe un grande impatto sulla crescita del database. Rende inoltre molto più semplice lo sviluppo e la manutenzione di avere tutto a disposizione con query singl e non dover ottenere il contenuto del file separatamente.

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