stringtranslate.com

Casandra apache

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:

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

Enlaces externos