Apache Cassandra se trata de un software NoSQL distribuido y basado en un modelo de almacenamiento de «clave-valor», de código abierto que está escrita en Java. Permite grandes volúmenes de datos en forma distribuida. Por ejemplo, lo usa Twitter para su plataforma. Su objetivo principal es la escalabilidad lineal y la disponibilidad. La arquitectura distribudores de Cassandra está basada en una serie de nodos iguales que se comunican con un protocolo P2P con lo que la redundancia es máxima. Esta soportada por la Apache Software Fundation.
Cassandra ofrece soporte robusto para múltiples Centros de datos,
con replicación asincrónica sin necesidad de un servidor maestro, lo que permiten operaciones de baja latencia para todos los clientes.Cassandra también ofrece un gran rendimiento. En 2012, investigadores de la Universidad de Toronto que estudian los sistemas NoSQL concluyeron que "En términos de escalabilidad, hay un claro ganador a través de nuestros experimentos. Cassandra logra el más alto rendimiento para el número máximo de nodos en todos los experimentos", aunque "esto tiene como precio una alta latencia de escritura y lectura".
El modelo de datos de Cassandra consiste en particionar las filas, que son reorganizadas en tablas .
Las claves primarias de cada tabla tiene un primer componente que es la clave de partición. Dentro de una partición, las filas son agrupadas por las columnas restantes de la clave. Las demás columnas pueden ser indexadas por separado de la clave primaria. Las tablas se pueden crear, eliminar y alterar en tiempo de ejecución sin bloquear actualizaciones y consultas.
Cassandra no soporta la sentencia JOIN o subqueries, sino que enfatiza en la desnormalización a través de características como colecciones.
En las versiones iniciales utilizaba un API propia para poder acceder a la base de datos. En los últimos tiempos están apostando por un lenguaje denominado CQL (Cassandra Query Language, no confundir con Contextual Query Language) que posee una sintaxis similar a SQL aunque con muchas menos funcionalidades. Esto hace que iniciarse en el uso de la misma sea más sencillo. Permite acceder en Java desde JDBC.
Apache Cassandra fue inicialmente desarrollada en Facebook para impulsar las búsqueda en la bandeja de entrada por Avinash Lakshman (uno de los autores de Amazon's Dynamo) y Prashant Malik. Fue lanzada como un proyecto open source de Google code en julio de 2008. En marzo de 2009, se transformó en un proyecto de Apache Incubator. El 17 de febrero de 2010 se graduó como un proyecto de alto nivel.
Publicaciones después de la graduación:
Un ejemplo posible de consulta utilizando consistencia es el siguiente: SELECT * FROM users WHERE state='TX' USING CONSISTENCY QUORUM;
Evita el retardo de comunicación entre data-centers.
Sistema de archivos En la actualidad, Cassandra es compatible con HDFS (Hadoop Distributed File System), sin embargo, DataStax que es la compañía que da soporte y distribuye a Apache Cassandra a través de contribuciones abiertas, creó Cassandra File System (CFS) que tiene como objetivo ser el reemplazo de HDFS. Las principales diferencias se encuentran en los daemons llamados "Nombre de Nodo", "Nombre de Nodo Secundario" y "Nodo de Datos". El motivo de este cambio es hacer más fácil el manejo de archivos en Cassandra.
Las principales ventajas de CFS son:
• Maneja una arquitectura distribuida.
• Ideal para volúmenes masivos de información, separados en conjuntos de tamaño reducido.
• Los archivos que se manejen en Cassandra, se almacenarán en varios nodos para prevenir posibles fallas o pérdidas de información.
• Es compatible con otras herramientas, como MapReduce, Apache Spark que permiten trabajar el Big Data.
• Dentro del teorema de CAP, ofrece disponibilidad (A) y tolerancia a particiones (P).
Entonces, en general, Cassandra File System no es ideal para manejar grandes volúmenes de información en conjuntos grandes, sino en conjuntos pequeños. Y por otro lado, es excelente para datos almacenados de manera estructurada.
Cassandra es esencialmente un híbrido entre un modelo Clave-Valor y una base de datos Tabular (Orientado a columnas).
La familia de columnas (llamada “Tabla” desde CQL3) se asemeja a una tabla en un RDBMS. Estas contienen filas y columnas. Cada fila tiene múltiples columnas, cada una de estas tiene a su vez un nombre, un valor y un timestamp. A diferencia de una tabla en un RDBMS, diferentes filas en una misma familia de columnas, no tiene por qué compartir el mismo conjunto de columnas, y además, una columna puede ser añadida a una o a múltiples filas en cualquier momento. Cada clave en Cassandra, corresponde a un valor que es a su vez un objeto. Cada clave tiene valores como columnas, y las columnas son agrupadas en sets que son llamados familias de columnas. Así, cada clave identifica una fila con un número variable de elementos. Estas familias de columnas, pueden ser consideradas como tablas. Una tabla en Cassandra es un mapa multi-dimensional distribuido, indexado por una clave. Además, las aplicaciones pueden especificar el orden de las columnas dentro de una Súper Columna, o una Familia de Columnas Simples.
Cuando se diseña el clúster para Apache Cassandra, un punto importante es seleccionar la partición correcta. Existen dos tipos de partición:
Apache Cassandra es un proyecto de Apache Software Foundation, por lo que tiene una Apache License (version 2.0).
Cassandra en un sistema a base de Java que puede ser administrado y monitoreado con Java Management Extensions (JMX). Nodetool, por ejemplo, puede ser usado para administrar un clúster de Cassandra (agregando nodos a un aro, etc.). Nodetool también ofrece varias comandos para conseguir métricas de Casandra perteneciente a uso de disco, estado latente, compactación, recolección de basura, entre otras.
Facebook cambió su desarrollo de la versión preliminar de Apache Cassandra a finales de 2010, cuando reemplazaron la búsqueda en la bandeja de entrada por su plataforma de mensajería. En 2012, Facebook comenzó a usar Apache Cassandra en Instagram.
Escribe un comentario o lo que quieras sobre Apache Cassandra (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)