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?
Respuesta
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.
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
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.
Aún así, debe identificarlos de manera única en la base de datos. – Cameron
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. –
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.
Ventajas:
- hay necesidad de preocuparse acerca de los permisos de escritura en el almacén de archivos.
- 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.
- 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
- No hay necesidad de preocuparse por los nombres de archivo únicos, carpetas y puede hacer subir más simple en algunos casos
- Más fácil proteger el acceso a los archivos de modo que sólo los usuarios autorizados pueden ver
Desventajas:
- Rendimiento de servir archivos con frecuencia suf es comparado con el almacén de archivos
- Puede conducir a bases de datos grandes. Se debe tener cuidado al seleccionar columnas binarias.
- Más trabajo para enlazar a archivos y servir el contenido - lo que necesita controladores especializados, etc.
- 1. ¿Cuáles son los pros y los contras de la UCI?
- 2. Objeto de solicitud, ¿cuáles son los pros y los contras?
- 3. ¿Cuáles son los pros y los contras de Solr & ElasticSearch?
- 4. ¿Cuáles son los pros y los contras de TreeSet
- 5. ¿Cuáles son los pros y los contras de usar Global.asax?
- 6. ¿Cuáles son los pros y los contras de las bases de datos de objetos?
- 7. ¿Cuáles son los pros y los contras de los submódulos de git y Repo?
- 8. ¿Cuáles son los pros y los contras de los procedimientos de llamada en VB.NET?
- 9. ¿Cuáles son los pros/contras de 64 bit .NET?
- 10. ¿Cuáles son los pros y los contras de usar una enumeración de banderas?
- 11. ¿Cuáles son los pros y los contras de usar una plantilla de motor como Jade?
- 12. ¿Cuáles son los pros y los contras de la eliminación y las actualizaciones en cascada?
- 13. ¿Cuáles son los pros y los contras de un sitio 100% HTTPS?
- 14. ¿Cuáles son los pros y los contras de usar una DLL?
- 15. ¿Cuáles son los pros y los contras de usar una Mac para el desarrollo web?
- 16. Archivos mapeados en memoria: pros y contras?
- 17. ¿Cuáles son los pros y los contras de usar Castle Active Record vs Straight NHibernate?
- 18. ¿Cuáles son los pros y los contras de fs.createReadStream vs fs.readFile en node.js?
- 19. ¿Cuáles son los pros y los contras de ejecutar un trabajo en Hadoop usando varios idiomas?
- 20. ¿Cuáles son los pros y los contras de asset_packager y Jammit?
- 21. ¿Cuáles son los pros y los contras de las diversas implementaciones de Python?
- 22. ¿Cuáles son los pros y los contras de la entrada delimitada general de Ruby? (sintaxis porcentual)
- 23. ¿Cuáles son los pros y los contras de usar un correo electrónico como nombre de usuario?
- 24. ¿Cuáles son los pros y los contras de las revisiones de diseño/código?
- 25. ¿Cuáles son los pros y los contras de usar componentes de diseñador de Visual Studio para los datos
- 26. ¿Cuáles son los pros y los contras de OleDB versus SQLClient?
- 27. ¿Cuáles son los pros y los contras de HTML5 Canvas vs. SVG + Raphael.js?
- 28. ¿Cuáles son los pros y los contras del uso de d-punteros?
- 29. Enum de la base de datos: pros y contras
- 30. ¿Cuáles son los pros y los contras al elegir jquery como mi biblioteca principal de JavaScript?
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) –
MongoDB tiene algunas características interesantes para almacenar archivos. – benlumley
@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