Tengo una aplicación web que almacena una gran cantidad de archivos generados por el usuario. Actualmente, todos están almacenados en el sistema de archivos del servidor, lo que tiene varias desventajas para mí.Almacenamiento de archivos para aplicaciones web: Sistema de archivos vs DB vs motores NoSQL
- cuando nos movemos "carpetas" (como se define por nuestra aplicación) también tenemos que mover los archivos en el disco (aunque esto es más debido a las decisiones de diseño extraños por parte de los desarrolladores originales que un requisito de almacenar cosas en el sistema de archivos).
- Es difícil escribir pruebas para las acciones del sistema de archivos; Tengo una clase de sistema de archivos falso que registra acciones como mover, eliminar, etc., sin realizarlas, lo que hace más o menos el trabajo, pero no tengo 100% de confianza en las pruebas.
- Agregaré algunos otros trabajos que necesitan acceder a los archivos de otro servicio para realizar tareas adicionales (por ejemplo, indexación en Solr, generación de miniaturas, conversión de formato de película), así que necesito acceder a los archivos de forma remota. Hacer esto a través de recursos compartidos de red parece dudoso ...
- El manejo de permisos en el sistema de archivos nos da problemas en el pasado, aunque ahora que nos hemos movido a un entorno Linux puro esto debería ser un problema menor.
Por lo tanto, mis principales preguntas son
- ¿Cuáles son las desventajas de almacenar archivos como BLOB en MySQL?
- ¿Existen los mismos problemas con los sistemas NoSQL como Cassandra?
- ¿Alguien tiene alguna otra sugerencia que pueda ser apropiada, p. MogileFS, etc.
Gracias, parece un conjunto de enlaces muy útil. El almacenamiento de imágenes/blobs de cualquier tipo es lo que busco (estamos almacenando todo tipo de cosas). –
Gracias, sus enlaces sugeridos son geniales. Claramente necesito buscar más duro antes de hacer preguntas :) En conclusión, evitar el DB parece ser el camino a seguir. Solo necesito desacoplar la aplicación del sistema de archivos para que sea menos doloroso ... –
Me alegra que los haya encontrado útiles. Y comparto esta conclusión. –