
Apache Cassandra es una base de datos de código abierto, NoSQL (No sólo SQL, no relacional), especialmente diseñada para el manejo de grandes cantidades de datos, sobre clientes en configuración de clusters distribuidos en diferentes datacenters, linealmente escalable y de alta disponibilidad (tolerancia a fallas).
Cassandra nació en Facebook, para permitir la búsqueda en sus buzones de entrada. Fue dirigida a código abierto en 2008, bajo la administración de la organización Apache.
Apache Cassandra nace de la necesidad de usar modelos de datos diferentes a los usados en las bases de datos relacionales, como por ejemplo con Oracle, MySQL o SQL Server; con el fin de permitir muy bajas latencias, tener millones de datos distribuidos globalmente, leer y escribir desde cualquier lugar, escalar los nodos de manera flexible, poseer una mayor disponibildad frente a fallas, y reducir los costos operacionales de equipos y software.
Las bondades de Cassandra han sido suficientemente probadas por compañías como CERN, Constant Contact , eBay, Netflix, Reddit, Hulu, Instagram, GitHub, GoDaddy, Intuit, The Weather Channel, y 1500 compañías más, que manejan grandes volúmenes de datos diariamente.
Apache Cassandra es actualmente usada por grandes corporaciones para sus aplicaciones, como es el caso de Apple, con 75.000 nodos que guardan más de 10 PB de datos, Netflix con 2500 nodos, almacenando 420 TB o eBay con 100 nodos y 250 TB.
¿Qué hace diferente a Apache Cassandra de una base de datos relacional?
Base de datos relacional | Apache Cassandra |
---|---|
Soporta complejas y anidadas transacciones | Maneja transacciones sencillas |
Los datos llegan desde uno o pocas ubicaciones | Los datos llegan desde muchas ubicaciones |
Unicos puntos de falla, con recuperación | No tiene puntos de falla únicos, siempre está activa |
Esencialmente maneja datos estructurados | Maneja tanto datos estructurados, como no estructurados |
Despliegue en escala vertical | Despliegue en escala horizontal |
Maneja volúmenes moderados de datos | Gestiona altos volúmenes de datos |
Despliegue centralizado | Despliegues descentralizados |
Maneja tasas moderadas de datos de entrada | Maneja altas velocidades en los datos de entrada |
Escritura de datos principalmente en una sola ubicación | La escritura de datos se realiza en muchas ubicaciones |
Soporta escalibidad de escritura | Soporta escalabilidad de lectura y escritura |
Como la fundación Apache se encarga de la administración del código abierto de Cassandra, el soporte es brindado por compañías de terceros.
Cassandra se puede descargar y usar de manera gratuita desde el siguiente enlace http://cassandra.apache.org
Apache Cassandra ofrece los siguientes beneficios:
- Permite la replicación de lectura/escritura entre multi-datecenters geográficamente distribuidos.
- Los nodos pueden crecer o decrecer en forma masiva, porque todos los nodos son iguales.
- Se tiene una disponibilidad continua, tanto para los datos como para los nodos, lo que permite que siempre el sistema esté en funcionamiento.
- Todos los nodos tienen la capacidad de leer y escribir, lo que quiere decir que es una arquitectura descentralizada, evitando cuellos de botella de red.
- Puede manejar diferentes modelos de datos, tantos los relacionales como los no-relacionales, con altas tasas de lectura y escritura.
- La escalabilidad lineal permite aumentar los nodos, sin producir pérdidas en producción, reconociendo inmediatamente la mejora en el desempeño del sistema.
- Puede soportar una fuerte o eventual consistencia de datos a través de un distribuido cluster de nodos.
- Un nodo que falla puede ser restaurado o reemplazado fácilmente.
- Maneja un lenguaje conocido como CQL (Cassandra Query Language), que es una especie de SQL para hacer más sencilla la transición de las personas que vienen del mundo de las bases relacionales.
- Los datos son protegidos fuertemente mediante un sistema de log de transacciones, y con un sistema incluido de respaldo y restauración.
- Permite una alta tasa de compresión sin perder desempeño.
Una de las grandes ventajas de este tipo de arquitecturas de bases de datos, es que puede crecer o decrecer según las necesidades específicas, apoyándose en la infraestructura como servicio que ofrecen empresas como Google, Amazon, Microsoft, IBM, etc., donde el costo del hardware ya es visto como un comodity, que se cobra en la medida en que sea usado o no; reduciendo costos en la gestión de grandes volúmenes de datos.
También te puede interesar ¿Qué es y para que sirve MySQL Database?
Principales aplicaciones de Apache Cassandra:
- Análisis de datos de las redes sociales, lo que les permite hacerle recomendaciones a sus clientes.
- Es usado para el manejo y búsqueda de catálogos de productos de tiendas online como es el caso de eBay.
- Para IoT (internet de las cosas), para el manejo de los datos de multitud de sensores, instalados en diversos lugares.
- Se usa para el manejo de aplicaciones de datos de series temporales, como es el caso de datos del clima, gracias a la velocidad de lectura/escritura que provee.
- Para aplicaciones de mensajería, para almacenar los datos de las conversaciones y demás contenido compartido.
- Se usa para rastrear y monitorear la actividad de los usuarios, por ejemplo al escuchar música, o ver videos, sitios web, etc.
Se puede considerar que el futuro de la gestión de datos está en aplicaciones como ésta, considerando los grandes volúmenes de datos que cada día se generan desde diferentes fuentes, haciendo ya impensable su manejo eficiente con modelos de datos relacionales.
Es por eso recomendable que los profesionales o personas interesadas en temas relacionados con bases de datos, empiecen a voltear sus ojos hacia estas nuevas tecnologías, para tener un mayor campo de acción, y aprovechar las ventajas que estos sistemas ofrecen para gestionar grandes cantidades de datos.
Este artículo hace parte del sistema de divulgación de conocimiento de ITSoftware SAS.