2010-03-16 17 views
6

Estoy escribiendo una aplicación php y me preguntaba si no es una buena idea almacenar archivos completos en la base de datos. Los archivos deben estar en torno a 100-200kb en su mayoría archivos de texto (txt, doc, docx, etc.) o pequeños archivos de imagen. ¿O es simplemente una idea equivocada?¿Cuáles son los pros y los contras de almacenar archivos en una base de datos?

+2

Es posible que desee comprobar esto: Almacenamiento de Imágenes en DB - sí o no? (http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay) –

+0

MongoDB tiene algunas características interesantes para almacenar archivos. – benlumley

+0

@Daniel Vassallo: interesante, no creo que vaya a almacenar allí tantas imágenes y ciertamente no será para ninguna página web de alto tráfico. – Gabriel

Respuesta

2

Pro: altamente portátil.

Con: no se puede hacer nada con SQL (indexación, búsqueda, etc.) y tendrá que agregar metadatos en otras columnas (tipo de contenido, nombre de archivo, etc.) para mejorar (re) usabilidad y facilidad de mantenimiento .

No haría eso. El sistema de archivos de disco es un sistema mucho más adecuado para esas tareas.

+0

mi objetivo es la portabilidad, porque esos archivos no se editarán de ninguna manera, quizás se eliminarán, pero eso es todo. – Gabriel

1

Personalmente, me gusta la idea, especialmente si el DB los almacena comprimidos o los comprime manualmente.

Entre otras cosas, significa que no necesita preocuparse por nombres únicos para los archivos, lo que ahorra mucha complejidad.

+0

Aún así, debe identificarlos de manera única en la base de datos. – Cameron

+0

De hecho. No estaba pensando en el caso trivial de almacenar solo el archivo en una base de datos; Supuse algunos "metadatos" como un nombre de usuario, fecha, nombre de archivo o similar. –

2

Realmente depende de la situación?

  • ¿Cómo se distribuirán los archivos ?
  • ¿Los archivos utilizados son independientes o son parte de un sistema que podría tener su propia autorización y la lógica de autenticación ?
  • ¿Cuál es su estrategia de copia de seguridad ?
  • ¿Necesita replicación?
  • ¿Necesita soportar un lote de E/S ?
  • ¿Qué pasa con el almacenamiento en caché?

Habiendo dicho eso, me inclino hacia algún tipo de sistema de archivos para documentos sobre una base de datos.

3

Ventajas:

  1. hay necesidad de preocuparse acerca de los permisos de escritura en el almacén de archivos.
  2. No es necesario intentar y sincronizar archivos en el almacén de archivos con filas en la base de datos, evitando archivos huérfanos o enlaces rotos. Por ejemplo, puede eliminar en cascada automáticamente los archivos cuando se elimina el contenido relacionado.
  3. En ciertas bases de datos (tales como Oracle y SQL Server) Puede archivos de índice y búsqueda dentro de ellos el uso de SQL
  4. No hay necesidad de preocuparse por los nombres de archivo únicos, carpetas y puede hacer subir más simple en algunos casos
  5. Más fácil proteger el acceso a los archivos de modo que sólo los usuarios autorizados pueden ver

Desventajas:

  1. Rendimiento de servir archivos con frecuencia suf es comparado con el almacén de archivos
  2. Puede conducir a bases de datos grandes. Se debe tener cuidado al seleccionar columnas binarias.
  3. Más trabajo para enlazar a archivos y servir el contenido - lo que necesita controladores especializados, etc.
Cuestiones relacionadas