2011-10-01 21 views
7

Espero que alguien pueda explicar cómo usar BLOB. Veo que los BLOB se pueden usar para almacenar archivos de video. Mi pregunta es: ¿por qué una persona almacena un archivo de video en un BLOB en una base de datos SQL? ¿Cuáles son las ventajas y desventajas en comparación con el almacenamiento de punteros a la ubicación del archivo de video?BLOB en SQL que almacena un archivo de video

Respuesta

6

Algunas razones diferentes.

Si almacena un puntero a un archivo en el disco (presumiblemente utilizando el tipo de datos BFILE), debe asegurarse de que su base de datos se actualice siempre que los archivos se muevan, renombren o eliminen en el disco. Es relativamente común cuando almacena datos como este que con el tiempo su base de datos no se sincroniza con el sistema de archivos y termina con enlaces rotos y contenido huérfano.

Si almacena un puntero a un archivo en el disco, no puede usar la semántica transaccional cuando se trata de multimedia. Como no puede hacer algo así como emitir una reversión contra un sistema de archivos, tiene que lidiar con el hecho de que va a haber situaciones en las que los datos en el sistema de archivos no coinciden con los datos en la base de datos (es decir, alguien subió un video al sistema de archivos pero la transacción que creó el autor y el título en la base de datos falló o viceversa) o tiene que agregar pasos adicionales para cargar el archivo para simular la semántica transaccional (es decir, cargar un segundo <> _done.txt archivo que solo contiene el número de bytes en el archivo real que se cargó. Eso es engorroso y propenso a errores y puede crear problemas de usabilidad.

Para muchas aplicaciones, tener la base de datos sirve datos es la forma más fácil de proporcionarlo un usuario. Si desea evitar dar a un usuario una URL FTP directa a sus archivos, ya que podrían usar eso para eludir algunas aplicaciones. seguridad a nivel de cationes, la opción más fácil es tener una aplicación respaldada por una base de datos donde recuperar los datos, la base de datos los lee del sistema de archivos y luego los regresa al nivel intermedio que luego envía los datos al cliente. Si va a tener que leer los datos en la base de datos cada vez que se recuperan los datos, a menudo tiene más sentido almacenar los datos directamente en la base de datos y dejar que la base de datos los lea de sus archivos de datos cuando el usuario lo solicite. para ello.

Finalmente, las bases de datos como Oracle proporcionan utilidades adicionales para trabajar con datos multimedia en la base de datos. Oracle interMedia, por ejemplo, proporciona un amplio conjunto de objetos para interactuar con datos de video almacenados en la base de datos; puede etiquetar fácilmente dónde comienzan o terminan las escenas, etiqueta donde se discuten los temas, cuándo se grabó el video, quién lo grabó, etc. . Y puede integrar esa funcionalidad de búsqueda con búsquedas en contra de todos sus datos relacionales. Por supuesto, podrías escribir una aplicación encima de la base de datos que también hiciera todo eso, pero luego escribirías una gran cantidad de código o usarías otro framework en tu aplicación. A menudo es mucho más fácil aprovechar la funcionalidad de la base de datos.

Cuestiones relacionadas