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

La batalla de las bases de datos NoSQL - Comparando MongoDB y Cassandra

Introducción a MongoDB

MongoDB fue presentado en 2009 por una empresa llamada 10gen. Posteriormente, 10gen pasó a llamarse MongoDB Inc., la empresa responsable del desarrollo del software y vende la versión empresarial de esta base de datos. MongoDB Inc. maneja todo el soporte con su excelente equipo de soporte de nivel empresarial las 24 horas del día. Están comprometidos a brindar soporte de por vida, lo que significa que los clientes eligen usar cualquier versión de MongoDB y, si desean actualizar, recibirá soporte en cualquier momento. También les brinda la oportunidad de estar sincronizados con todas las correcciones de seguridad que ofrece la empresa las 24 horas.

MongoDB es una base de datos NoSQL muy conocida que tuvo una gran proliferación durante la última década, impulsada por el crecimiento explosivo de la web y las aplicaciones móviles que se ejecutan en la nube. Esta nueva generación de aplicaciones conectadas a Internet exige un almacenamiento de datos sin esquema rápido, tolerante a fallas y escalable que pueden ofrecer las bases de datos NoSQL. MongoDB usa JSON para almacenar datos como documentos que pueden variar en las ofertas de estructura, un esquema dinámico y flexible. MongoDB diseñado para alta disponibilidad y escalabilidad con fragmentación automática. MongoDB es una de las bases de datos de código abierto populares que surgen bajo la base de datos NoSQL, que se utiliza para el almacenamiento de datos de gran volumen. MongoDB tiene las filas denominadas documentos que no requieren la definición de un esquema porque los campos se crean sobre la marcha. El modelo de datos disponible dentro de MongoDB permite la representación de relaciones jerárquicas, para almacenar arreglos y otras estructuras más complejas de manera más eficiente.

Introducción a Cassandra

Apache Cassandra es otra tienda de columna amplia, distribuida, gratuita y de código abierto. Cassandra fue presentada en 2008 por un par de desarrolladores de Facebook, que luego se lanzó como un proyecto de código abierto. Actualmente cuenta con el apoyo de Apache Software Foundation, y Apache actualmente mantiene este proyecto para cualquier mejora adicional.

Cassandra es un sistema de administración de base de datos NoSQL diseñado para manejar grandes cantidades de datos en muchos servidores básicos y brindar alta disponibilidad sin un único punto de falla. Cassandra ofrece un soporte muy sólido para clústeres que abarcan múltiples centros de datos, con replicación asíncrona sin maestro que permite operaciones de baja latencia para todos los clientes. Cassandra admite el diseño de distribución de Amazon Dynamo con el modelo de datos de Bigtable de Google.

Similitudes entre MongoDB y Cassandra

Con la breve introducción de estas dos bases de datos NoSQL, revisemos algunas de las similitudes entre estas dos bases de datos:

Tanto MongoDB como Cassandra son tipos de base de datos NoSQL y distribución de código abierto.

  • Ninguna de estas bases de datos reemplaza a los tipos de bases de datos RDBMS tradicionales.
  • Estas dos bases de datos no cumplen con ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad), que se refiere a las propiedades de las transacciones de la base de datos que garantizan que las transacciones de la base de datos se procesen de manera confiable.
  • Estas dos bases de datos admiten la partición horizontal fragmentada.
  • Consistencia y Normalización son dos conceptos que estos dos tipos de bases de datos no satisfacen (ya que se inclinan más hacia los tipos de bases de datos RDBMS)

MongoDB frente a Cassandra:características

Ambas tecnologías juegan un papel vital en sus campos, con sus similitudes entre MongoDB y Cassandra que muestran sus características comunes y muestran las diferencias, la singularidad de estas tecnologías.

Figura 1 MongoDB frente a Cassandra:8 factores principales de diferencia

Modelo de datos expresivos

MongoDB proporciona un modelo de datos rico y expresivo que se conoce como 'orientado a objetos' u 'orientado a datos'. Este modelo de datos puede admitir y representar fácilmente cualquier estructura de datos en el dominio del usuario. Los datos pueden tener propiedades y pueden anidarse entre sí para varios niveles. Cassandra es más un modelo de datos tradicional con estructura de tabla, filas y columnas de tipos de datos específicos. Este tipo se define durante la creación de la tabla. De todos modos, cuando comparamos ambos modelos, MongoDB tiende a proporcionar un modelo de datos rico. La siguiente figura describe las arquitecturas típicas de alto nivel de ambas bases de datos en términos de sus niveles de almacenamiento y replicación.

Figura 2:Diagrama de arquitectura MongoDB frente a Cassandra

Nodo maestro de alta disponibilidad

MongoDB admite un nodo maestro en un clúster, que controla un conjunto de nodos esclavos. Si el nodo maestro falla, se elige un esclavo como maestro y tarda unos 20-30 segundos en hacerlo. Durante este tiempo de demora, el clúster estará inactivo y no podrá aceptar ninguna entrada. Cassandra admite varios nodos maestros en un clúster y, en caso de que uno de los nodos maestros se desconecte, otro nodo maestro ocupará su lugar. En comparación, Cassandra admite una mayor disponibilidad sobre MongoDB porque no afecta al clúster y siempre está disponible.

