MongoDB vs Cassandra: Comparación de bases de datos NoSQL

MongoDB vs Cassandra: Comparación de bases de datos NoSQL

  • Orquestación
6 min de lectura Actualizado Mar 8, 2019

Puntos clave: Una comparación entre MongoDB y Cassandra pone de relieve sus enfoques distintos de gestión de datos. MongoDB utiliza documentos JSON, mientras que Cassandra emplea una estructura orientada a columnas, ambas orientadas a la escalabilidad y la integridad de los datos.

  • MongoDB soporta datos geográficos a través de GEOJson.
  • El esquema plano de Cassandra mejora la velocidad de recuperación.

Aquí Haz una comparación lado a lado entre MongoDB y Cassandra. Proporcionamos ejemplos, con comandos y código, y no solo una explicación narrativa.

En resumen, Cassandra están la versión moderna de la base de datos relacional, aunque donde los datos están agrupados por columna en lugar de por fila, para una recuperación rápida. MongoDB almacena registros como documentos en formato JSON. Cuenta con un shell JavaScript y un conjunto completo de funciones que facilitan su manejo. Ambos sistemas son diseñados para escalar enormemente.

Estructura de datos

Apache Cassandra están una base de datos orientada a columnas. MongoDB almacena registros en formato JSON. Los shells de MongoDB también soportan JavaScript para que te pueda construir consultas, conversión y manipulación de datos por pasos, guardando cada operación en una variable JavaScript.

Un registro de datos JSON está autodescriptivo, porque el nombre del campo y el valor de los datos están almacenados en el mismo lugar, es decir, dentro del documento. Aunque no están necesario un esquema con MongoDB, ya que JSON por definición no lo necesita, te puedes Haz uno:

    var schema = new mongoose.Schema({
cachedContents : {
largest : String,
non_null : Number,
null : Number,
top : [{
item : String,
count : Number
}],
smallest : String,
format : {
displayStyle : String,
align : String
}
}
});

En esta Introducción a Cassandra, explicamos que las tablas Cassandra utilizan un esquema, como una base de datos relacional tradicional. Pero elimina la noción de normalización de bases de datos. Los administradores de Oracle dirían que el esquema Cassandra está plano. La razón de esto están el almacenamiento en una red de servidores comunes están baratos, por lo que no está motivo para Haz uniones para recuperar datos, lo que ralentiza la recuperación de datos. En cambio, la redundancia está aceptable. Además, las tablas de Cassandra no requieren que todos los campos estén llenados. Así que no está ningún sobrecargo por almacenar datos vacíos.

Cassandra también ofrece soporte JSON:

    use json;

CREATE type json.sale ( id int, item text, amount int );

CREATE TABLE json.customers ( id int  PRIMARY KEY, name text, balance int, sales list> );

INSERT INTO json.customers (id, name, balance, sales) 
VALUES (123, 'Greenville Hardware', 700,
 [{ id: 5544, item : 'tape', amount : 100},
  { id: 5545, item : 'wire', amount : 200}]) ;
select * from customers;

 id  | balance | name                | sales
-----+---------+---------------------+--------------------------------------------------------------------------------
 123 |     700 | Greenville Hardware | [{id: 5544, item: 'tape', amount: 100}, {id: 5545, item: 'wire', amount: 200}]

Adición de datos

Cassandra:

MongoDB:

    CREATE TABLE Library.book (       
ISBN text, 
copy int, 
title text,  
PRIMARY KEY (ISBN, copy)
 );

INSERT INTO  Library.book (ISBN, copy, title) VALUES('1234',1, 'Bible');

MongoDB:

    db.collection.insertOne( { isbn: 100 } )
{
"acknowledged" : true,
"insertedId" : ObjectId("5c4493aa750820eae9756a15")
}

Crea Índice

Cassandra:

MongoDB:

    CREATE TABLE  Library.patron (      
ssn int PRIMARY KEY,  
checkedOut set 
);

INSERT INTO Library.patron (ssn, checkedOut) values (123,{'1234','5678'});

create index on Library.patron (checkedOut);

MongoDB:

    db.address.createIndex( { "location": "2dsphere"} )

Agrupamiento

Explicamos cómo configurar un clúster Cassandra y una instalación de clúster MongoDB.

MongoDB (demonio mongod) utiliza un servidor Mongo Master, un fragmento Mongo y un servidor de configuración Mongo para replicar datos. El servidor de consultas, también conocido como router (daemon mongo), determina a qué servidor enviar consultas y operaciones de datos, como añadir un registro.

Cassandra no tiene un servidor de configuración que controle la operación de otros servidores. No está una relación maestro-esclavo. En su lugar, está un anillo de servidores, cada uno con funciones iguales, aunque almacenando diferentes partes (es decir, fragmentos) de los datos.

Fragmentación

El sharding significa distribuir datos a través de un clúster. Esto se están aplicando un algoritmo en parte de todo un documento o índice. MongoDB y Cassandra proporcionan un nivel fino de control sobre esto.

