Descrubre qué es Apache Cassandra y cuáles son las virtudes de esta potente base de datos NoSQL.
Qué son las bases de datos NoSQL
Apache Cassandra es una base de datos NoSQL (Not Only SQL), un tipo de bases de datos que, por la cantidad de datos o por la evolución de los datos que hemos tenido en los últimos años, ha sido necesario crear.
Estas nuevas bases de datos son más flexibles a la hora de recoger datos desestructurados o semiestructurados que las bases de datos tradicionales o las bases de datos relacionales.
Tipos de bases de datos
Existen cuatro tipos de bases de datos NoSQL:
- Bases de datos clave-valor o key-value:
Son bases de datos muy parecidas a un diccionario, ya que al final se reducen a tener una clave y un valor o un conjunto de valores para la misma. Suelen trabajar en memoria y son muy rápidas, por ello se usan principalmente para conseguir mucha velocidad.
- Bases de datos de familia de columnas (column family):
Son unas bases de datos que, como su nombre indica, almacenan los datos en columnas en lugar de en filas, como estamos acostumbrados con las bases de datos tradicionales. Cassandra se sitúa aquí en esta en esta categoría de familia de columnas.
- Bases de datos de grafos (Graph DB):
Están formadas por nodos y por aristas, y las relaciones entre nodos la conforman las aristas. Una de las principales ventajas de estas bases de datos es que podemos almacenar información tanto en nodos como en aristas. Por lo que por ejemplo podemos tener un nodo persona con el nombre Abraham, y otro nodo persona con el nombre Juan, y en la arista podemos almacenar otra información, como que son amigos y la fecha desde que lo son.
- Bases de datos orientadas a documentos:
Almacenan los datos en forma de documentos, que podemos decir de forma muy resumida que es un archivo JSON. Al almacenarlos en JSON, tenemos mucha flexibilidad, porque podemos almacenar más menos datos y la base de datos no se va a resentir y va a seguir funcionando.
Qué es Apache Cassandra
Apache Cassandra fue lanzada en el año 2008 y fue creada inicialmente por Facebook.
Más tarde fue traspasada a la Fundación Apache, convirtiéndose en una herramienta Open Source, que a día de hoy la sigue manteniendo.
Está inspirada tanto en Amazon Dynamo como en Google BigTable.
Para comprender bien la base de datos Cassandra es importante conocer el Teorema CAP.
Este Teorema lo que dice es que un sistema distribuido no puede conseguir las tres siglas del teorema, que son consistencia (Consistency), alta disponibilidad (Avaiability) y tolerancia a particiones (Partition tolerance).
Lo que quiere decir es que nuestras bases de datos siempre se van a mover en la intersección de dos de las tres características, pero nunca en el en el triángulo amarillo, que sería la intersección de las tres.
Como vemos en la imagen, Apache Cassandra está situada en la intersección de alta disponibilidad y tolerancia a particiones, sacrificando un poco la parte de la consistencia.
Características de Apache Cassandra
Sus características más importantes son:
- Es una base de datos distribuida, es decir, vamos a tener nuestros servidores distribuidos.
- Escala linealmente, lo que significa que, como vemos en la imagen, si tenemos dos nodos, vamos a poder realizar 100000 operaciones por segundo. Si tuviéramos cuatro nodos podremos realizar el doble de operaciones, y así sucesivamente, cada vez que dupliquemos el número de nodos, duplicaremos el número de operaciones por segundo.
- No sigue un patrón maestro-esclavo, sino que es peer-to-peer o P2P. Esto lo que conlleva es que si se cae un nodo, el servicio puede seguir funcionando, no como en el patrón maestro-esclavo, en el que, de forma resumida, si se cae el maestro el sistema cae también.
- Permite la escalabilidad horizontal, que es diferente a la escalabilidad vertical. En la segunda lo que se aumenta es la máquina, como por ejemplo tener una máquina con 16 gigas de RAM y la aumentamos a 32 gigas de RAM. Y en la primera tenemos una máquina con 16 gigas de RAM y lo que hacemos es poner otra máquina también con 16 gigas de RAM trabajando en paralelo con la otra.
- Es tolerante a fallos, gracias a que posee la replicación de datos, es decir, los datos cuando son escritos en un nodo se replican en otros nodos, por lo que si uno de estos nodos cae, no pasa nada porque el dato está replicado en otros dos.
- Permite definir el nivel de consistencia.
- Usa el lenguaje CQL, que es un lenguaje muy similar a SQL.
- Permite la replicación en varios data center, siendo cada data center un anillo de máquinas Cassandra, ya que permite que el anillo 1 replique sus datos en el anillo 2.
Esta imagen resumen muy bien las características de Apache Cassandra, de las que destacamos principalmente algunas:
- Es Open Source.
- Tiene una consistencia ajustable, es decir, en el Teorema CAP podemos tirar un poco más de consistencia a costa de perder de las siglas del mismo.
- Tiene una fácil escalabilidad.
Cassandra Datastax
Es una base de datos Open Source “comercializada” por Datastax, cuyo modelo de negocio es ofrecer la base de datos de forma gratuita y cobrar por el mantenimiento y soporte.
Ventajas y desventajas de Cassandra
Algunas de las ventajas de Apache Cassandra son:
- Alta disponibilidad, lo que es muy interesante para el sistema en los que una caída sea crucial.
- Tolerancia a particiones y escalado.
- Cantidad de recursos que se tienen disponibles.
Algunas de sus desventajas:
- La conexión de nuevos nodos no es tarea fácil, ya que el mismo se tiene que poner de acuerdo con el resto, y esto conlleva un tiempo.
- Debemos saber qué queries se van a ejecutar previamente, ya que al hacer SELECT sufre un poco debido a la manera en la que almacena los datos.
En resumen, Cassandra es una base de datos muy potente, que actualmente es utilizada por grandes empresas como las que podemos ver en esta imagen:
Aprende todo sobre las bases de datos NoSQL. Conoce ahora su arquitectura y cómo desarrollar tu entorno de trabajo con Cassandra.
Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.