Índices secundarios

MongoDB tiene más ventajas en comparación con Cassandra si una aplicación requiere índices secundarios junto con flexibilidad en el modelo de datos. Debido a esto, MongoDB es mucho más fácil de indexar cualquier propiedad de los datos almacenados en la base de datos. Esta propiedad facilita la consulta. Cassandra tiene soporte de cursor para los índices secundarios, que están limitados a columnas individuales y comparaciones de igualdad

Escalabilidad de escritura

MongoDB solo admite un nodo maestro. Este nodo maestro en MongoDB solo acepta la entrada, y el resto de los nodos en MongoDB se usan como salida; por lo tanto, si los datos se tienen que escribir en los nodos esclavos y dejarlos pasar por el nodo maestro. Cassandra admite varios nodos maestros en un clúster, lo que lo hace adecuado en el caso de la escalabilidad.

Soporte de lenguaje de consulta

Actualmente, MongoDB no admite un lenguaje de consulta. Las consultas en MongoDB están estructuradas como fragmentos JSON. Por el contrario, Cassandra tiene un conjunto de consultas fácil de usar que se conoce como CQL (Lenguaje de consulta de Cassandra) y es fácilmente adaptable por los desarrolladores que tienen conocimientos previos de SQL. ¿En qué se diferencian sus consultas?

Seleccionando registros de la tabla de clientes:

 Casandra:

SELECT * FROM customer;

 MongoDB:

db.customer.find()

Insertar registros en la tabla de clientes:

 Casandra:

INSERT INTO customer (custid, branch, status) VALUES('appl01', 'headquarters', 'A');

 MongoDB:

db.customer.insert({ cust_id: 'appl01', branch: 'headquarters', status: 'A' })

Actualización de registros en la tabla de clientes:

Casandra:

UPDATE Customer SET branch = ‘headquarters' WHERE custage > 2;

MongoDB:

db.customer.update( { custage: { $gt: 2 } }, { $set: { branch: 'headquarters' } }, { multi: true } )

Agregación nativa

MongoDB tiene un marco de agregación incorporado que se utiliza para ejecutar una tubería ETL para transformar los datos almacenados en la base de datos y también admite tráfico de datos pequeños y medianos. Cuando aumenta la complejidad, el marco también se vuelve más difícil de depurar, mientras que Cassandra no tiene un marco de agregación integrado. Cassandra utilizó herramientas externas como Hadoop, Apache Spark, etc. Por lo tanto, MongoDB es mejor que Cassandra en lo que respecta al marco de agregación integrado.

Modelo sin esquema

MongoDB proporciona la facilidad para que un usuario pueda modificar la aplicación de cualquier esquema en la base de datos. Cada base de datos puede tener una estructura diferente. Todo depende del programa o la aplicación para interpretar los datos. Mientras que Cassandra no ofrece la posibilidad de modificar los esquemas, pero proporciona escritura estática donde se requiere que el usuario defina el tipo de la columna al principio.

Comparativa de rendimiento

Cassandra considera que funciona mejor en aplicaciones que requieren una gran carga de datos, ya que puede admitir varios nodos maestros en un clúster. Mientras que MongoDB no será ideal para aplicaciones con una gran carga de datos, ya que no puede escalar con el rendimiento. Basado en el benchmark estándar de la industria creado por Yahoo! Llamado YCSB, MongoDB proporciona un mayor rendimiento que Cassandra en todas las pruebas que han ejecutado, en algunos casos de uso hasta 25 veces. Cuando se optimiza para lograr un equilibrio entre el rendimiento y la durabilidad entre Cassandra y MongoDB, MongoDB proporciona más de un 50 % más de rendimiento en cargas de trabajo mixtas y 2,5 veces más en cargas de trabajo de lectura dominante en comparación con Cassandra.

MongoDB proporciona la mayor flexibilidad para garantizar la durabilidad de operaciones específicas:los usuarios pueden optar por la configuración de durabilidad optimizada para operaciones específicas que se consideran críticas pero para las que la latencia adicional es aceptable. Para Cassandra, este cambio requiere la edición de un archivo de configuración del servidor y un reinicio completo de la base de datos.

Conclusión

MongoDB es mejor conocido por cargas de trabajo con una gran cantidad de datos altamente desestructurados. La escala y los tipos de datos con los que trabajará con las estructuras de datos flexibles de MongoDB se adaptarán mejor a usted que a Cassandra. Para usar MongoDB de manera efectiva, deberá poder manejar la posibilidad de algún tiempo de inactividad si el nodo maestro falla, así como con velocidades de escritura limitadas. Y no olvide que también tendrá que aprender un nuevo lenguaje de consulta. En MongoDB, los datos complejos se pueden administrar fácilmente utilizando las capacidades de soporte de formato JSON. Este es un diferenciador clave para MongoDB cuando lo compara con Cassandra. En algunas situaciones, Cassandra puede considerarse la mejor base de datos para implementar cuando se trata de grandes cantidades de datos, optimización de la velocidad y ejecución de consultas. Los resultados de la comparación de Cassandra y MongoDB, encontraremos que tienen sus respectivas ventajas dependiendo de los requisitos de implementación y el volumen de datos a tratar.