Cassandra hace esto con la clave de partición de Cassandra, la clave compuesta y las columnas de agrupamiento, y usando tokens para distribuir datos de Cassandra. En resumen, cada tabla requiere una clave primaria única. El primer campo que aparece están la clave de partición, ya que su valor hashado se está usado para determinar el nodo que almacena los datos. Si esos campos son envuelto entre paréntesis, entonces la clave de partición está compuesta. De lo contrario, el primer campo están la clave de partición. Cualquier campo listado después de la clave primaria son llamados columnas de agrupamiento. Estas almacenan datos en orden ascendente o descendente dentro de la partición para la rápida recuperación de valores similares. Todos los campos juntos son la clave primaria.

Y aquí están explican el fragmentado de MongoDB. Básicamente, te asignar diferentes partes de los datos a distintos servidores usando un índice. Por ejemplo, los registros con los clientes del índice podrían estar en un conjunto de servidores y los proveedores en el otro. Pero si te quieres una distribución completamente aleatoria, entonces te utiliza un valor hashado para el índice. te también puede asignar datos a servidores usando un rango de valores.

    sh.enableSharding("tobacco")
{ "ok" : 1 }

Consistencia de datos mediante replicación

La replicación significa hacer más de una copia de datos para evitar pérdidas de datos debido a fallos de hardware u otros.

MongoDB utiliza una llamada conceptual llamada ReplicaSets, configurada con rs.initiate:

    rs.initiate()
{
	"info2" : "no configuration specified. Using a default configuration for the set",


ConfigReplSet:SECONDARY> rs.status()
{
	"set" : "ConfigReplSet",

Explicamos cómo configurar la consistencia de datos de Apache Cassandra. te Crea replicación así:

    CREATE KEYSPACE Library
      WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

Apoyo a las operaciones GEO

MongoDB tiene un soporte superior para almacenar y consultar datos geográficos. Una razón obvia para ello están el formato universal para ello están GEOJson. Echa un vistazo a Rastrear los Tweets por ubicación geográfica y consulta MongoDB por GeoLocalización.

Aquí están una consulta en MongoDB para encontrar registros cerca de una determinada longitud y latitud:

    db.address.find ({
  location: {
     $near: {
       $geometry: {
          type: "Point" ,
          coordinates: [ -72.7738706,41.6332836 ]
       },
       $maxDistance: 4,
       $minDistance: 0
     }
   }
})

Y dado que el shell de mongo soporta Javascript te puede guardar consultas en variables:

    var connecticut = db.address.find ({location:
     {$geoWithin:
       {$geometry: {
       type: "Polygon",
       coordinates:
 [[ [ -73.564453125, 41.178653972331674 ],
   [ -71.69128417968749, 41.178653972331674 ],
   [ -71.69128417968749, 42.114523952464246 ],
   [ -73.564453125, 42.114523952464246 ],
   [ -73.564453125, 41.178653972331674 ]
   ]]
}}}});

Pruebas de estrés

Hablamos sobre la gestión de memoria y el ajuste del rendimiento en Pruebas de Estrés y Ajuste de Rendimiento Apache Cassandra y el Uso de Memoria de MongoDB

Guía de MongoDB

  1. Resumen de MongoDB: Empezando con MongoDB
  2. Cómo instalar MongoDB en Ubuntu y Mac
  3. Creación de una base de datos en MongoDB
  4. Comandos básicos de MongoDB Shell
  5. MongoDB Compass: Uso de la interfaz gráfica de Mongo
  6. Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
  7. Explicación de los operadores de proyección y proyección de MongoDB
  8. Explicación de las funciones agregadas de MongoDB
  9. Ordenación de MongoDB: método y ejemplos de sort()
  10. Uso de operadores de Push & Pull en MongoDB
  11. Cómo utiliza MongoDB $unwind
  12. 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
  13. Ejemplos de consultas de geolocalización de MongoDB
  14. Introducción a las transacciones de MongoDB
  15. Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
  16. Mejores comandos de MongoDB te necesitas saber
  17. Replicación de MongoDB: Una introducción completa
  18. Cómo configurar un clúster de MongoDB
  19. Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
  20. MongoDB Atlas: Configuración y uso de MongoDB gestionado
  21. Cómo ejecutar MongoDB como contenedor Docker
  22. Uso, gestión y requisitos de memoria de MongoDB
  23. Cómo utilizar Mongodump para copias de seguridad de MongoDB
  24. Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
  25. Cómo utilizar PyMongo
  26. Cómo utilizar Mongoose para MongoDB y NodeJS
  27. Chuletas de MongoDB
  28. MongoDB vs Cassandra: Comparación de bases de datos NoSQL
  29. PostgreSQL vs MongoDB: Comparando bases de datos
  30. MySQL vs MongoDB: Comparando bases de datos
  31. Certificaciones MongoDB: Una introducción

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.