Disponible la base de datos Apache Cassandra 4.0

La organización Apache Software Foundation ha presentado el lanzamiento de la base de datos distribuida Apache Cassandra 4.0, que pertenece a la categoría de sistemas noSQL y está diseñada para crear almacenes altamente escalables y confiables de grandes volúmenes de datos almacenados en forma de matriz asociativa (hash). El lanzamiento de Cassandra 4.0 se considera listo para implementaciones en producción y ya ha sido probado en las infraestructuras de empresas como Amazon, Apple, DataStax, Instaclustr, iland y Netflix con clústeres que cuentan con más de 1000 nodos. El código del proyecto está escrito en Java y se distribuye bajo la licencia Apache 2.0.

Inicialmente, la base de datos Cassandra fue desarrollada por Facebook y en 2009 se pasó bajo el patrocinio de la Fundación Apache. Las soluciones industriales basadas en Cassandra se han desplegado para garantizar el funcionamiento de los servicios de empresas como Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit y Twitter. Por ejemplo, la infraestructura de almacenamiento desplegada por Apple basada en Apache Cassandra cuenta con más de mil clústeres, que incluyen 160,000 nodos y almacenan más de 100 petabytes de datos. Huawei utiliza más de 300 clústeres de Apache Cassandra, que incluyen 30,000 nodos, mientras que Netflix tiene más de 100 clústeres, abarcando 10,000 nodos y procesando más de un billón de solicitudes al día.

La base de datos Cassandra combina un sistema hash completamente distribuido, Dynamo, que proporciona escalabilidad prácticamente lineal a medida que aumenta el volumen de datos. Cassandra utiliza un modelo de almacenamiento basado en familias de columnas (ColumnFamily), que se diferencia de sistemas similares a memcachedb, que solo almacenan datos en pares clave/valor, ofreciendo la posibilidad de organizar el almacenamiento de hashes con múltiples niveles de anidamiento. Para facilitar la interacción con la base de datos, se admite un lenguaje de consulta estructurada llamado CQL (Cassandra Query Language), que se asemeja a SQL, pero está recortado en funcionalidad. Entre las características se incluye el soporte para espacios de nombres y familias de columnas, así como la creación de índices a través de la expresión 'CREATE INDEX'.

La base de datos permite crear almacenes resistentes a fallos: los datos ingresados en la base de datos se replican automáticamente en varios nodos de la red distribuida, que puede abarcar diferentes centros de datos. En caso de falla de un nodo, sus funciones son asumidas dinámicamente por otros nodos. La adición de nuevos nodos al clúster y la actualización de la versión de Cassandra se realizan sin intervención manual adicional y sin reconfiguración de otros nodos. Los controladores con soporte CQL están preparados para los lenguajes Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ y JavaScript (Node.js).

Novedades principales:

  • Se ha mejorado el rendimiento y la escalabilidad. Se ha incrementado la eficiencia del intercambio de datos en formato SSTable (Sorted Strings Table) entre nodos. Se ha optimizado el protocolo de mensajería entre nodos (Internode Messaging Protocol). La velocidad de transmisión de flujos de datos entre nodos ha aumentado hasta 5 veces (principalmente gracias al uso de la técnica Zero Copy y la transmisión completa de SSTables), y el ancho de banda en operaciones de lectura y escritura ha mejorado hasta un 25%. Se ha optimizado el proceso de recuperación incremental. Las demoras debidas a la pausa en la ejecución del recolector de basura se han reducido a unos pocos milisegundos.
  • Se ha añadido soporte para un registro de auditoría que permite rastrear las operaciones de autenticación de usuarios y todas las consultas CQL realizadas.
  • Se ha añadido la posibilidad de mantener un registro binario completo de las consultas, permitiendo almacenar todo el tráfico de solicitudes y respuestas. Se proponen comandos para controlar: «nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog», y se proporciona la utilidad fqltool para el análisis del registro. Se ofrecen comandos para convertir el registro a un formato legible (Dump), comparar instantáneas de actividad (Compare) y reproducir (Replay) para analizar las condiciones con carga real.
  • Se ha añadido soporte para tablas virtuales, que reflejan no los datos almacenados en SSTables, sino la información proporcionada a través de la API (métricas de rendimiento, información de configuración, contenido de caché, detalles de clientes conectados, etc.).
  • Se ha incrementado la eficiencia del almacenamiento de datos en formato comprimido, lo que permite reducir el consumo de espacio en disco y mejorar el rendimiento de las operaciones de lectura.
  • Los datos relacionados con el espacio de claves del sistema (system.*) ahora se colocan por defecto en el primer directorio en lugar de distribuirse por todos los directorios de datos, lo que permite mantener la operatividad del nodo en caso de fallo de uno de los discos adicionales.
  • Se añadió soporte experimental para la replicación transitoria (Transient Replication) y quorum ligeros (Cheap Quorums). Las réplicas transitorias no almacenan todos los datos y utilizan la recuperación incremental para sincronizarse con las réplicas completas. Los quorum ligeros implementan una optimización de las operaciones de escritura, donde la escritura en las réplicas transitorias no se realiza hasta que un conjunto suficiente de réplicas completas esté disponible.
  • Se añadió soporte experimental para Java 11.
  • Se añadió una opción experimental para comparar todos los árboles de Merkle (Merkle Tree). Por ejemplo, habilitar la opción en un clúster con 3 nodos, donde dos réplicas son idénticas y una está obsoleta, resultará en la actualización de la réplica obsoleta utilizando solo una operación de copia de la réplica actual.
  • Se añadieron nuevas funciones currentTimestamp, currentDate, currentTime y currentTimeUUID.
  • Se añadió soporte para operaciones aritméticas en consultas CQL.
  • Se proporciona la posibilidad de realizar operaciones aritméticas entre datos de los tipos 'timestamp'/'date' y 'duration'.
  • Se añadió un modo para previsualizar flujos de datos necesarios para la recuperación (nodetool repair —preview) y la posibilidad de verificar la integridad de los datos recuperados (nodetool repair —validate).
  • En las consultas SELECT se introdujo la posibilidad de procesar elementos de Map y Set.
  • Se añadió soporte para la paralelización de la fase de construcción inicial de las vistas materializadas (cassandra.yaml:concurrent_materialized_view_builders).
  • En el comando 'nodetool cfstats' se añadió soporte para ordenar por métricas específicas y limitar el número de filas devueltas.
  • Se proporcionaron configuraciones para limitar la conexión de usuarios a ciertos centros de datos.
  • Se añadió la posibilidad de limitar la intensidad (rate limit) de las operaciones de creación y eliminación de snapshots.
  • En cqlsh y cqlshlib se implementó el soporte para Python 3 (el soporte para Python 2.7 se mantiene temporalmente).
  • Se ha descontinuado el soporte para la plataforma Windows. Para ejecutar Cassandra en Windows, se recomienda utilizar entornos de Linux basados en el subsistema WSL2 (Windows Subsystem for Linux 2) o sistemas de virtualización.

Reproducir video


Fuente: opennet.ru
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster