stringtranslate.com

apache casandra

Cassandra es un sistema de gestión de bases de datos NoSQL , gratuito , de código abierto , distribuido y de almacén de columnas amplias , diseñado para manejar grandes cantidades de datos en muchos servidores básicos , proporcionando alta disponibilidad sin un único punto de error . Cassandra ofrece soporte para clústeres que abarcan múltiples centros de datos, [2] con replicación asíncrona sin maestro que permite operaciones de baja latencia para todos los clientes. Cassandra fue diseñada para implementar una combinación de 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, uno de los autores de Dynamo de Amazon , y Prashant Malik desarrollaron inicialmente Cassandra en Facebook para potenciar la función de búsqueda en la bandeja de entrada de Facebook. Facebook lanzó Cassandra como un proyecto de código abierto en código de Google en julio de 2008. [4] En marzo de 2009, se convirtió en un proyecto de Apache Incubator. [5] El 17 de febrero de 2010, se graduó como proyecto de alto nivel. [6]

Los desarrolladores de Facebook nombraron su base de datos en honor a la profeta mitológica troyana Cassandra , con alusiones clásicas a una maldición sobre un oráculo . [7]

Lanzamientos

Los lanzamientos después de la graduación incluyen

Principales características

Repartido
Cada nodo del clúster tiene la misma función. No existe un único punto de fracaso. Los datos se distribuyen en todo el clúster (por lo que cada nodo contiene datos diferentes), pero no hay un maestro ya que cada nodo puede atender cualquier solicitud.
Admite replicación y replicación de múltiples centros de datos
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 múltiples centros de datos. Las características clave de la arquitectura distribuida de Cassandra están diseñadas específicamente para la implementación de múltiples centros de datos, para redundancia, conmutación por error y recuperación ante desastres.
Escalabilidad
Diseñado para que el rendimiento de lectura y escritura aumente linealmente a medida que se agregan nuevas máquinas, con el objetivo de no producir tiempos de inactividad ni interrupciones en las aplicaciones.
Tolerante a fallos
Los datos se replican automáticamente en varios nodos para lograr tolerancia a fallos . Se admite la replicación en múltiples centros de datos. Los nodos defectuosos se pueden reemplazar sin tiempo de inactividad.
Consistencia sintonizable
Cassandra generalmente se clasifica como un sistema AP , lo que significa que la disponibilidad y la tolerancia de partición generalmente se consideran más importantes que la coherencia en Cassandra. [18] Las escrituras y lecturas ofrecen un nivel ajustable de coherencia , desde "las escrituras nunca fallan" hasta "bloque para que todas las réplicas sean legibles", con el nivel de quórum en el medio. [19]
Soporte para MapReduce
Cassandra tiene integración de Hadoop , con soporte MapReduce . También hay soporte para Apache Pig y Apache Hive . [20]
Lenguaje de consulta
Cassandra presentó el lenguaje de consulta Cassandra (CQL). CQL es una interfaz sencilla para acceder a Cassandra, como alternativa al tradicional lenguaje de consulta estructurado (SQL).
Consistencia eventual
Cassandra gestiona la coherencia final de las lecturas, actualizaciones y eliminaciones a través de Tombstones .

Lenguaje de consulta Cassandra

Cassandra presentó el lenguaje de consulta Cassandra (CQL). CQL es una interfaz sencilla para acceder a Cassandra, como alternativa al tradicional lenguaje de consulta estructurado (SQL). CQL agrega 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. Los controladores de lenguaje están 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 a nivel de espacio de claves. A continuación se muestra un ejemplo de creación de espacios de claves, incluida una familia de columnas en CQL 3.0: [22]

CREAR ESPACIO DE CLAVE MyKeySpace CON REPLICACIÓN = { 'clase' : 'SimpleStrategy' , 'factor_replicación' : 3 } ;             UTILICE MyKeySpace ; CREAR COLUMNFAMILIA MisColumnas ( texto de identificación , texto de apellido , texto de nombre , CLAVE PRIMARIA ( identificación ));          INSERTAR EN MisColumnas ( id , apellido , nombre ) VALORES ( '1' , 'Doe' , 'John' );         SELECCIONAR * DE MisColumnas ;   

Lo que da:

identificación | apellido | nombre de pila----+----------+---------- 1 | gama | John(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 que no son clave de manera inconsistente. Una actualización puede afectar a 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 introduciendo 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 "Tombstones" causan una grave degradación del rendimiento. [26]

Modelo de datos

Cassandra es un almacén de columnas amplias y, como tal, esencialmente un híbrido entre un sistema de gestión de bases de datos tabular y de valor-clave. Su modelo de datos es un almacén de filas particionado con coherencia ajustable. [19] Las filas están organizadas 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]

