2011-06-11 28 views
10

esta pregunta me está confundiendo, así que pensé que debería escuchar una voz experta.php: Almacenar imagen en blob Mysql, ¿Bueno o malo?

¿es mejor cargar imágenes a una carpeta y simplemente guardar el enlace a mysql, o subir mejor img a sí mismo en un campo blob mysql?

muchas gracias

+0

Creo que subir imágenes a una carpeta y simplemente guardar el enlace a mysql es una buena opción. – NewUser

Respuesta

20

menudo he construido sistemas para almacenar las imágenes en la base de datos, hay pros y los contras de hacer esto.

Pros:

  • Todos sus datos se mantienen en un solo lugar, si migra su sitio web/base de datos de las imágenes será sólo hay
  • Es más fácil para ordenar/borrar/etc ...
  • Ya que tiene que servirlo a través de un script PHP, puede realizar tareas adicionales como seguridad si es necesario o procesamiento de imágenes (obviamente, también puede hacerlo con un archivo plano, pero debe asegurarse de que la seguridad no pueda pasarse por alto). las imágenes en un directorio público).

Contras:

  • Su más lentos sirviendo entonces un archivo plano desde el servidor web como un script PHP necesita para recuperarlo, y MySQL tiene que devolver los datos.
  • Su base de datos se ampliará muy rápido y no todos los servidores web toman demasiado en serio esto.
  • El sistema de archivos es más rápido para el almacenamiento y la recuperación de archivos planos, ya que es exactamente para lo que está diseñado un sistema de archivos.
2

Malo. Su servidor web hace un trabajo mucho mejor administrando encabezados de expiración y cargando directamente los archivos del sistema de archivos. El rendimiento será mucho mayor utilizando el sistema de archivos. Es para lo que está diseñado, utilícelo.

Las bases de datos SQL están diseñadas para datos relacionales, no imágenes. Simplemente está cargando su base de datos innecesariamente. Almacene el nombre de ruta/imagen en su lugar.

+0

tyvm, y eso haré :). – Zalaboza

+0

Lo que dices es correcto, amigo mío, pero ¿cómo planeas proteger los archivos de imagen en el sistema de archivos? –

+0

¿Asegurarlos? Supongo que su servidor no se verá comprometido, o que tiene problemas mucho más difíciles que sus imágenes. Los permisos de directorio pueden dar acceso a su aplicación al directorio pero no a otros usuarios en un host compartido. – Xorlev

0

Si su aplicación es grande, es decir, tiene que mostrar una gran cantidad/tamaño de imágenes repetidas veces, debe elegir el primer método (almacenar solo la ruta de la imagen en la base de datos e imágenes reales en el sistema de archivos). Esto reducirá el tiempo de procesamiento para mostrar imágenes y además consume menos recursos. En segundo lugar, si su aplicación requiere menos cantidad de imágenes, puede almacenarlas directamente en la base de datos. De esta forma, es más fácil llevar a cabo copias de seguridad y aplicaciones de puertos en otro sistema operativo.

Cuestiones relacionadas