Apache Cassandra 4.0 DBMS disponible

La Apache Software Foundation presentó el lanzamiento del DBMS distribuido Apache Cassandra 4.0, que pertenece a la clase de sistemas noSQL y está diseñado para crear un almacenamiento altamente escalable y confiable de grandes cantidades de datos almacenados en forma de una matriz asociativa (hash). La versión Cassandra 4.0 se considera lista para su implementación en producción y ya ha sido probada en las infraestructuras de Amazon, Apple, DataStax, Instaclustr, iland y Netflix con clusters de más de 1000 nodos. El código del proyecto está escrito en Java y se distribuye bajo la licencia Apache 2.0.

Cassandra DBMS fue desarrollado originalmente por Facebook y en 2009 transferido bajo los auspicios de la Fundación Apache. Se han implementado soluciones industriales basadas en Cassandra para impulsar 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 basada en Apache Cassandra implementada por Apple tiene más de mil clústeres, incluidos 160 mil nodos, y almacena más de 100 petabytes de datos. Huawei utiliza más de 300 clústeres de Apache Cassandra, que comprenden 30 mil nodos, y Netflix utiliza más de 100 clústeres, que cubren 10 mil nodos y procesan más de un billón de solicitudes por día.

Cassandra DBMS combina un sistema hash Dynamo totalmente distribuido, que proporciona una escalabilidad casi lineal a medida que aumenta el volumen de datos. Cassandra utiliza un modelo de almacenamiento de datos basado en una familia de columnas (ColumnFamily), que se diferencia de sistemas como memcachedb, que almacenan datos solo en una cadena clave/valor, por la capacidad de organizar el almacenamiento de hashes con varios niveles de anidamiento. Para simplificar la interacción con la base de datos, se admite el lenguaje de consulta estructurado CQL (Cassandra Query Language), que recuerda a SQL, pero con una funcionalidad reducida. Las características incluyen soporte para espacios de nombres y familias de columnas, y la creación de índices utilizando la expresión "CREATE INDEX".

El DBMS le permite crear un almacenamiento resistente a fallas: los datos colocados en la base de datos se replican automáticamente en varios nodos de una red distribuida, que pueden abarcar diferentes centros de datos. Cuando un nodo falla, sus funciones son retomadas sobre la marcha por otros nodos. Agregar nuevos nodos al clúster y actualizar la versión de Cassandra se realiza sobre la marcha, sin intervención manual adicional ni reconfiguración de otros nodos. Los controladores con soporte CQL están preparados para Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ y JavaScript (Node.js).

Principales novedades:

  • Rendimiento y escalabilidad mejorados. Se ha mejorado la eficiencia del intercambio de datos en formato SSTable (Sorted Strings Table) entre nodos. Se ha optimizado el protocolo de mensajería entre nodos. La velocidad de transferencia de flujos de datos entre nodos aumentó hasta 5 veces (principalmente debido al uso de la técnica Zero Copy y la transferencia de SSTables completas), y el rendimiento de las operaciones de lectura y escritura aumentó al 25%. Se ha optimizado el proceso de recuperación incremental. Las latencias debidas a la pausa de la recolección de basura se reducen a unos pocos milisegundos.
  • Se agregó soporte para un registro de auditoría que le permite rastrear las operaciones de autenticación de usuarios y todas las consultas CQL ejecutadas.
  • Se agregó la capacidad de mantener un registro de solicitudes binarias completo, lo que le permite guardar todo el tráfico de solicitudes y respuestas. Para la gestión, se proponen los comandos “nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog” y se proporciona la utilidad fqltool para el análisis de registros. Se proporcionan comandos para convertir el registro en un formato legible (Volcar), comparar sectores de actividad (Comparar) y volver a ejecutar (Reproducir) para realizar análisis que reproduzcan las condiciones inherentes a la carga real.
  • Se agregó soporte para tablas virtuales que no reflejan datos almacenados en SSTables, sino información generada a través de la API (métricas de rendimiento, información de configuración, contenido de caché, información sobre clientes conectados, etc.).
  • Se ha mejorado la eficiencia del almacenamiento de datos comprimidos, reduciendo el consumo de espacio en disco y mejorando el rendimiento de lectura.
  • Los datos relacionados con el espacio de claves del sistema (system.*) ahora se colocan en el primer directorio de forma predeterminada en lugar de distribuirse entre todos los directorios de datos, lo que permite que el nodo permanezca operativo si uno de los discos adicionales falla.
  • Se agregó soporte experimental para replicación transitoria y quórumes baratos. Las réplicas temporales no almacenan todos los datos y utilizan la restauración incremental para ser coherentes con las réplicas completas. Los quórumes ligeros implementan una optimización de escritura en la que no se realizan escrituras en réplicas temporales hasta que esté disponible un conjunto suficiente de réplicas completas.
  • Se agregó soporte experimental para Java 11.
  • Se agregó una opción experimental para comparar todos los árboles Merkle. Por ejemplo, habilitar la opción en un clúster de 3 nodos en el que dos réplicas son idénticas y una está obsoleta dará como resultado una actualización de la réplica obsoleta utilizando solo una operación de copia de la réplica actual.
  • Se agregaron nuevas funciones currentTimestamp, currentDate, currentTime y currentTimeUUID.
  • Se agregó soporte para operaciones aritméticas en consultas CQL.
  • Se proporciona la capacidad de realizar operaciones aritméticas entre datos con los tipos "marca de tiempo"/"fecha" y "duración".
  • Se agregó un modo para obtener una vista previa de los flujos de datos necesarios para la recuperación (reparación de nodetool: vista previa) y la capacidad de verificar la integridad de los datos que se están restaurando (reparación de nodetool: validar).
  • Las consultas SELECT ahora tienen la capacidad de procesar elementos Map y Set.
  • Se agregó soporte para paralelizar la etapa de construcción inicial de vistas materializadas (cassandra.yaml:concurrent_materialized_view_builders).
  • El comando "nodetool cfstats" ha agregado soporte para ordenar por ciertas métricas y limitar el número de filas mostradas.
  • Se proporcionan configuraciones para limitar la conexión del usuario a ciertos centros de datos únicamente.
  • Se agregó la capacidad de limitar la intensidad (límite de velocidad) de las operaciones de creación y eliminación de instantáneas.
  • cqlsh y cqlshlib ahora son compatibles con Python 3 (todavía se admite Python 2.7).
  • Se ha interrumpido el soporte para la plataforma Windows. Para ejecutar Cassandra en Windows, se recomienda utilizar entornos Linux creados sobre la base del subsistema WSL2 (Subsistema de Windows para Linux 2) o sistemas de virtualización.



Fuente: opennet.ru

Añadir un comentario