Las tablas se pueden crear, eliminar y modificar en tiempo de ejecución sin bloquear actualizaciones ni consultas. [29]

Cassandra no puede realizar uniones ni subconsultas . Más bien, Cassandra enfatiza la desnormalización a través de características como las colecciones. [30]

Una familia de columnas (llamada "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, valor y una marca de tiempo. A diferencia de una tabla en un RDBMS, 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 las columnas se agrupan en conjuntos llamados familias de columnas. Así, 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 súper columnas 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). La utilidad nodetool compatible con JMX , por ejemplo, se puede utilizar para administrar un clúster de Cassandra (agregar nodos a un anillo, drenar nodos, desmantelar nodos, etc.). [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 Cassandra 2.0.2 en 2013, las medidas de varias métricas se producen a través del marco de métricas de Dropwizard, [34] y pueden consultarse a través de JMX usando herramientas como JConsole o pasarse a sistemas de monitoreo externos a través de complementos de informes compatibles con Dropwizard. [35]

Ver también

Referencias

  1. ^ Error: no se puede mostrar la referencia correctamente. Consulte la documentación para obtener más detalles.
  2. ^ Casares, Joaquín (5 de noviembre de 2012). "Replicación de múltiples centros de datos en Cassandra". DatosStax . Consultado el 25 de julio de 2013 . Los conceptos innatos de centro de datos de Cassandra son importantes ya que permiten ejecutar múltiples cargas de trabajo en múltiples 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 este el nuevo atractivo ahora?". Archivo de correo.com. 2009-03-02. Archivado desde el original el 25 de abril de 2010 . Consultado el 29 de marzo de 2010 .
  6. ^ "Cassandra es un proyecto de alto nivel de Apache". Archivo de correo.com. 2010-02-18. 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 desde el original el 1 de noviembre de 2016 . Consultado el 19 de julio de 2016 . Apache Cassandra lleva el nombre de la profeta mitológica griega Cassandra. [...] Por su belleza Apolo le concedió la capacidad de profetizar. [...] Cuando Casandra de Troya rechazó a Apolo, él la maldijo para que no creyeran todas sus predicciones y las de sus descendientes. [...] Casandra 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 . Consultado el 5 de enero de 2016 .
  10. ^ Eric Evans. "[Cassandra-usuario] [LANZAMIENTO] 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: 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: 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). "[VOTO ÉXITO] Lanzamiento de Apache Cassandra 2.1.0". correo-archivo.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 del servidor Cassandra". cassandra.apache.org . Consultado el 15 de diciembre de 2015 .
  17. ^ "Implementación de Cassandra en varios centros de datos". DatosStax . Consultado el 11 de diciembre de 2014 .
  18. ^ "El teorema CAP: aprenda Cassandra". teddyma.gitbooks.io .
  19. ^ ab DataStax (15 de enero de 2013). "Acerca de la coherencia 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 de Wayback Machine en la wiki de Cassandra.
  21. ^ "Controlador DataStax C/C++ para Apache Cassandra". DatosStax . 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: Coherencia 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 de nivel de fila". DataStax: plataforma de datos siempre activa | No SQL | Apache Casandra . Consultado el 18 de julio de 2018 .
  25. ^ "Eliminar secuencias de comandos de Windows". Rastreador de problemas de Cassandra . 2023-04-04 . Consultado el 4 de abril de 2023 .
  26. ^ Rodríguez, Alain (27 de julio de 2016). "Acerca de las eliminaciones y las lápidas en Cassandra".
  27. ^ Ellis, Jonathan (15 de febrero de 2012). "Esquema en Cassandra 1.1". DatosStax . Consultado el 25 de julio de 2013 .
  28. ^ Ellis, Jonathan (3 de diciembre de 2010). "Novedades de Cassandra 0.7: índices secundarios". DatosStax . 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". DatosStax . Consultado el 25 de julio de 2013 .
  30. ^ Lebresne, Sylvain (5 de agosto de 2012). "Próximamente en 1.2: compatibilidad con colecciones en CQL3". DatosStax . Consultado el 25 de julio de 2013 .
  31. ^ DatosStax. "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. ^ "Herramienta de nodo". Wiki Casandra . 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 desempeño de Cassandra". Perro de datos. 3 de diciembre de 2015 . Consultado el 5 de enero de 2016 .
  34. ^ "Métricas". Wiki Casandra . Archivado desde el original el 12 de noviembre de 2015 . Consultado el 5 de enero de 2016 .
  35. ^ "Monitoreo". Documentación de Casandra . Consultado el 1 de febrero de 2018 .

Bibliografía

enlaces externos