ventana una pestaña paso pasar pagina otra nueva net llamar ejemplos desde datos crear como aspx asp aplicaciones abrir asp.net database filesystems image

asp.net - pestaña - ¿Almacenar imágenes como archivos o en la base de datos para una aplicación web?



pasar datos en asp net (10)

  1. Aquí hay un ejemplo paso a paso (enfoque general, implementación de Spring, Eclipse ) de almacenar imágenes en el sistema de archivos y mantener sus metadatos en DB - http://www.devmanuals.com/tutorials/java/spring/spring3/mvc/Spring3MVCImageUpload.html
  2. Aquí también hay un ejemplo: http://www.journaldev.com/2573/spring-mvc-file-upload-example-tutorial-single-and-multiple-files
  3. También puede investigar una base de código de este proyecto: https://github.com/jdmr/fileUpload . Presta atención a this controlador.

Mi pregunta es bastante genérica y sé que podría no haber una respuesta al 100%. Estoy construyendo una solución web ASP .NET que incluirá muchas imágenes y, con suerte, una buena cantidad de tráfico. Realmente quiero lograr el rendimiento.

¿Debo guardar las imágenes en la base de datos o en el sistema de archivos? E independientemente de la respuesta, estoy más interesado en por qué elegir una manera específica.

Muchas gracias, Stefan

DUPLICAR : Almacenar imágenes en DB - ¿Sí o No? , Cómo almacenar imágenes en su sistema de archivos , Almacenar una pequeña cantidad de imágenes: blob o fs? y probablemente algunos otros.

COMENTARIO: Gracias por muchas buenas respuestas. Buscaré una solución basada en archivos incluso si me gusta la idea de tener una solución 100% basada en bases de datos. Parece que hoy hay buenas soluciones para hacer lo que quiero con bases de datos, etc. pero tengo algunas razones para no hacerlo.

  • Estaré en una solución alojada, tengo una gran cantidad de almacenamiento (10 gb) pero solo 300 mb para la base de datos. Costará mucho para el almacenamiento adicional en la base de datos.

  • No soy un experto en DB y tampoco tengo control de la configuración de la base de datos. Una solución basada en DB puede necesitar una configuración personalizada como se ve.

Si nos movemos para ejecutar el sitio en nuestro propio servidor, podría considerar una solución basada en DB. gracias, Stefan


¿Por qué no elegir una base de datos NoSql individual para almacenar sus archivos?

Le brinda integridad de datos, coherencia de datos como se menciona en @chburd.

Mientras que rdbms aún se mantienen pequeños.


El adagio siempre ha sido "Archivos en el sistema de archivos, metadatos de archivos en la base de datos"


El almacenamiento de imágenes en la base de datos agrega una sobrecarga de DB para servir imágenes individuales y hace que sea difícil descargarlo en un almacenamiento alternativo (S3, Akami) si llega a ese nivel. Almacenarlos en la base de datos hace que sea mucho más fácil mover su aplicación a un servidor diferente, ya que es solo el DB el que necesita moverse ahora.

Almacenar imágenes en el disco hace que sea fácil de descargar a un almacenamiento alternativo, hace que las imágenes estén estáticas para que no tenga que meterse con encabezados HTTP en su aplicación web para hacer que las imágenes sean almacenables. La desventaja es que si alguna vez mueve su aplicación a un servidor diferente, debe recordar mover las imágenes también; algo que se olvida fácilmente.


En mis proyectos recientemente desarrollados, almacené imágenes (y todo tipo de documentos binarios) como columnas de imagen en tablas de bases de datos.

La ventaja de tener archivos almacenados en la base de datos es obviamente que no termina con archivos sin referencia en el disco duro si se elimina un registro, ya que la sincronización entre la base de datos (= metadatos) y el disco duro (= almacenamiento de archivos) no está incorporada y tiene que ser programado manualmente.

Utilizando la tecnología actual, sugiero que almacene imágenes en las columnas FILESTREAM de SQL Server 2008 (al menos eso es lo que voy a hacer con mi próximo proyecto), ya que combinan la ventaja de almacenar datos en la base de datos Y tener archivos binarios grandes en archivos separados (en menos según la publicidad;))


Mejor almacenar archivos como archivos. Diferentes databs manejan los datos de Blob de forma diferente, por lo que si tiene que migrar su back-end, puede tener problemas.

Al servir los impagos, es probable que <img src = a un archivo que ya existe en el servidor sea más rápido que crear un archivo temporal desde el campo de la base de datos y señalar la etiqueta <img a ese.

Encontré esta respuesta al buscar en Google su pregunta y leer los comentarios en http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html


Para aplicaciones basadas en web, obtendrá un mejor rendimiento al usar el sistema de archivos para almacenar sus imágenes. Hacerlo le permitirá implementar fácilmente el almacenamiento en caché de las imágenes en múltiples niveles dentro de su aplicación. El almacenamiento de imágenes en una base de datos presenta algunas ventajas, pero la mayoría de las veces estas ventajas vienen con aplicaciones basadas en el cliente.


Solo para agregar algo más a las ya buenas respuestas hasta ahora. Aún puede obtener los beneficios del almacenamiento en caché tanto desde el nivel de la web como desde el nivel de la base de datos si realiza la ruta para mantener las imágenes en la base de datos.

Creo que para la base de datos puede lograr esto por cómo almacena las imágenes en relación con los datos textuales asociados a ellas y si puede acceder a las imágenes en una consulta particular para que la base de datos pueda almacenar en caché la consulta (solo teoría, entonces siéntete libre de atacarme en esa parte).

Con el lado web, supongo que como tu pregunta está etiquetada con asp.net, irás por la ruta de usar un controlador http para mostrar las imágenes. Entonces usted tiene todos los beneficios del framework a su disposición y puede mantener su lógica de dominio más limpia con solo tener que pasar la clave de su imagen al manejador de http.


generalmente me gusta tener archivos binarios en la base de datos porque:

  • integridad de datos: ningún archivo sin referencia, sin ruta en la base de datos sin ningún archivo asociado
  • coherencia de datos: tomar un volcado de base de datos y eso es todo. no "O me olvidé de targz este directorio de datos".

Almacene las imágenes en el sistema de archivos y las ubicaciones de las imágenes en la base de datos.

¿Por qué? Porque...

  1. Podrá servir las imágenes como archivos estáticos.
  2. No se requerirá acceso a la base de datos o código de aplicación para recuperar las imágenes.
  3. Las imágenes pueden ser servidas desde un servidor diferente para mejorar el rendimiento.
  4. Reducirá el cuello de botella de la base de datos.
  5. La base de datos en última instancia almacena sus datos en el sistema de archivos.
  6. Las imágenes se pueden almacenar fácilmente en caché cuando se almacenan en el sistema de archivos.