Valkey 8.0, una bifurcación del sistema de gestión de bases de datos Redis creada después de que el código fuente de Redis se convirtiera a una licencia propietaria, ha sido lanzada. El proyecto se está desarrollando en una plataforma neutral bajo los auspicios de la organización Linux Fundación, con contribuciones de desarrolladores de empresas como Amazon, Google, Oracle, Ericsson y Snap. Entre los desarrolladores de Valkey se encuentra Madelyn Olson, antigua mantenedora de Redis. El código del proyecto está escrito en C y se distribuye bajo una licencia BSD. El trabajo cuenta con soporte en Linux, macOS, OpenBSD, NetBSD y FreeBSD.
A partir de la versión 7.4, el DBMS de Redis se ha transferido al uso de las licencias RSALv2 (Redis Source Available License v2) y SSPLv1 (Server Side Public License v1), lo que genera discriminación contra ciertas categorías de usuarios, lo que no les permite considerarse abierto o gratuito. En cuanto a sus objetivos, ambas licencias son similares entre sí, y la diferencia es que la licencia SSPL se basa en la licencia copyleft AGPLv3 y la licencia RSAL se basa en la licencia BSD permisiva. La licencia RSAL permite utilizar, modificar, distribuir e integrar el código en aplicaciones, excepto cuando estas aplicaciones sean comerciales o se utilicen para proporcionar servicios gestionados de pago). La licencia SSPL contiene además el requisito de entregar bajo la misma licencia no solo el código de la aplicación en sí, sino también el código fuente de todos los componentes involucrados en la prestación del servicio en la nube.
Valkey y Redis proporcionan funciones para almacenar datos en formato clave/valor, ampliadas con soporte para formatos de datos estructurados como listas, hashes y conjuntos, y la capacidad de ejecución en paralelo. servidor Scripts de controlador basados en Lua. La base de datos se almacena en memoria y se sincroniza con la versión del disco o se refleja en el registro de cambios del disco, lo que garantiza la integridad de los datos en caso de fallo. Se admiten transacciones, modo de publicación/suscripción, comandos de incremento/decremento, operaciones de lista y conjunto (unión, intersección), renombramiento de claves, replicación maestro-esclavo, selecciones múltiples y funciones de ordenación.
El lanzamiento de Valkey 8.0 se posiciona como el primer lanzamiento importante del proyecto. Entre los cambios:
- Se han realizado optimizaciones para distribuir la carga entre los núcleos de CPU disponibles y permitir que los subprocesos de procesamiento de E/S funcionen simultáneamente con el subproceso principal, lo que hace posible ejecutar comandos y procesar operaciones de E/S en paralelo. Se ha mejorado la eficiencia del procesamiento de comandos en modo por lotes; por ejemplo, se ha agregado soporte para recuperar proactivamente datos de uso frecuente para almacenarlos en la memoria caché del procesador. Cuando se probó en el entorno AWS r7g, la nueva versión demostró la capacidad de procesar hasta 1.2 millones de solicitudes por segundo, tres veces más que la versión anterior.
- Se mejoró la escalabilidad y la supervivencia de las configuraciones de clúster. Se agregó compatibilidad con la conmutación por error automática a servidores de respaldo. servidores En caso de fallo (conmutación por error) en nodos con ranuras de fragmentación vacías que aún no se han llenado, se ha garantizado la replicación de los datos del estado de la ranura: todos los comandos "CLUSTER SETSLOT" se replican sincrónicamente antes de su ejecución en el nodo principal, lo que aumenta la supervivencia del clúster en caso de fallo de este. Se ha añadido la capacidad de restaurar automáticamente el estado de la ranura de migración.
- El trabajo de replicación se ha acelerado gracias a la transmisión simultánea de volcados RDB (Redis Database Backup) y un registro de cambios acumulados (backlog) en diferentes hilos. Las pruebas mostraron una reducción en la latencia de escritura y una reducción en el tiempo de sincronización de hasta un 50% bajo cargas con un flujo muy intensivo de comandos de lectura. Consumo de memoria significativamente reducido en el nodo principal.
- Se han agregado nuevas métricas con estadísticas relacionadas con espacios individuales y clientes. Por ejemplo, hay métricas disponibles sobre los clientes que utilizan el mecanismo de publicación/suscripción, latencia en el procesamiento de eventos, tráfico del canal de comandos, estadísticas sobre la reorganización de la tabla hash de memoria, así como la cantidad de claves, tráfico y carga de CPU por ranura.
- Se ha optimizado el almacenamiento de claves, reduciendo el consumo de memoria aproximadamente un 10%.
- Se agregó la capacidad de trabajar en sistemas que usan simultáneamente IPv4 e IPv6.
- Se ha aumentado la eficiencia del mecanismo "publicar/suscribir", en el que se crea un canal cuyos mensajes se distribuyen a los clientes mediante suscripción.
- Se agregó soporte experimental para trabajar sobre RDMA.
Fuente: opennet.ru
