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
- Resumen de MongoDB: Empezando con MongoDB
- Cómo instalar MongoDB en Ubuntu y Mac
- Creación de una base de datos en MongoDB
- Comandos básicos de MongoDB Shell
- MongoDB Compass: Uso de la interfaz gráfica de Mongo
- Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
- Explicación de los operadores de proyección y proyección de MongoDB
- Explicación de las funciones agregadas de MongoDB
- Ordenación de MongoDB: método y ejemplos de sort()
- Uso de operadores de Push & Pull en MongoDB
- Cómo utiliza MongoDB $unwind
- 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
- Ejemplos de consultas de geolocalización de MongoDB
- Introducción a las transacciones de MongoDB
- Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
- Mejores comandos de MongoDB te necesitas saber
- Replicación de MongoDB: Una introducción completa
- Cómo configurar un clúster de MongoDB
- Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
- MongoDB Atlas: Configuración y uso de MongoDB gestionado
- Cómo ejecutar MongoDB como contenedor Docker
- Uso, gestión y requisitos de memoria de MongoDB
- Cómo utilizar Mongodump para copias de seguridad de MongoDB
- Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
- Cómo utilizar PyMongo
- Cómo utilizar Mongoose para MongoDB y NodeJS
- Chuletas de MongoDB
- MongoDB vs Cassandra: Comparación de bases de datos NoSQL
- PostgreSQL vs MongoDB: Comparando bases de datos
- MySQL vs MongoDB: Comparando bases de datos
- Certificaciones MongoDB: Una introducción
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.