varios tipos que insertar documentos datos consultas complejas caracteristicas actualizar mongodb couchdb cassandra redis non-relational-database

mongodb - tipos - ¿Diferencia entre bases de datos basadas en documentos y clave/valor?



que es mongodb (2)

Sé que hay tres tipos diferentes y populares de bases de datos que no son SQL.

  • Clave / Valor: Redis, gabinete de Tokio, Memcached
  • ColumnFamily: Cassandra, HBase
  • Documento: MongoDB, CouchDB

He leído largos blogs al respecto sin entender tanto.

Conozco las bases de datos relacionales y disfruto de las bases de datos basadas en documentos como MongoDB / CouchDB.

¿Podría alguien decirme cuáles son las principales diferencias entre estos y los 2 primeros en la lista?


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

Tiendas de valor clave

El primer tipo es muy simple y probablemente no necesite más explicaciones.

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

Aunque existe cierto debate sobre el nombre correcto de las bases de datos, como Cassandra, me gustaría llamarlas tiendas familiares de columnas . Aunque los pares clave-valor son una parte esencial de Cassandra, no se limita a eso. Le permite anidar pares clave-valor, por lo que una clave podría referirse a múltiples pares de clave y valor secundario.

Sin embargo, no puedes anidar pares clave-valor indefinidamente. Está limitado a tres niveles (familias de columnas) o cuatro niveles de anidación (familias de supercolumna). En caso de que el término familia de columnas no suene, ver que la 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, puedes anidar los pares clave-valor tanto como quieras. JSON también admite matrices y comprende diferentes tipos de datos, como cadenas, números y valores booleanos.

Consultando

Creo que las tiendas de columnas familiares solo se pueden consultar por clave, o escribiendo funciones map-reducir. 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 tendrá que crear y mantener índices para acceder a los datos deseados.

Las bases de datos de documentos también admiten consultas mediante teclas y funciones de 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.


Ayende ha dado una buena explicación sobre la diferencia entre la base de datos Key-Value y Document:

Una base de datos documental es, en esencia, un almacén de claves / valores con una gran excepción. En lugar de simplemente almacenar cualquier blob en él, un documento db requiere que los datos se almacenen en un formato que la base de datos pueda entender (es decir, JSON, XML, etc.). En la mayoría de las doc dbs, eso significa que ahora podemos permitir consultas en los datos del documento.