Este artículo contiene una redacción que promueve el tema de manera subjetiva sin impartir información real .Por favor elimine o reemplace dicha redacción y en lugar de hacer proclamaciones sobre la importancia de un tema, utilice hechos y atribuciones para demostrar esa importancia.( Octubre de 2023 )( Aprenda cómo y cuándo eliminar este mensaje )
Avinash Lakshman, coautor de Dynamo de Amazon , y Prashant Malik desarrollaron Cassandra en Facebook para respaldar la función de búsqueda en la bandeja de entrada. Facebook publicó Cassandra en código abierto en Google Code en julio de 2008 [4] , se convirtió en un proyecto Apache Incubator [5] en marzo de 2009 y el 17 de febrero de 2010 pasó a ser un proyecto de alto nivel. [6]
Los lanzamientos después de la graduación incluyen:
0.6, lanzado el 12 de abril de 2010, agregó soporte para almacenamiento en caché integrado y Apache Hadoop MapReduce . [8]
La versión 0.7, publicada el 8 de enero de 2011, agregó índices secundarios y cambios de esquema en línea. [9]
La versión 0.8, publicada el 2 de junio de 2011, agregó el lenguaje de consulta Cassandra (CQL), tablas de memoria autoajustables y soporte para actualizaciones sin tiempo de inactividad. [10]
La versión 1.0, publicada el 17 de octubre de 2011, agregó compresión integrada, compactación nivelada y mejoró el rendimiento de lectura. [11]
La versión 1.1, publicada el 23 de abril de 2012, agregó cachés de ajuste automático, aislamiento a nivel de fila y compatibilidad con implementaciones mixtas de discos SSD y giratorios. [12]
La versión 1.2, publicada el 2 de enero de 2013, agregó agrupamiento en nodos virtuales, comunicación entre nodos, lotes atómicos y seguimiento de solicitudes. [13]
2.0, lanzado el 4 de septiembre de 2013, agregó transacciones livianas (basadas en el protocolo de consenso de Paxos ), activadores y compactación mejorada.
2.1 lanzado el 10 de septiembre de 2014. [14]
2.2 lanzado el 20 de julio de 2015.
3.0 lanzado el 11 de noviembre de 2015.
Las versiones 3.1 a 3.10 eran lanzamientos mensuales que utilizaban un modelo de lanzamiento tipo tic-tac , en el que los lanzamientos pares proporcionaban nuevas características y correcciones de errores, mientras que los lanzamientos impares solo incluían correcciones de errores. [15]
3.11 se lanzó el 23 de junio de 2017 como una serie de lanzamientos estables 3.11 y corrección de errores del último lanzamiento de funciones tick-tock.
4.0 lanzado el 26 de julio de 2021.
4.1 lanzado el 13 de diciembre de 2022.
4.1.4 lanzado el 14 de febrero de 2024.
5.0 se lanzará el 5 de septiembre de 2024.
Versión
Fecha de lanzamiento original
Última versión
Fecha de lanzamiento
Estado [16]
Old version, no longer maintained:0.6
12 de abril de 2010
0.6.13
18 de abril de 2011
Ya no se mantiene
Old version, no longer maintained:0,7
10 de enero de 2011
0.7.10
31 de octubre de 2011
Ya no se mantiene
Old version, no longer maintained:0,8
03-06-2011
0.8.10
13 de febrero de 2012
Ya no se mantiene
Old version, no longer maintained:1.0
18 de octubre de 2011
1.0.12
04-10-2012
Ya no se mantiene
Old version, no longer maintained:1.1
24 de abril de 2012
1.1.12
27 de mayo de 2013
Ya no se mantiene
Old version, no longer maintained:1.2
02-01-2013
1.2.19
18 de septiembre de 2014
Ya no se mantiene
Old version, no longer maintained:2.0
03-09-2013
2.0.17
21 de septiembre de 2015
Ya no se mantiene
Old version, no longer maintained:2.1
16 de septiembre de 2014
2.1.22
31 de agosto de 2020
Ya no se mantiene
Old version, no longer maintained:2.2
20 de julio de 2015
2.2.19
4 de noviembre de 2020
Ya no se mantiene
Old version, no longer maintained:3.0
09-11-2015
3.0.29
15 de mayo de 2023
Ya no se mantiene
Old version, no longer maintained:3.11
23 de junio de 2017
3.11.15
5 de mayo de 2023
Ya no se mantiene
Old version, yet still maintained:4.0
26 de julio de 2021
4.0.13
2023-05-20
Mantenido hasta la versión 5.1.0
Old version, yet still maintained:4.1
17 de junio de 2022
4.1.6
19-08-2024
Mantenido hasta la versión 5.2.0
Current stable version:5.0
5 de septiembre de 2024
5.0
5 de septiembre de 2024
Última versión. Se mantuvo hasta la versión 5.3.0
Leyenda:
Versión antigua, sin mantenimiento
Versión antigua, aún mantenida
Última versión
Última versión preliminar
Future release
Características principales
Cada nodo del clúster tiene la misma función. No existe un único punto de fallo. Los datos se distribuyen por todo el clúster (por lo que cada nodo contiene datos diferentes), pero no hay un nodo maestro, ya que cada nodo puede atender cualquier solicitud.
Las estrategias de replicación son configurables. [17] Cassandra está diseñado como un sistema distribuido para la implementación de una gran cantidad de nodos en varios centros de datos. Las características clave de la arquitectura distribuida de Cassandra están diseñadas específicamente para la implementación en varios centros de datos, para la redundancia, la conmutación por error y la recuperación ante desastres.
Diseñado para que el rendimiento de lectura y escritura aumente linealmente a medida que se agregan nuevas máquinas, con el objetivo de que no haya tiempos de inactividad ni interrupciones en las aplicaciones.
Cassandra generalmente se clasifica como un sistema AP , lo que significa que la disponibilidad y la tolerancia a la partición generalmente se consideran más importantes que la consistencia en Cassandra. [18] Las escrituras y lecturas ofrecen un nivel ajustable de consistencia , desde "las escrituras nunca fallan" hasta "bloquear para que todas las réplicas sean legibles", con el nivel de quórum en el medio. [19]
Cassandra introdujo el lenguaje de consulta Cassandra (CQL). CQL es una interfaz sencilla para acceder a Cassandra como alternativa al lenguaje de consulta estructurado (SQL) tradicional.
Cassandra gestiona la consistencia final de lecturas, actualizaciones y eliminaciones a través de Tombstones .
Lenguaje de consulta de Cassandra
Cassandra introdujo el lenguaje de consulta Cassandra (CQL). CQL es una interfaz sencilla para acceder a Cassandra, como alternativa al lenguaje de consulta estructurado (SQL) tradicional. CQL añade una capa de abstracción que oculta los detalles de implementación de esta estructura y proporciona sintaxis nativas para colecciones y otras codificaciones comunes. Hay controladores de lenguaje disponibles para Java ( JDBC ), Python (DBAPI2), Node.JS (Datastax), Go (gocql) y C++ . [21]
El espacio de claves en Cassandra es un espacio de nombres que define la replicación de datos entre nodos. Por lo tanto, la replicación se define en el nivel de espacio de claves. A continuación, se muestra un ejemplo de creación de espacio de claves, incluida una familia de columnas en CQL 3.0: [22]
CREAR ESPACIO DE CLAVE MyKeySpace CON REPLICACIÓN = { 'class' : 'SimpleStrategy' , 'replication_factor' : 3 } ;UTILICE MyKeySpace ;CREAR FAMILIACOLUMBRES MyColumns ( id texto , apellido texto , nombre texto , CLAVE PRIMARIA ( id ));INSERTAR EN MisColumnas ( id , apellido , nombre ) VALORES ( '1' , 'Doe' , 'John' );SELECCIONAR * DE MisColumnas ;
Hasta Cassandra 1.0, Cassandra no era consistente a nivel de fila, [23] lo que significa que las inserciones y actualizaciones en la tabla que afectan la misma fila, y que se procesan aproximadamente al mismo tiempo, pueden afectar las columnas no clave de manera inconsistente. Una actualización puede afectar una columna mientras que otra afecta a la otra, lo que da como resultado conjuntos de valores dentro de la fila que nunca se especificaron ni se pretendieron. Cassandra 1.1 resolvió este problema al introducir el aislamiento a nivel de fila . [24]
Cassandra no es compatible con Windows a partir de la versión 4, consulte el problema CASSANDRA-16171. [25]
Lápidas
Se sabe que los marcadores de eliminación llamados "lápidas" provocan una degradación del rendimiento en cargas de trabajo de eliminación intensivas. [26] Las lápidas son comunes en muchas bases de datos y este problema no es exclusivo de Cassandra.
Modelo de datos
Cassandra es un almacén de columnas amplio y, como tal, esencialmente un híbrido entre un sistema de gestión de bases de datos de clave-valor y uno tabular. Su modelo de datos es un almacén de filas particionadas con consistencia ajustable. [19] Las filas se organizan en tablas ; el primer componente de la clave principal de una tabla es la clave de partición; dentro de una partición, las filas se agrupan por las columnas restantes de la clave. [27] Otras columnas pueden indexarse por separado de la clave principal. [28]
Se pueden crear, eliminar o modificar tablas en tiempo de ejecución sin bloquear actualizaciones y consultas. [29]
Cassandra no puede ejecutar uniones ni subconsultas . En cambio, Cassandra enfatiza la desnormalización a través de funciones como las colecciones. [30]
Una familia de columnas (denominada "tabla" desde CQL 3) se parece a una tabla en un RDBMS (sistema de gestión de bases de datos relacionales). Las familias de columnas contienen filas y columnas. Cada fila se identifica de forma única mediante una clave de fila. Cada fila tiene varias columnas, cada una de las cuales tiene un nombre, un valor y una marca de tiempo. A diferencia de una tabla en un RDBMS, las diferentes filas de la misma familia de columnas no tienen que compartir el mismo conjunto de columnas, y se puede agregar una columna a una o varias filas en cualquier momento. [31]
Cada clave en Cassandra corresponde a un valor que es un objeto. Cada clave tiene valores como columnas, y estas columnas se agrupan en conjuntos llamados familias de columnas. De esta forma, cada clave identifica una fila de un número variable de elementos. Estas familias de columnas podrían considerarse entonces como tablas. Una tabla en Cassandra es un mapa multidimensional distribuido indexado por una clave. Además, las aplicaciones pueden especificar el orden de clasificación de las columnas dentro de una familia de supercolumnas o columnas simples.
Gestión y seguimiento
Cassandra es un sistema basado en Java que se puede administrar y monitorear a través de Java Management Extensions (JMX). Por ejemplo, la utilidad Nodetool compatible con JMX se puede utilizar para administrar un clúster de Cassandra. [32] Nodetool también ofrece una serie de comandos para devolver métricas de Cassandra relacionadas con el uso del disco, la latencia, la compactación, la recolección de basura y más. [33]
Desde el lanzamiento de Cassandra 2.0.2 en 2013, las medidas de varias métricas se producen a través del marco de métricas Dropwizard, [34] y se pueden consultar a través de JMX usando herramientas como JConsole o pasar a sistemas de monitoreo externos a través de complementos de informes compatibles con Dropwizard. [35]
^ https://github.com/apache/cassandra/releases/tag/cassandra-5.0.2. {{cite web}}: Falta o está vacío |title=( ayuda )
^ Casares, Joaquín (5 de noviembre de 2012). "Replicación de múltiples centros de datos en Cassandra". DataStax . Consultado el 25 de julio de 2013 . Los conceptos innatos de los centros de datos de Cassandra son importantes, ya que permiten ejecutar múltiples cargas de trabajo en varios centros de datos...
^ "Descripción general de la documentación de Apache Cassandra" . Consultado el 21 de enero de 2021 .
^ Hamilton, James (12 de julio de 2008). «Facebook lanza Cassandra como código abierto» . Consultado el 4 de junio de 2009 .
^ "¿Es esto lo que está de moda ahora?". Mail-archive.com. 2 de marzo de 2009. Archivado desde el original el 25 de abril de 2010. Consultado el 29 de marzo de 2010 .
^ "Cassandra es un proyecto de nivel superior de Apache". Mail-archive.com. 18 de febrero de 2010. Archivado desde el original el 28 de marzo de 2010. Consultado el 29 de marzo de 2010 .
^ "El significado detrás del nombre de Apache Cassandra". Archivado del original el 1 de noviembre de 2016 . Consultado el 19 de julio de 2016 . Apache Cassandra recibe su nombre de la profetisa mitológica griega Casandra. [...] Debido a su belleza, Apolo le concedió la capacidad de profetizar. [...] Cuando Casandra de Troya rechazó a Apolo, este la maldijo para que no creyeran en ninguna de sus predicciones ni en las de sus descendientes. [...] Cassandra es el Oráculo maldito[.]
^ "La Apache Software Foundation anuncia la versión 0.6 de Apache Cassandra: blog de la Apache Software Foundation". 13 de abril de 2010. Consultado el 5 de enero de 2016 .
^ "La Apache Software Foundation anuncia Apache Cassandra 0.7: blog de la Apache Software Foundation". 11 de enero de 2011. Archivado desde el original el 4 de marzo de 2016. Consultado el 5 de enero de 2016 .
^ Eric Evans. «[Cassandra-user] [RELEASE] 0.8.0». Archivado desde el original el 8 de junio de 2015. Consultado el 5 de enero de 2016 .
^ "Cassandra 1.0.0. Está lista para la empresa". InfoQ . Consultado el 5 de enero de 2016 .
^ "La Apache Software Foundation anuncia Apache Cassandra™ v1.1 : El blog de la Apache Software Foundation". 24 de abril de 2012 . Consultado el 5 de enero de 2016 .
^ "La Apache Software Foundation anuncia Apache Cassandra™ v1.2 : El blog de la Apache Software Foundation". apache.org . 2 de enero de 2013 . Consultado el 11 de diciembre de 2014 .
^ Sylvain Lebresne (10 de septiembre de 2014). "[VOTACIÓN EXITOSA] Lanzamiento de Apache Cassandra 2.1.0". mail-archive.com . Consultado el 11 de diciembre de 2014 .
^ "Cassandra 2.2, 3.0 y más allá". 16 de junio de 2015. Archivado desde el original el 20 de abril de 2016. Consultado el 22 de abril de 2016 .
^ "Lanzamientos de Cassandra Server". cassandra.apache.org . Consultado el 15 de diciembre de 2015 .
^ "Implementación de Cassandra en varios centros de datos". DataStax . Consultado el 11 de diciembre de 2014 .
^ "El teorema CAP - Aprende Cassandra". teddyma.gitbooks.io .
^ ab DataStax (15 de enero de 2013). «Acerca de la consistencia de los datos». Archivado desde el original el 26 de julio de 2013. Consultado el 25 de julio de 2013 .
^ "Controlador DataStax C/C++ para Apache Cassandra". DataStax . Consultado el 15 de diciembre de 2014 .
^ "CQL". Archivado desde el original el 13 de enero de 2016 . Consultado el 5 de enero de 2016 .
^ "WAT - Cassandra: Consistencia a nivel de fila #$@&%*! - datanerds.io". datanerds.io . Archivado desde el original el 26 de noviembre de 2016 . Consultado el 28 de noviembre de 2016 .
^ Lebresne, Sylvain (21 de febrero de 2012). "Próximamente en Cassandra 1.1: aislamiento a nivel de fila". DataStax: plataforma de datos siempre activa | NoSQL | Apache Cassandra . Consultado el 18 de julio de 2018 .
^ "Eliminar scripts de Windows". Rastreador de problemas de Cassandra . 4 de abril de 2023. Consultado el 4 de abril de 2023 .
^ Rodríguez, Alain (27 de julio de 2016). "Acerca de los borrados y las lápidas en Casandra".
^ Ellis, Jonathan (15 de febrero de 2012). "Esquema en Cassandra 1.1". DataStax . Consultado el 25 de julio de 2013 .
^ Ellis, Jonathan (3 de diciembre de 2010). "Novedades de Cassandra 0.7: índices secundarios". DataStax . Consultado el 25 de julio de 2013 .
^ Ellis, Jonathan (2 de marzo de 2012). "El renacimiento de la gestión de esquemas en Cassandra 1.1". DataStax . Consultado el 25 de julio de 2013 .
^ Lebresne, Sylvain (5 de agosto de 2012). "Coming in 1.2: Collections support in CQL3" (Próximamente en la versión 1.2: compatibilidad con colecciones en CQL3). DataStax . Consultado el 25 de julio de 2013 .
^ DataStax. "Documentación de Apache Cassandra 0.7 - Familias de columnas". Documentación de Apache Cassandra 0.7 . Consultado el 29 de octubre de 2012 .
^ "NodeTool". Wiki de Cassandra . Archivado desde el original el 13 de enero de 2016. Consultado el 5 de enero de 2016 .
^ "Cómo monitorear las métricas de rendimiento de Cassandra". Datadog. 3 de diciembre de 2015. Consultado el 5 de enero de 2016 .
^ "Métricas". Wiki Cassandra . Archivado desde el original el 12 de noviembre de 2015. Consultado el 5 de enero de 2016 .
^ "Monitoreo". Documentación de Cassandra . Consultado el 1 de febrero de 2018 .
Bibliografía
Carpenter, Jeff; Hewitt, Eben (24 de julio de 2016). Cassandra: The Definitive Guide (2.ª ed.). O'Reilly Media . p. 370. ISBN978-1-4919-3366-4.
Wikimedia Commons alberga una categoría multimedia sobre Apache Cassandra .
Wikiversidad tiene recursos de aprendizaje sobre Big Data/Cassandra
Lakshman, Avinash (25 de agosto de 2008). "Cassandra: un sistema de almacenamiento estructurado en una red P2P". Ingeniería @ Notas de Facebook . Consultado el 17 de junio de 2014 .
"El proyecto Apache Cassandra". Forest Hill, Maryland, EE. UU.: The Apache Software Foundation . Consultado el 17 de junio de 2014 .
"Project Wiki". Forest Hill, Maryland, EE. UU.: The Apache Software Foundation . Archivado desde el original el 14 de junio de 2014. Consultado el 17 de junio de 2014 .
Hewitt, Eben (1 de diciembre de 2010). "Adopción de Apache Cassandra". infoq.com . InfoQ, C4Media Inc . Consultado el 17 de junio de 2014 .
Lakshman, Avinash; Malik, Prashant (15 de agosto de 2009). "Cassandra - A Decentralized Structured Storage System" (PDF) . cs.cornell.edu . Los autores son de Facebook . Consultado el 17 de junio de 2014 .
Ellis, Jonathan (29 de julio de 2009). "Lo que todo desarrollador debería saber sobre la escalabilidad de bases de datos". slideshare.net . Consultado el 17 de junio de 2014 .De la charla de OSCON 2009 sobre RDBMS vs. Dynamo, Bigtable y Cassandra.
"Cassandra-RPM: compilación de Red Hat Package Manager (RPM) para el proyecto Apache Cassandra". code.google.com . Menlo Park, CA, EE. UU.: Google Project Hosting . Consultado el 17 de junio de 2014 .
Roth, Gregor (14 de octubre de 2012). "Cassandra con el ejemplo: la ruta de las solicitudes de lectura y escritura". slideshare.net . Consultado el 17 de junio de 2014 .
Mansoor, Umer (4 de noviembre de 2012). "Una colección de tutoriales de Cassandra" . Consultado el 8 de febrero de 2015 .
Bushik, Sergey (22 de octubre de 2012). "Una comparación independiente del proveedor de bases de datos NoSQL: Cassandra, HBase, MongoDB, Riak". NetworkWorld . Framingham, MA, EE. UU. y Staines, Middlesex, Reino Unido: IDG . Archivado desde el original el 28 de mayo de 2014 . Consultado el 17 de junio de 2014 .