2011-10-01 7 views
7

Spero che qualcuno possa spiegare come utilizzare i BLOB. Vedo che i BLOB possono essere utilizzati per archiviare file video. La mia domanda è: perché una persona dovrebbe archiviare un file video in un BLOB in un database SQL? Quali sono i vantaggi e gli svantaggi rispetto alla memorizzazione dei puntatori nella posizione del file video?BLOB in SQL che memorizza un file video

risposta

6

Alcuni motivi diversi.

Se si memorizza un puntatore su un file su disco (presumibilmente usando il tipo di dati BFILE), è necessario assicurarsi che il database sia aggiornato ogni volta che i file vengono spostati, rinominati o eliminati su disco. È relativamente comune quando si memorizzano dati come questi che nel tempo il database non è più sincronizzato con il file system e si finisce con collegamenti interrotti e contenuti orfani.

Se si memorizza un puntatore su un file su disco, non è possibile utilizzare la semantica transazionale quando si ha a che fare con i file multimediali. Dal momento che non si può fare qualcosa come rilasciare un rollback contro un file system, si deve fare i conti con il fatto che si avranno situazioni in cui i dati sul file system non corrispondono ai dati nel database (es. qualcuno ha caricato un video sul file system ma la transazione che ha creato l'autore e il titolo nel database non è riuscita o viceversa) oppure devi aggiungere passaggi aggiuntivi al caricamento del file per simulare la semantica transazionale (ad esempio, caricare un secondo <> _done.txt file che contiene solo il numero di byte nel file effettivo che è stato caricato.Questo è ingombrante e soggetto a errori e può creare problemi di usabilità

Per molte applicazioni, avere il database che serve i dati è il modo più semplice per fornirlo un utente .Se si desidera evitare di fornire a un utente un URL FTP diretto per i propri file perché potrebbero utilizzarlo per aggirare alcune appli sicurezza a livello di cationità, l'opzione più semplice è quella di avere un'applicazione supportata da database in cui recuperare i dati, il database la legge dal file system e quindi la restituisce al livello intermedio che quindi invia i dati al client. Se devi leggere i dati nel database ogni volta che i dati vengono recuperati, spesso ha più senso archiviare i dati direttamente nel database e consentire al database di leggerlo dai suoi file di dati quando l'utente chiede per questo.

Infine, database come Oracle forniscono ulteriori utilità per lavorare con i dati multimediali nel database. Oracle interMedia, ad esempio, fornisce un ricco set di oggetti per interagire con i dati video memorizzati nel database: puoi facilmente taggare dove iniziano o terminano le scene, taggare dove vengono discussi vari argomenti, quando il video è stato registrato, chi lo ha registrato, ecc. E puoi integrare questa funzionalità di ricerca con le ricerche su tutti i tuoi dati relazionali. Ovviamente, potresti scrivere un'applicazione in cima al database che ha fatto tutte queste cose, ma poi stai scrivendo un sacco di codice o usando un altro framework nella tua app. Spesso è molto più semplice sfruttare la funzionalità del database.

Problemi correlati