database - para - tutorial django
Uso de un sistema de archivos(¡No es una base de datos!) Para datos sin esquemas-Mejores prácticas (4)
Hay un gran ejemplo de una implementación en el S3 de Amazon.
Este tipo de implementación es hacia donde muchas empresas se están moviendo, porque se escala fundamentalmente mejor que una base de datos relacional. El enfoque es simple, y funciona, y para algunos problemas, es una gran solución. En el caso del S3 de Amazon, es particularmente bueno para el almacenamiento en la nube, si no quiere tener que preocuparse por las molestias de almacenar los datos usted mismo.
Después de leer mi otra pregunta, Uso de una base de datos relacional para datos sin esquema , comencé a preguntarme si un sistema de archivos es más apropiado que una base de datos relacional para almacenar y consultar datos sin esquemas.
En lugar de simplemente construir un sistema de archivos sobre MySQL, ¿por qué no guardar los datos directamente en el sistema de archivos? La indexación debe ser resuelta, pero los sistemas de archivos modernos son muy estables, tienen excelentes funciones como replicación, instantáneas y facilidades de copia de seguridad, y son flexibles para almacenar datos sin esquemas.
Sin embargo, no puedo encontrar ningún ejemplo de alguien que use un sistema de archivos en lugar de una base de datos.
¿Dónde puedo encontrar más recursos sobre cómo implementar una base de datos sin esquemas (o "orientada a documentos") como una capa sobre un sistema de archivos? ¿Alguien está utilizando un sistema de archivos moderno como una base de datos sin esquemas?
Le invitamos a echar un vistazo a nuestro Solid File System , que es un producto de sistema de archivos virtual con soporte incorporado para metadatos de archivos y un mecanismo de búsqueda similar a SQL que realiza búsquedas a través de estos datos. También lea el article que describe los beneficios de almacenar diferentes tipos de datos en diferentes tipos de almacenamiento.
Sí, un sistema de archivos podría tomarse como un caso especial de un sistema de base de datos similar a NOSQL. Puede tener algunas limitaciones que deben considerarse durante cualquier decisión de diseño:
Pros: - - Simple, intuitivo.
- Aprovecha los años de tuning y algoritmos de caché.
- Copia de seguridad fácil, agrupamiento potencialmente fácil
cosas para pensar:
riqueza de metadatos: qué tipo de datos almacena, cómo le permite consultarlos, puede tener atributos jerárquicos o multivalor
velocidad de consulta de los metadatos: no todos los fs están particularmente bien optimizados con algo más que tamaño, fechas.
incapacidad para unir consultas (aunque eso es bastante común en NoSQL)
uso ineficiente del almacenamiento (a menos que el sistema de archivos realice una subasignación de bloques, normalmente soplará 4-16K por elemento almacenado sin importar el tamaño)
- Puede que no tenga el tipo de algoritmo de almacenamiento en caché que desea para su estructura de directorios
- Tiende a ser menos sintonizable, etc.
- Las soluciones de respaldo pueden tener problemas dependiendo de cómo almacene las cosas (demasiado profundas, demasiados elementos por nodo, etc.), lo que podría obviar una ventaja obvia de dicha estructura. el bloqueo para un sistema de archivos LOCAL funciona bastante bien, por supuesto, si llama a las rutinas correctas, pero no necesariamente para un archivo de base de red (esos problemas se han resuelto de varias maneras, pero ciertamente es un problema de diseño)
Una cosa que puede querer tener en cuenta es el tipo de datos BFILE de Oracle, que es un puntero a un archivo en el disco. Tal vez eso sea lo mejor de ambos mundos? El servidor Microsoft SQL no parece ofrecer esta capacidad.