Cassandra: Introducción

En esta entrada, haremos una introducción a una de las principales Bases de Datos NOSQL (Not Only SQL) que existen hoy en día en el mercado, Cassandra. Se considera una de las bases de datos distribuidas con mayor auge en los últimos años en el paradigma Big Data. Antes de introducirnos a sus principales características, conozcamos un poco de su historia.

¿Cómo nació Cassandra?

En el año 2008, Facebook, una de las redes sociales de mayor uso en el mundo, se encontró con una necesidad de almacenamiento que permitiese atender búsquedas en tiempo real dentro de la aplicación de mensajería de la red social. Se necesitaba dar respuesta rápida a un volumen muy elevado de datos, así como de usuarios. Es aquí donde nace Cassandra; quién une las mejores características y bondades de dos bases de datos: DynamoDB y BigTable creadas por Amazon y Google respectivamente.

Características de Cassandra

Apache Cassandra es una base de datos distribuida NOSQL desarrollada en Java y de código abierto. Esta base de datos presenta las siguientes características:

Datos distribuidos

La información se encuentra distribuida y replicada automáticamente a lo largo de los nodos que conforman la arquitectura.

Cassandra utiliza una arquitectura peer to peer o también denominada “anillo”. Los nodos se comunican entre ellos para efectuar la sincronización automática de datos jugando todos ellos el mismo rol. Este concepto de arquitectura conlleva que no existe un nodo maestro, masterless.

Escalabilidad horizontal

Añadiendo nuevos nodos, es posible hacer crecer la capacidad de almacenamiento y mejorar los tiempos de respuesta de las consultas. La escalabilidad horizontal se basa en el uso de equipos commodity (bajo coste), en contraposición con paradigmas anteriores, donde se utilizaba la escalabilidad vertical para la mejora de rendimientos y almacenamientos.

Esto permite ahorrar costes, tener un sistema adaptado a la información almacenada y dar la posibilidad de crecer el sistema de manera rápida en caso de ser necesario.

Alta disponibilidad

Al ser un sistema masterless, en Cassandra no existe un punto único de fallo, por lo que se encuentra en el segmento AP (Availability & Partition) del Teorema de CAP. La disponibilidad de los datos está garantizada, por lo que, en caso de que alguno de los nodos falle, es posible continuar con la operativa gracias a que la información puede ser consultada desde algún otro nodo.

Al pertenecer al segmento AP y ser una base de datos tipo BASE, la consistencia de la información no está garantizada, siendo Cassandra, en primera instancia, una base de datos eventualmente consistente.

Si bien Cassandra es eventualmente consistente, esta consistencia es configurable tanto para lecturas como escrituras, aunque esto afecta de manera considerable al rendimiento.

Almacenamiento columnar y Clave-Valor

Cassandra es un hibrido entre dos esquemas de almacenamiento: El almacenamiento columnar y el clave-valor. Los datos se almacenan y se recuperan usando una clave única (indexada) que tiene asociada un valor.
Además, Cassandra almacena la información en formato columnar, lo que le proporciona una mayor compresión de la información y una mejor eficiencia en las respuestas.

Este método de almacenamiento es muy eficiente, por ejemplo, para la realiazación de búsquedas de unas pocas columnas ya que, a diferencia de una base de datos relacional, Cassandra no necesita leer el registro completo para acceder a unos pocos valores.

Otras características a considerar

  • Usa un lenguaje similar a SQL, CQL (Cassandra Query Languaje)
  • No es posible efectuar joins entre tablas
  • Alto nivel de compresión, hasta un 80% configurable
  • El acceso a la información depende de la clave de particionado
  • Sorters y filtros pueden encontrarse limitados en función de la clave seleccionada

¿Cuándo elegir Cassandra?

Si lo que se busca es tener la posibilidad de escalamiento lineal, un nivel alto de disponibilidad y cortos tiempos de respuesta, entonces Cassandra es una buena alternativa para usar en una solución Big Data. Por otro lado, no perder de vista que para lograr alcanzar estos beneficios, habrá que sacrificar el grado de consistencia de datos dentro de la solución, ya que como se ha mencionado, Cassandra se ubica en el segmento AP del Teorema CAP.

También es muy importante tener definidas las consultas a realizar antes de generar el modelo de datos. Debido a las limitaciones que tiene en filtrados y ordenaciones, el conocimiento de las consultas a realizar sobre la base de datos tiene un gran impacto en el modelo a definir.

En los últimos años, la variedad de herramientas de almacenamiento de datos en el paradigma Big Data ha crecido a gran velocidad. Elegir una u otra dependerá de las necesidades de cada solución y negocio.

Cassandra, es una de las tantas alternativas que existen, con la cual, se tienen una amplia gama de beneficios, entre los que destacan la escalabilidad, velocidad y alta disponibilidad. Es por esto por lo que empresas como Facebook, Twitter, Walmart, Netflix, por mencionar algunas, han elegido Cassandra como herramienta de almacenamiento y consulta, dando prioridad estas propiedades por encima de la consistencia.