Casandra apache

Free and open-source database management system

Casandra apache
Autor(es) original(es)Avinash Lakshman, Prashant Malik / Facebook
Desarrollador(es)Fundación de software Apache
Lanzamiento inicialJulio de 2008 ; hace 16 años (2008-07)
Versión estable
5.0.2 [1]  / 19 de octubre de 2024 ; hace 3 días (October 19, 2024)
Repositorio
  • gitbox.apache.org/repos/asf/cassandra.git
Escrito enJava
Sistema operativoMultiplataforma
Disponible enInglés
Tipo Base de datos NoSQL , almacén de datos
LicenciaLicencia Apache 2.0
Sitio webcassandra.apache.org 

Apache Cassandra es un sistema de gestión de bases de datos NoSQL , distribuido , de código abierto y gratuito , con almacenamiento en columnas anchas , diseñado para manejar grandes cantidades de datos en múltiples servidores de productos básicos , lo que proporciona disponibilidad sin un único punto de falla . Cassandra admite clústeres y la expansión de múltiples centros de datos [2] con replicación asincrónica y sin maestro. Permite operaciones de baja latencia para todos los clientes e implementa las técnicas de replicación y almacenamiento distribuido Dynamo de Amazon combinadas con el modelo de motor de almacenamiento y datos Bigtable de Google . [3]

Historia

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 desarrolladores de Facebook bautizaron su base de datos con el nombre de la profetisa mitológica troyana Casandra , con alusiones clásicas a una maldición sobre un oráculo . [7]

Lanzamientos

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ónFecha de lanzamiento originalÚltima versiónFecha de lanzamientoEstado [16]
Old version, no longer maintained:0.612 de abril de 20100.6.1318 de abril de 2011Ya no se mantiene
Old version, no longer maintained:0,710 de enero de 20110.7.1031 de octubre de 2011Ya no se mantiene
Old version, no longer maintained:0,803-06-20110.8.1013 de febrero de 2012Ya no se mantiene
Old version, no longer maintained:1.018 de octubre de 20111.0.1204-10-2012Ya no se mantiene
Old version, no longer maintained:1.124 de abril de 20121.1.1227 de mayo de 2013Ya no se mantiene
Old version, no longer maintained:1.202-01-20131.2.1918 de septiembre de 2014Ya no se mantiene
Old version, no longer maintained:2.003-09-20132.0.1721 de septiembre de 2015Ya no se mantiene
Old version, no longer maintained:2.116 de septiembre de 20142.1.2231 de agosto de 2020Ya no se mantiene
Old version, no longer maintained:2.220 de julio de 20152.2.194 de noviembre de 2020Ya no se mantiene
Old version, no longer maintained:3.009-11-20153.0.2915 de mayo de 2023Ya no se mantiene
Old version, no longer maintained:3.1123 de junio de 20173.11.155 de mayo de 2023Ya no se mantiene
Old version, yet still maintained:4.026 de julio de 20214.0.132023-05-20Mantenido hasta la versión 5.1.0
Old version, yet still maintained:4.117 de junio de 20224.1.619-08-2024Mantenido hasta la versión 5.2.0
Current stable version: 5.05 de septiembre de 20245.05 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.
  • Los datos se replican automáticamente en varios nodos para lograr tolerancia a fallas . Se admite la replicación en varios centros de datos. Los nodos con fallas se pueden reemplazar sin tiempo de inactividad .
  • 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 tiene integración con Hadoop y compatibilidad con MapReduce . También es compatible con Apache Pig y Apache Hive . [20]
  • 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 ;   

Lo que da:

id | apellido | nombre----+----------+---------- 1 | Ciervo | Juan(1 filas)

Problemas conocidos

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]

Véase también

Referencias

  1. ^ https://github.com/apache/cassandra/releases/tag/cassandra-5.0.2. {{cite web}}: Falta o está vacío |title=( ayuda )
  2. ^ 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...
  3. ^ "Descripción general de la documentación de Apache Cassandra" . Consultado el 21 de enero de 2021 .
  4. ^ Hamilton, James (12 de julio de 2008). «Facebook lanza Cassandra como código abierto» . Consultado el 4 de junio de 2009 .
  5. ^ "¿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 .
  6. ^ "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 .
  7. ^ "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[.]
  8. ^ "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 .
  9. ^ "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 .
  10. ^ 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 .
  11. ^ "Cassandra 1.0.0. Está lista para la empresa". InfoQ . Consultado el 5 de enero de 2016 .
  12. ^ "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 .
  13. ^ "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 .
  14. ^ 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 .
  15. ^ "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 .
  16. ^ "Lanzamientos de Cassandra Server". cassandra.apache.org . Consultado el 15 de diciembre de 2015 .
  17. ^ "Implementación de Cassandra en varios centros de datos". DataStax . Consultado el 11 de diciembre de 2014 .
  18. ^ "El teorema CAP - Aprende Cassandra". teddyma.gitbooks.io .
  19. ^ 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 .
  20. ^ "Soporte de Hadoop" Archivado el 16 de noviembre de 2017 en el artículo Wayback Machine en la wiki de Cassandra
  21. ^ "Controlador DataStax C/C++ para Apache Cassandra". DataStax . Consultado el 15 de diciembre de 2014 .
  22. ^ "CQL". Archivado desde el original el 13 de enero de 2016 . Consultado el 5 de enero de 2016 .
  23. ^ "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 .
  24. ^ 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 .
  25. ^ "Eliminar scripts de Windows". Rastreador de problemas de Cassandra . 4 de abril de 2023. Consultado el 4 de abril de 2023 .
  26. ^ Rodríguez, Alain (27 de julio de 2016). "Acerca de los borrados y las lápidas en Casandra".
  27. ^ Ellis, Jonathan (15 de febrero de 2012). "Esquema en Cassandra 1.1". DataStax . Consultado el 25 de julio de 2013 .
  28. ^ Ellis, Jonathan (3 de diciembre de 2010). "Novedades de Cassandra 0.7: índices secundarios". DataStax . Consultado el 25 de julio de 2013 .
  29. ^ 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 .
  30. ^ 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 .
  31. ^ 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 .
  32. ^ "NodeTool". Wiki de Cassandra . Archivado desde el original el 13 de enero de 2016. Consultado el 5 de enero de 2016 .
  33. ^ "Cómo monitorear las métricas de rendimiento de Cassandra". Datadog. 3 de diciembre de 2015. Consultado el 5 de enero de 2016 .
  34. ^ "Métricas". Wiki Cassandra . Archivado desde el original el 12 de noviembre de 2015. Consultado el 5 de enero de 2016 .
  35. ^ "Monitoreo". Documentación de Cassandra . Consultado el 1 de febrero de 2018 .

Bibliografía

  • 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 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Apache_Cassandra&oldid=1252761800"