2010-12-28 14 views
6

Duplicar posibles:
Storing Images in DB - Yea or Nay?Almacenamiento de imágenes en la base de datos o en el sistema de archivos

¿Es más rápido y más fiable para almacenar las imágenes en el sistema de archivos o debería almacenarlos en una base de datos ?

Digamos que las imágenes no serán más grandes que 200 MB. El objetivo es un acceso rápido y confiable.

En general, ¿cómo deciden las personas entre almacenar archivos (por ejemplo, imágenes, archivos PDF) en el sistema de archivos o en la base de datos?

+1

Me encanta, un programador con el apodo de "Crashalot". :-) –

Respuesta

13

Opinión personal: SIEMPRE almaceno imágenes en el sistema de archivos, y solo almaceno un filepath en la base de datos. En muchas situaciones, las bases de datos se almacenan en almacenamiento rápido (leer: almacenamiento costoso, 15k RPM o unidades SSD). Las imágenes u otros archivos, por lo general, se pueden almacenar en un almacenamiento más lento (leer: unidades más baratas, unidades más grandes, 7.2k RPM).

Me parece que es el mejor, ya que permite que la base de datos permanezca pequeña. En general, las bases de datos almacenan bien los "datos". Pueden buscar y recuperar pequeños trozos de datos rápidamente. File Systems almacena bien los "archivos", están optimizados para encontrar y recuperar rápidamente grandes cantidades de datos.

Obviamente, hay una compensación para ambos enfoques, y no va a haber una talla única para todos; sin embargo, puede haber algunos casos de uso donde almacenar imágenes en la base de datos es algo bueno, si son bastante pequeñas, y no anticipa muchas de ellas, y su base de datos está en el mismo medio de almacenamiento que su archivo compartido , entonces probablemente tenga sentido soltar las imágenes directamente en la base de datos.

Como nota al margen, SQL Server 2008R2 tiene un tipo de campo FileStream, que puede proporcionar lo mejor de ambos mundos, no lo he usado todavía, por lo que no puedo hablar de qué tan bien funciona.

+0

Bien escrito, y señalando que algunas bases de datos tienen disposiciones para acceder a datos primarios fuera de la base de datos. –

1

Con el enfoque de la base de datos, solo tiene una cosa para conectarse. Si sus usuarios se distribuyen, eso podría ser más simple. Tenga en cuenta que si no se accede a las imágenes con demasiada frecuencia, los problemas de eficiencia pueden no ser importantes.

4

Almacenar archivos/imágenes en la base de datos si se requieren siguientes:

  • control de acceso
  • de versiones
  • Entrada/Salida
  • la búsqueda basada en metadatos

que tiene sido el diseño de CMS mayor como SharePoint ha sido.

Sin embargo, si su contenido es mucho más estático y no va a cambiar con el tiempo, puede ir con el sistema de archivos y habilitar las optimizaciones/caché en el servidor web.

0

Antes que nada debe saber que en bases de datos, no puede almacenar archivos mayores de 8 mb, leavinig eso, entonces creo que es mejor almacenar archivos en el sistema, y ​​pequeñas imágenes en la base de datos

+2

Esto depende de la base de datos. SQL Server puede almacenar hasta 2GB (o quizás "solo" 1GB?). –

+0

No sé, creo que es menos –

Cuestiones relacionadas