mediumblob longblob example ejemplo mysql filesystems blob

longblob - ¿Cuándo se recomienda usar MySQL BLOB?



mysql text vs varchar (5)

Estoy codificando una aplicación que cargará y eliminará muchos archivos, por lo general simplemente muevo los archivos a una carpeta en el servidor y los nombro con el id exclusivo de la fila. Pero, según entiendo, MySQL también me permite almacenar datos binarios (archivos), ¿cuándo sería esta una mejor opción?

Utilice argumentos sólidos, como ¿Cuándo usar BLOB significará una mejora en el rendimiento?

PS: Estoy usando MyISAM si eso importa.

Gracias.

ACTUALIZAR:

Preguntas relacionadas :
- Almacenamiento de imágenes en DB - Sí o no?
- Hacer o no hacer: almacenar imágenes en una base de datos (gracias a Sebastian)

ACTUALIZACIÓN 2

Almacenar los archivos en la base de datos no es una necesidad . Estoy tratando de saber cuándo es mejor idea que almacenarlos en carpetas.


¿Estás obligado a usar MySQL? De lo contrario, intente con un ODBMS o PostgreSQL para almacenar archivos, o puede almacenar solo las rutas de acceso de los archivos. Vea this por ejemplo.


Bueno, es un poco viejo, pero este artículo presenta algunos argumentos decentes para el almacenamiento BLOB: http://www.dreamwerx.net/site/article01 .

Si bien no es una ganancia de rendimiento en sí misma, tener sus imágenes y otras cosas en una base de datos en lugar de en un directorio también debería eliminar los problemas de hotlinking (suponiendo que esta es una aplicación web que está disponible públicamente).


Leer:

que concluye

Si en alguna ocasión necesita recuperar una imagen y tiene que estar disponible en varios servidores web diferentes. Pero creo que eso es todo.

  • Si no tiene que estar disponible en varios servidores, siempre es mejor colocarlos en el sistema de archivos.
  • Si tiene que estar disponible en varios servidores y en realidad hay algún tipo de carga en el sistema, necesitará algún tipo de almacenamiento distribuido.

Memcache no es una solución alternativa, ya que necesita administrar la redundancia y el TTL en servidores distribuidos, lo que dificulta el mantenimiento.

En mi opinión, la mejor solución es poner datos estáticos públicos en CDN que se distribuyen por diseño y datos estáticos privados en la base de datos para facilitar la distribución en múltiples servidores.

Cada servidor puede implementar su propio Memcache en cada golpe.

Si ya almacenó datos en el sistema de archivos y desea migrarlos a la base de datos, la forma más sencilla es crear una clave, tabla de valores de lo siguiente:

KEY = ''/ image / filename'' (cadena de la ubicación del sistema de archivos), value = BLOB (el archivo real) y cree un contenedor que obtendrá esto de la base de datos con la ayuda de la regla de reescritura y el manejo de la aplicación. De esta manera puedes utilizar la transparencia total con tu código existente.


Si está utilizando el motor MyISAM db, los campos BLOB se pueden indexar para que pueda realizar búsquedas rápidas en sus archivos utilizando la base de datos.

Además, otra ventaja de almacenar archivos en los campos BLOB es que se puede acceder a ellos de manera más eficiente que a los archivos en el disco (no hay necesidad de atravesar el directorio, abrir, leer, cerrar).

Si planea almacenar muchos archivos en MYSQL, generalmente es una buena práctica tener los archivos almacenados en una tabla separada. Esto le permite escanear la información meta sin tropezar con las manchas. Entonces, cuando realmente necesitas buscar un blob, el JOIN es adecuadamente eficiente.