Sé que hay tres tipos diferentes y populares de bases de datos que no son SQL.
- Clave / valor: Redis, Tokyo Cabinet, Memcached
- Familia de columnas: Cassandra, HBase
- Documento: MongoDB, CouchDB
He leído blogs extensos al respecto sin entender mucho.
Conozco las bases de datos relacionales y me acostumbro a las bases de datos basadas en documentos como MongoDB / CouchDB.
¿Alguien podría decirme cuáles son las principales diferencias entre estos y los 2 primeros de la lista?
Respuestas:
Las principales diferencias son el modelo de datos y las capacidades de consulta.
Tiendas de valores clave
El primer tipo es muy simple y probablemente no necesite más explicaciones.
Modelo de datos: más que almacenes de valores-clave
Aunque existe cierto debate sobre el nombre correcto de las bases de datos como Cassandra, me gustaría llamarlas tiendas de familia de columnas . Aunque los pares clave-valor son una parte esencial de Cassandra, no se limitan solo a eso. Le permite anidar pares clave-valor, por lo que una clave podría hacer referencia a múltiples pares de sub-clave-valor.
Sin embargo, no puede anidar pares clave-valor de forma indefinida. Está limitado a tres niveles (familias de columnas) o cuatro niveles de anidación (familias de supercolumnas). En caso de que el término familia de columnas no le suene, vea que WTF es un artículo de SuperColumn , es una buena explicación del modelo de datos de Cassandra.
Las 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, su aplicación deberá crear y mantener índices para acceder a los datos deseados.
Las bases de datos de documentos también admiten consultas por funciones clave y reducción de mapas, pero también le permiten realizar consultas básicas por valor, como "Darme todos los usuarios con más de 10 publicaciones". Las bases de datos de documentos son más flexibles de esta manera.
fuente
Ayende ha dado una buena explicación sobre la diferencia entre el valor clave y la base de datos de documentos:
fuente