Seleccionar página

Por qué Cassandra no es una base de datos cualquiera.

El mundo de las Bases de Datos es complejo, pero más allá de su complejidad está lo que yo llamaría inabarcabilidad. Con esto me refiero a la ingente cantidad de soluciones complejas a necesidades reales que ofrece el mercado, sin parar de innovar. Y la base de datos Cassandra cuando comenzó a dar sus primeros pasos era precisamente eso: una solución compleja a una necesidad real de una de las empresas top del mundo IT, Facebook.

¿Qué es Cassandra?

A estas alturas ya te habrás imaginado, ávido lector, que me estoy refiriendo a una base de datos. Así pues, Cassandra es una base de datos, pero no una cualquiera. 

Es de las denominadas bases de datos NoSQL, orientada a almacenamiento en columnas.

Los orígenes de Cassandra

Los orígenes de Cassandra son nobles, pues su nacimiento se gestó en las oficinas de Menlo Park, Palo Alto, sí, en Silicon Valley.

La meca de la innovación fue la que alumbró a esta criatura, y como innovar parece ir en la genética del lugar, además lo quisieron hacer de la mejor de las maneras: uniendo lo mejor de Dynamo y de BigTable, las bases de datos que tanto Amazon como Google crearon para dar respuesta a sus necesidades.

amazon dynamo bigtable cassandra

Su creación respondió a la necesidad de Facebook de tener que hacer frente al crecimiento de las consultas que se hacían a través de su web en tiempo real. Y no sólo crecían las consultas en número, sino que además el volumen de datos que se manejaba empezaba a ser gigantesco, así que tenían que encontrar la mejor forma de aunar rapidez en la respuesta a las consultas, y rapidez en la lectura de grandes volúmenes de datos. Y así nació Cassandra.

En qué se diferencia Cassandra de otras bases de datos NoSQL

La alta disponibilidad es una de las características principales de esta base de datos, pero no la única. De hecho, es todo el conjunto de características de esta base de datos lo que la hace única.

Cassandra es una base de datos distribuida, ¿Qué quiere decir esto? Pues bien, la información que se almacena se reparte a través de todos los nodos que componen el clúster, de manera que si algún nodo se cae o se degrada va a ofrecer alta disponibilidad, asegurando el servicio on-line de la base de datos.

Otra característica principal tiene que ver con su capacidad de escalación lineal, es decir, su rendimiento es lineal con respecto al número de nodos que compone el clúster: si hay ocho nodos, el rendimiento será el doble que si hay cuatro.

Además, algo que puede marcar la diferencia con respecto a otras bases de datos, tanto tradicionales (RDBM) como NoSQL, es que el sistema se puede escalar de forma horizontal añadiendo nodos basados en hardware comodity de bajo coste, ¿Cómo te has quedado?

La base de datos Cassandra es un tipo de base de datos orientada al almacenamiento en columnas, pero hay más tipos de bases de datos NoSQL.

Están por un lado las bases de datos Clave Valor, y dentro de esta categoría entraría Dynamo de Amazon, aunque Dynamo también es Distributed Hash Table. Las características de este tipo de bases de datos es que tienen una clave indexada a un valor, así que exige conocer la estructura de la información almacenada.

Otro tipo de base de datos NoSQL es la de tipo Documental, siendo el formato del documento JSON. De esta manera se puede gestionar la información en estructuras jerárquicas y también índices secundarios.  En esta categoría destaca la base de datos MongoDB.

Y por último, podemos hablar de las bases de datos orientadas a grafos, ¿Qué es esto? Pues bien, son las que las entidades o también llamados nodos del grafo se relacionan con otras entidades a través de las aristas. De esta manera se pueden recorrer fácilmente las uniones entre las diferentes entidades, independientemente del volumen de datos. En esta categoría podemos destacar Neo4J.

Ahora ya no sólo sabes lo que es Cassandra, sino que también conoces las diferencias con las otras bases de datos NoSQL que pudieran ser competencia de esta.

Cuándo la base de datos Cassandra es la mejor solución

