Cassandra - Introducción
Apache Cassandra es una base de datos distribuida altamente escalable y de alto rendimiento diseñada para manejar grandes cantidades de datos en muchos servidores básicos, proporcionando alta disponibilidad sin un solo punto de falla. Es un tipo de base de datos NoSQL. Primero entendamos qué hace una base de datos NoSQL.
NoSQLDatabase
Una base de datos NoSQL (a veces llamada No solo SQL) es una base de datos que proporciona un mecanismo para almacenar y recuperar datos distintos de las relaciones tabulares utilizadas en las bases de datos relacionales. Estas bases de datos no tienen esquemas, admiten una replicación sencilla, tienen una API simple, eventualmente son consistentes y pueden manejar grandes cantidades de datos.
El objetivo principal de una base de datos NoSQL es tener
- simplicidad de diseño,
- escala horizontal, y
- control más preciso sobre la disponibilidad.
Las bases de datos NoSql utilizan estructuras de datos diferentes en comparación con las bases de datos relacionales. Acelera algunas operaciones en NoSQL. La idoneidad de una base de datos NoSQL determinada depende del problema que deba resolver.
NoSQL frente a base de datos relacional
La siguiente tabla enumera los puntos que diferencian una base de datos relacional de una base de datos NoSQL.
Base de datos relacional | Base de datos NoSql |
---|---|
Admite un potente lenguaje de consulta. | Admite un lenguaje de consulta muy simple. |
Tiene un esquema fijo. | Sin esquema fijo. |
Sigue ACID (atomicidad, consistencia, aislamiento y durabilidad). | Es sólo "eventualmente consistente". |
Soporta transacciones. | No admite transacciones. |
Además de Cassandra, tenemos las siguientes bases de datos NoSQL que son bastante populares:
Apache HBase- HBase es una base de datos distribuida de código abierto, no relacional, modelada a partir de BigTable de Google y está escrita en Java. Se desarrolla como parte del proyecto Apache Hadoop y se ejecuta sobre HDFS, proporcionando capacidades similares a BigTable para Hadoop.
MongoDB - MongoDB es un sistema de base de datos orientado a documentos multiplataforma que evita el uso de la estructura de base de datos relacional tradicional basada en tablas en favor de documentos similares a JSON con esquemas dinámicos que hacen que la integración de datos en ciertos tipos de aplicaciones sea más fácil y rápida.
¿Qué es Apache Cassandra?
Apache Cassandra es un sistema de almacenamiento (base de datos) de código abierto, distribuido y descentralizado / distribuido, para gestionar grandes cantidades de datos estructurados repartidos por todo el mundo. Proporciona un servicio de alta disponibilidad sin un solo punto de falla.
A continuación se enumeran algunos de los puntos notables de Apache Cassandra:
Es escalable, tolerante a fallas y consistente.
Es una base de datos orientada a columnas.
Su diseño de distribución se basa en Dynamo de Amazon y su modelo de datos en Bigtable de Google.
Creado en Facebook, se diferencia mucho de los sistemas de gestión de bases de datos relacionales.
Cassandra implementa un modelo de replicación estilo Dynamo sin un solo punto de falla, pero agrega un modelo de datos de "familia de columnas" más poderoso.
Cassandra está siendo utilizada por algunas de las empresas más grandes como Facebook, Twitter, Cisco, Rackspace, eBay, Twitter, Netflix y más.
Características de Cassandra
Cassandra se ha vuelto tan popular debido a sus excelentes características técnicas. A continuación se presentan algunas de las características de Cassandra:
Elastic scalability- Cassandra es altamente escalable; permite agregar más hardware para dar cabida a más clientes y más datos según los requisitos.
Always on architecture - Cassandra no tiene un solo punto de falla y está continuamente disponible para aplicaciones críticas para el negocio que no pueden permitirse una falla.
Fast linear-scale performance- Cassandra es linealmente escalable, es decir, aumenta su rendimiento a medida que aumenta la cantidad de nodos en el clúster. Por tanto, mantiene un tiempo de respuesta rápido.
Flexible data storage- Cassandra admite todos los formatos de datos posibles, incluidos: estructurados, semiestructurados y no estructurados. Puede adaptarse dinámicamente a los cambios en sus estructuras de datos de acuerdo con sus necesidades.
Easy data distribution - Cassandra ofrece la flexibilidad de distribuir datos donde los necesite mediante la replicación de datos en varios centros de datos.
Transaction support - Cassandra admite propiedades como atomicidad, consistencia, aislamiento y durabilidad (ACID).
Fast writes- Cassandra fue diseñado para ejecutarse en hardware básico barato. Realiza escrituras increíblemente rápidas y puede almacenar cientos de terabytes de datos, sin sacrificar la eficiencia de lectura.
Historia de Cassandra
- Cassandra se desarrolló en Facebook para la búsqueda en la bandeja de entrada.
- Fue de código abierto por Facebook en julio de 2008.
- Cassandra fue aceptada en Apache Incubator en marzo de 2009.
- Se convirtió en un proyecto de alto nivel de Apache desde febrero de 2010.