2010-06-22 17 views
6

¿Cuál es la mejor manera de almacenar datos binarios (imágenes, pdf, mp3, ect de videos) en mysql y por qué? Lo que me gustaría saber es cómo lo haces (como desarrolladores) y por qué? ¿También cómo lo hacen los grandes sitios?¿Cuál es la mejor manera de almacenar datos binarios (imágenes, pdf, mp3, ect de videos) en mysql y por qué?

gracias de antemano ;-)

+1

¿Por qué está etiquetado para Oracle? –

+0

pensé que era una pregunta de rdbms en general – Imran

+2

¡Pero su pregunta dice "en mysql" no "en una base de datos"! En realidad, este es el tipo de cosas que diferentes DBMS tienden a hacer de manera diferente. –

Respuesta

4

Para almacenar datos binarios en MySQL Blob puede ser utilizado: MySQL Manuel: 10.4.3. The BLOB and TEXT Types

Aunque si no es realmente necesario no me almacenar datos binarios en una base de datos, porque las razones centrales para almacenar datos en MySQL, etc. (como Unirse, Índice, ...) apenas se pueden utilizar con estos tipos de datos. Blob también está degradando el rendimiento general de la base de datos.

Tal vez se construye una tabla separada para los archivos donde se almacenan varios aspectos y una ruta de sistema de archivos ...

+2

No sé, he visto terabytes de datos binarios almacenados en bases de datos Oracle y luego transmitidos desde allí. No es necesariamente una mala idea. – Artefacto

+0

No escribo que generalmente es una mala idea: hay ejemplos y casos de uso a favor y en contra de Blobs. Sin embargo, debería haber, en mi opinión, buenas razones y el ajuste correcto (por ejemplo, espacios de tabla separados, ...) cuando alguien quiera usar tales técnicas. – FloE

+0

A BLOB es el camino a seguir. Almacenar el camino tiene algunos problemas definidos. Si los archivos se mueven, sus punteros están corruptos. Copia de seguridad de la base de datos se vuelve relativamente inútil. Las operaciones disponibles en datos no son características decisivas para almacenarlo. –

3

En Oracle Me gustaría utilizar una columna BLOB para almacenar dichos objetos. De esta forma, la seguridad y la integridad de los datos se garantiza de la misma manera que todos los demás datos. La alternativa es usar un BFILE que sea un puntero a un archivo en el sistema de archivos externo, un archivo que puede haberse movido, eliminado, enmendado o incluso perdido la próxima vez que intente acceder a él.

+0

+1 Al tener que lidiar tanto con las tiendas BLOB como con los punteros del sistema de archivos cuando construyo sitios web, prefiero el almacenamiento BLOB con una caché de sistema de archivos antes de servir. –

1

Bueno, mantener las imágenes en el disco, tengo montones y montones de ellos y no hacer quiero imaginar la pesadilla de mantenimiento que podría ser. Mi base de datos (mysql) hasta ahora es más pequeña que 5GB, y estoy bien con ~ 50GB de archivos jpeg (cada imagen tiene varios tamaños guardados). Almacenar imágenes en una base de datos separada (con un controlador de banda separado, tal vez) podría ser una buena opción si se hace bien, pero creo que el sistema almacena más rápidamente en el disco.

1

Utilizaría la base de datos solo para almacenar metadatos de archivos (tamaño, tipo MIME, etiquetas, etc.). Por el bien de la integridad y seguridad de los datos, es mejor que descargue los datos binarios a un servicio especializado como Amazon's S3.

En cuanto a la integridad de los datos: Evitaría sobrecargar el servidor de bases de datos realizando transacciones que implican grandes blobs. En su lugar, sugiero que almacene primero los archivos y realice alguna "recolección de basura" asincrónica periódica.

Cuestiones relacionadas