2012-07-11 14 views
7

Quindi ho questo requisito che dice che l'app deve consentire agli utenti di caricare e scaricare circa 6000 file al mese (principalmente pdf, doc, xls).Database blob vs File memorizzati su disco

Stavo pensando alla soluzione ottimale per questo. La domanda è se userò BLOb nel mio database o una semplice gerarchia di file per scrivere/leggere questi file.

L'architettura dell'app è basata su Java 1.6, Spring 3.1 e DOJO, Informix 10.X.

Quindi sono qui solo per essere consigliato in base alla vostra esperienza.

+0

Che database hai intenzione di utilizzare? –

+0

Buon punto, è Informix 10.X –

+1

Suppongo che l'unico database point pro sia l'accesso alla concorrenza ... Ma, comunque, i database utilizzano anche i file (alcuni di essi usano principalmente la RAM, ma una volta compilati, memorizzano nella cache i file). Utilizzare direttamente i file salverebbe le risorse del database (connessioni, query, ecc.) – PEM

risposta

6

Se si dispone di altri dati nel database in relazione a questi file, la memorizzazione di file di file system lo rende più complesso:

  1. Back-up dovrebbe essere fatto separatamente.
  2. Le transazioni devono essere implementate separatamente (per quanto possibile anche per le operazioni del file system).
  3. I controlli di integrità tra il database e la struttura del file system non sono immediatamente disponibili.
  4. Nessuna cascata: rimuove le immagini degli utenti come conseguenza della rimozione dell'utente.
  5. Prima di tutto occorre interrogare il percorso del file dal database e selezionarne uno dal file system.

Ciò che è buono con la soluzione basata su file system è che a volte è utile poter accedere direttamente ai file, ad esempio copiando parte delle immagini da qualche altra parte. Anche la memorizzazione di dati binari naturalmente può modificare drasticamente le dimensioni del database. Ma in ogni caso, è necessario più spazio di archiviazione su disco con entrambe le soluzioni.

Naturalmente tutto ciò può richiedere più risorse DB di quelle attualmente disponibili. In generale, può verificarsi un notevole calo delle prestazioni, specialmente se la decisione è tra il file system locale e il DB remoto. Nel tuo caso (6000 file mensili) le prestazioni non saranno un problema, ma la latenza può essere.

9

Quando si chiede qual è la soluzione "migliore", è una buona idea includere i tuoi criteri di valutazione - velocità, costo, la semplicità, la manutenzione ecc

La risposta Mikko Maunu dato è praticamente sui soldi. Non uso Informix da 20 anni, ma la maggior parte dei database è un po 'lenta quando si ha a che fare con i BLOB - specialmente il passo per ottenere il BLOB dentro e fuori dal database può essere lento.

Questo problema tende a peggiorare man mano che un numero maggiore di utenti accede al sistema contemporaneamente, soprattutto se utilizza un'applicazione Web - il server delle applicazioni deve lavorare abbastanza per ottenere i file dentro e fuori dal database, probabilmente consuma molta più memoria per quelle richieste rispetto al normale, e probabilmente richiede più tempo per completare le richieste relative ai file rispetto alle pagine "normali".

Ciò può comportare un rallentamento del server web con carico solo moderato. Se scegli di archiviare i documenti nel tuo database, ti consiglio vivamente di eseguire alcuni test delle prestazioni per vedere se hai un problema: questo tipo di soluzione tende ad esporre difetti nella tua configurazione che altrimenti non verrebbero alla luce (rete lenta connessione al server del database, RAM insufficiente nei server Web, ecc.)

Per evitare questo, ho memorizzato le copie "master" dei documenti nel database, in modo che vengano tutti copiati insieme, e io può chiedere al database domande come "ho tutti i documenti per l'utente x?".Tuttavia, ho usato una cache sul server web per evitare di leggere i documenti dal database più del necessario. Funziona bene se hai una soluzione di tempo "scrivi una volta, leggi molti" come un sistema di gestione dei contenuti, in cui la cache può guadagnare il suo vantaggio.

Problemi correlati