sql >> Base de Datos >  >> RDS >> Mysql

¿Cuándo almacenar imágenes en una base de datos (mySQL) y cuándo no? (Vincular la imagen al elemento en la base de datos)

Ventajas de almacenar imágenes/blobs en la base de datos

  • Almacenar las imágenes es automáticamente parte de sus transacciones
  • No es necesario limpiar el sistema de archivos y sincronizarlo con la base de datos
  • El acceso a las imágenes se controla por los mismos medios que el acceso al resto de datos
  • Solo una única copia de seguridad de la que preocuparse
  • Una base de datos suele ser más adecuada para almacenar millones (si no miles de millones) de registros. En el sistema de archivos, debe encontrar una distribución inteligente en varios directorios. Un solo directorio no podrá manejar millones de archivos de manera eficiente.
  • Para algunas cargas de trabajo, almacenar las imágenes en la base de datos podría ser más rápido.
    Para SQL Server, Microsoft ha probado esto:
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    No me sorprendería que otras bases de datos se comportaran de manera similar.

Desventajas:

  • Hace que su base de datos y, por lo tanto, sus copias de seguridad sean mucho más grandes (piense en el tiempo que lleva restaurarla).
  • los sistemas de archivos suelen ser mejores con copias de seguridad incrementales (a menos que tenga RMAN de Oracle)
  • Otras aplicaciones no pueden acceder a las imágenes (por ejemplo, un servidor web, herramientas de cambio de tamaño de imagen, servidor FTP)
  • Las imágenes no se pueden distribuir a través de una red de distribución de contenido para equilibrar la carga en una aplicación web (para quitar carga del servidor de aplicaciones)
  • la creencia común es que la recuperación de la base de datos será más lenta.
  • para algunas bases de datos, recuperar los blobs podría disminuir la eficiencia de la memoria caché de la base de datos (no así para Oracle, SQL Server y PostgreSQL. Aunque no sé para MySQL)