Siempre que nos planteamos cómo solucionar un problema o mejorar algo en el mundo IT , las respuestas son diversas. Hay que conocer muy a fondo el problema y tener una visión muy técnica de las diferentes soluciones que se pueden adoptar. Por eso, Cassandra puede ser la mejor solución, la peor o una más, dependerá de muchos factores que vamos a intentar resumir.

Para elegir Cassandra como la solución a adoptar nos tenemos que fijar en sus características y en cómo éstas encajarán en lo que buscamos o necesitamos. 

Si buscamos una base de datos que nos permita una escalación lineal con alto rendimiento y además alta disponibilidad…. bueno, ésta es una de sus grandes características. La elegiremos sin duda.

Igualmente, su arquitectura distribuida y la manera en que se almacenan los datos va a permitir tener una alta disponibilidad de la base de datos, evitando caídas que pueden suponer pérdida de dinero o pérdida de datos…. cuando no, ambas a la vez.

Si tenemos grandes cantidades de datos y preferimos la velocidad para acceder a los datos a la normalización de estos, entonces Cassandra también puede ser la base de datos a elegir. Pero cuidado, si estás acostumbrado a trabajar con bases de datos relacionales deberás cambiar la forma de pensar a la hora de diseñar tu modelo de datos.

En el mundo relacional estamos acostumbrados a pensar en relaciones de tablas y la normalización de estas. Sin embargo, en el mundo NoSQL y más en concreto con Cassandra, tienes que pensar en el almacenamiento en columnas. De modo que lo que llamaríamos una tabla, se va a convertir en una familia de columnas.

Para acceder de forma más rápida y eficaz manejando grandes volúmenes de datos, diseñaremos familias de columnas sin importar el número de éstas. Así pues, podemos tener un registro en una familia de columnas que cuente con 50 columnas, y otro registro de la misma familia que tenga 300 columnas, ya que accederemos por el llamado Row Key.

base de datos cassandra

cassandra row key

Es cierto que quizás la parte más compleja de la adopción de esta base de datos sea cambiar la forma de pensar a la hora de diseñar el modelo, pues éste se debe basar en las consultas que haremos en la aplicación, y no en la relación de datos entre sí. Recuerda, aquí no existen los JOIN entre tablas.

Y por último, si hablamos de aspectos económicos, el ahorro de dinero tanto en licencias como en hardware es importante, pues como ya hemos comentado se puede optar por la opción commodity low cost

Casos de éxito

El primer caso de éxito de esta base de datos es Facebook, que la usó en las búsquedas de la mensajería instantánea.

¿Y sabías que la búsqueda de películas por keyword  que utiliza la popular plataforma de vídeo streaming Netflix, utiliza Cassandra?

Otro ejemplo más de su uso es Twitter, que la utiliza en su aplicación de Real Time Analytics, Rainbird, pues por su alto volumen de escritura de datos Cassandra ha mostrado una baja latencia.

Y por último Ebay: utiliza Cassandra gracias a su alta escalabilidad horizontal y su gran rendimiento de operaciones de escritura concurrentes.

Nuestra conclusión

Como ves, Cassandra no es una base de datos cualquiera. Ofrece innumerables beneficios con respecto a otras, aunque deberás valorar bien todas sus características si estás pensando en usarla como solución. En cualquier caso, adentrarse en las tripas de Cassandra siempre es una ventaja por todo el conocimiento que te va a aportar.

Bibliografía

https://prezi.com/gtf8jr6cwxqd/bases-de-datos-nosql/

https://www.paradigmadigital.com/dev/cassandra-la-dama-de-las-bases-de-datos-nosql/

https://www.paradigmadigital.com/techbiz/breve-introduccion-las-tecnologias-nosql/

https://sites.google.com/site/uegoman/modelo-de-datos-de-cassandra

http://docs.datastax.com/en/

http://cassandra.apache.org/

 

Raúl Santamaría

Raúl Santamaría

Raúl es Ingeniero de Consultoría y Desarrollo en Panel. Puedes contactar con él via e-mail a raul.santamaria@panel.es, o visitar su blog sobre viajes www.pasaporteparaviajar.com.

Déjanos tu comentario

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This