sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Diferencia entre bases de datos basadas en documentos y basadas en claves/valores?

Las principales diferencias son el modelo de datos y las capacidades de consulta.

Almacenes de clave-valor

El primer tipo es muy simple y probablemente no necesite más explicación.

Modelo de datos:más que almacenes de clave-valor

Aunque existe cierto debate sobre el nombre correcto para bases de datos como Cassandra, me gustaría llamarlas almacenes de familias de columnas. . Aunque los pares clave-valor son una parte esencial de Cassandra, no se limitan a eso. Le permite anidar pares clave-valor, por lo que una clave podría referirse a varios pares de subclave-valor.

Sin embargo, no puede anidar pares clave-valor indefinidamente. Está limitado a tres niveles (familias de columnas) o cuatro niveles de anidamiento (familias de supercolumnas). En caso de que el término familia de columnas no te suene, consulta el artículo WTF is a SuperColumn, es una buena explicación del modelo de datos de Cassandra.

Bases de datos de documentos , como CouchDB y MongoDB, almacenan documentos completos en forma de objetos JSON. Puede pensar en estos objetos como pares clave-valor anidados. A diferencia de Cassandra, puede anidar pares clave-valor tanto como desee. JSON también admite matrices y comprende diferentes tipos de datos, como cadenas, números y valores booleanos.

Consultando

Creo que las tiendas de familias de columnas solo se pueden consultar por clave o escribiendo funciones de reducción de mapas. No puede consultar los valores como lo haría en una base de datos SQL. Si su aplicación necesita consultas más complejas, tendrá que crear y mantener índices para acceder a los datos deseados.

Las bases de datos de documentos también admiten consultas por clave y funciones de reducción de mapa, pero también le permiten realizar consultas básicas por valor, como "Dame todos los usuarios con más de 10 publicaciones". Las bases de datos de documentos son más flexibles de esta manera.