Apache Cassandra: Introducción

Última actualización: 14/11/2020

En esta introducción vamos a presentar qué es Apache Cassandra, qué particularidades tiene para almacenar y distribuir datos masivos (Big Data). Consideraremos su consistencia y disponibilidad y en qué escenarios son apropiados, junto con algunos casos de uso.

Introduccion Apache Cassandra

Apache Cassandra es una base de datos NoSQL que usa tablas, filas y columnas, pero el nombre y el formato de las columnas puede variar en cada fila de una misma tabla (algo que no ocurre en bases de datos relacionales). Esta particularidad también se puede llamar almacenamiento con clave-valor de dos dimensiones.

Es una solución open source distribuida, diseñada para almacenar grandes cantidades de datos proporcionando una alta disponibilidad sin un único punto de fallo. Es posible desplegarla en la nube, on premise o en un entorno híbrido.

Apache Cassandra fue diseñada originalmente para realizar búsquedas en Facebook y hoy en día se encuentra en uso por muchas organizaciones. Es una base de datos preparada para gestionar datos variables pero semi-estructurados, como sensores o aplicaciones conectadas y realizar análisis, monitorización y logging de eventos cuando es necesaria una alta velocidad de escritura.

Distribución de datos en Apache Cassandra

Para distribuir los datos, se usa un modelo peer-to-peer basado en claves de partición. Para determinar qué nodo contiene el dato que se está buscando, Cassandra usa tokens. Un token es un entero de 64 bits, y cada nodo del clúster tiene asignado un rango de tokens. De esta forma, al buscar una fila, Cassandra calcula el token asociado (con una función Hash), y con ello determina de forma única el nodo al que pertenece.

Al añadir más nodos a un clúster o al eliminar nodos se deben redistribuir los tokens asignados a cada uno de los nodos presentes.

Modelo de datos

Cassandra usa CQL (Cassandra Query Language). Es un dialecto de SQL para definir y manipular los datos. Entre las características más importantes se encuentra que Cassandra no soporta operaciones de tipo JOIN.

El esquema para las tablas (o familias de columnas) de Cassandra debe estar diseñado teniendo en mente las consultas que se van a realizar.

Cassandra también se encarga de replicar los datos a distintos nodos para garantizar la tolerancia a fallos y una alta disponibilidad.

Para conseguir una velocidad de escritura elevada, también hace uso de unas estructuras en memoria llamadas memtables. Sobre estas estructuras volátiles se realizan las escrituras de datos y una vez que se llenan se realiza el volcado a disco. En paralelo, también se escribe en el commit log (que es persistente) y de esta forma se evita la pérdida de datos.

Consistencia en Apache Cassandra

Cassandra permite ajustar la disponibilidad y la consistencia de los datos configurando las propiedades “replication factor” y “consistency level”. Por ejemplo, si ajustamos el nivel de consistencia en 3 en un cluster con 3 nodos, se necesitaría que los 3 nodos tengan consenso para tener el dato disponible.

El nivel de consistencia se define por consulta y permite ajustar el momento en el que se ofrece el resultado a los clientes. Por otro lado, el factor de replicación se asegura de que las escrituras se envíen a todas las réplicas. Podríamos resumir este comportamiento con tres niveles de consistencia:

  • Bajo: Con este modo, se corre el riesgo de que el primer nodo disponible devuelva un dato antiguo pero garantiza la respuesta más rápida.
  • Medio: Este modo reduciría la probabilidad de devolver un dato antiguo, forzando a Cassandra a llegar a un consenso entre nodos.
  • Alto: De esta forma, Cassandra espera a que todos los nodos con el dato respondan, lo que sacrifica la velocidad de la respuesta pero garantiza el dato más actualizado.

Casos de uso de Apache Cassandra y consideraciones

Entre las limitaciones de Apache Cassandra se encuentra el hecho de que no contiene funcionalidad para realizar agregaciones, por lo que si se necesitan consultas de datos agregados, se deben precomputar, lo que consume tiempo.

La ventaja principal de la base de datos es su velocidad de escritura y la forma de distribuir los datos, que permite una alta escalabilidad. Para sistemas en los que la velocidad de lectura sea crítica, no resulta una solución óptima.

Entre los usos más comunes de Apache Cassandra se encuentran los siguientes:

  • Aplicaciones IoT: En estos sistemas, es frecuente que se tengan miles de sensores enviando información variable. En ocasiones, estos eventos deben ser sincronizados y correlacionados en tiempo real.
  • Monitorización de aplicaciones web: Existen muchos ejemplos relacionados con almacenar la actividad de los usuarios en sitios web.

Continúa Aprendiendo Apache Cassandra

En esta sección, quiero recomendarte algunos cursos de Apache Cassandra para que profundices aún más y te conviertas en experto:

Además, por aquí te dejo unas recomendaciones de libros:

Preguntas Frecuentes – FAQ

¿Cómo funciona Apache Cassandra?

Cassandra es una base de datos distribuida que usa un protocolo P2P para comunicar la información de los nodos que componen el sistema. Cada nodo puede realizar operaciones de lectura o de escritura.

¿En qué situación usar Apache Cassandra?

Su alta escalabilidad y la velocidad de escritura de datos la convierten en una solución óptima en aplicaciones IoT y en sistemas de monitorización con multitud de escrituras rápidas.

¿Es Apache Cassandra una base de datos SQL?

Cassandra usa como lenguaje de consulta CQL (Cassandra Query Language). Este dialecto aún no soporta todas las operaciones de SQL, ni tiene las propiedades ACID propias de bases de datos relacionales. Por lo tanto Cassandra no se puede considerar una base de datos relacional SQL sino NoSQL.


A continuación el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta