¿Cuándo se recomienda utilizar MySQL BLOB?

Estoy codificando una aplicación que cargará y eliminará muchos archivos, por lo general solo muevo los archivos a una carpeta en el servidor y los nombro con la id única de la fila. Pero como yo 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.

PD: estoy usando MyISAM si eso importa.

Gracias.


ACTUALIZAR:

Preguntas relacionadas
– Almacenar 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 esta una mejor idea que almacenarlos en carpetas.

Leer:

  • Almacenamiento binario MySQL usando BLOB VS OS File System: archivos grandes, grandes cantidades, grandes problemas
  • Para hacer o no hacer: almacenar imágenes en una base de datos

que concluye

Si en alguna ocasión necesita recuperar una imagen, debe estar disponible en varios servidores web diferentes. Pero creo que eso es más o menos.

  • 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 hay algún tipo de carga en el sistema, necesitará algún tipo de almacenamiento distribuido.

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

Otra ventaja de almacenar archivos en los campos BLOB es que se puede acceder a ellos de manera más eficiente que los archivos en el disco (no hay necesidad de recorrer 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 los blobs. Luego, cuando realmente necesite buscar un blob, JOIN es adecuadamente eficiente.

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

Si bien no es una ganancia de rendimiento per se, tener sus imágenes y otras cosas en un DB en lugar de en un directorio también debería eliminar los problemas con el hotlinking (suponiendo que se trata de una aplicación web públicamente disponible).

¿Estás obligado a usar MySQL? De lo contrario, pruebe con un ODBMS o PostgreSQL para almacenar archivos, o podría almacenar solo las rutas para los archivos. Ve esto por ejemplo.

Memcache no es una solución alternativa, ya que necesita administrar redundancia y TTL en servidores distribuidos que dificultan su mantenimiento.

La mejor solución en mi opinión es poner datos públicos estáticos en CDN que se distribuyen por diseño y datos privados estáticos en la base de datos para facilitar la distribución a través de 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 fácil es crear una clave, tabla de valores de los siguientes:

KEY = ‘/ image / filename’ (cadena de la ubicación del sistema de archivos), value = BLOB (el archivo real) y crea un contenedor que lo obtendrá de la base de datos con la ayuda de la regla de reescritura y el manejo de la aplicación. De esta forma puede usar transparencia total con su código existente.