Die Veröffentlichung von Valkey 9.0, einer von der Datenbank Redis abgezweigten Version, hat stattgefunden. Der Fork entstand nach der Umstellung von Redis 7.4 auf eine proprietäre Lizenz. In der Version Redis 8.0 wurde der Code wieder auf die freie Lizenz AGPLv3 zurückgeführt, was jedoch die Entwicklung des Projekts Valkey nicht beeinflusste. Valkey entwickelt sich auf einer neutralen Plattform unter dem Schutz der Linux Foundation mit der Beteiligung von Entwicklern von Unternehmen wie Amazon, Google, Oracle, Ericsson und Snap. Der Code des Projekts ist in C geschrieben und wird unter der BSD-Lizenz vertrieben. Die Nutzung in Linux, macOS, OpenBSD, NetBSD und FreeBSD wird unterstützt.
Die Datenbanken Valkey und Redis bieten Funktionen zur Speicherung von Daten im Schlüssel/Wert-Format, ergänzt durch die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen sowie die Möglichkeit, Skripte auf Seiten der Server Lua-Handler auszuführen. Die Datenbank wird im Speicher gehalten und mit der Festplattendatei synchronisiert oder im Änderungsprotokoll auf der Festplatte aufgezeichnet, was die Datensicherung im Falle eines unerwarteten Systemabbruchs gewährleistet. Transaktionen, der „Publish/Subscribe“-Modus, Befehle für Inkrementierung/Dekrementierung, Operationen auf Listen und Mengen (Vereinigung, Schnittmenge), Umbenennung von Schlüsseln, Master-Slave-Replikation, Mehrfachabfragen und Sortierfunktionen werden unterstützt.
In der neuen Version:
- Für die Datenmigration zwischen Knoten im Cluster wird die Technik der atomaren Migration von Slots verwendet, bei der Daten nicht auf der Ebene einzelner Schlüssel (einer nach dem anderen), sondern auf der Ebene des atomaren Verschiebens von 16384 Byte-Speicherslots übertragen werden. Der Transfer erfolgt mit dem AOF-Format, das ermöglicht, einzelne Elemente von Sammlungen anstatt aller mit dem Schlüssel verknüpften Daten zu senden. Dieser Ansatz verbessert die Leistung erheblich, vermeidet Umleitungen und schließt Verzögerungen beim Zugriff des Clients auf den umgezogenen Schlüssel aus.
- Es wurde die Möglichkeit hinzugefügt, individuelle Lebenszeiten für verschiedene Felder in Hashes zu definieren, die mit einem Schlüssel verknüpft sind (früher war die Lebensdauer an den Schlüssel gebunden und betraf alle Felder gleichzeitig). Um die Lebensdauer von Daten zu verwalten, wurden neue Befehle hinzugefügt: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX und HTTL.
- Die Nutzung von nummerierten Datenbanken im Cluster-Modus wurde ermöglicht, bei denen der Schlüsselraum auf mehrere verschiedene Datenbanken (standardmäßig 16) verteilt wird.
- Die Effizienz von großen Clustern wurde erhöht – es wurde ein Cluster von 2000 Knoten demonstriert, der eine Milliarde Anfragen pro Sekunde verarbeiten kann.
- Eine Optimierung wurde hinzugefügt, die in bestimmten Situationen die Durchsatzrate um 40 % durch vorzeitiges Laden gruppierter (Pipelining) Befehle in den Speicher steigert.
- Eine Optimierung wurde hinzugefügt, die in bestimmten Szenarien die Durchsatzrate um 20 % durch den Ausschluss der Datenkopie im Speicher (Zero Copy) während der Verarbeitung großer Anfragen erhöht.
- Die Unterstützung für die Multipath TCP-Technologie wurde hinzugefügt, um die Paketzustellung gleichzeitig über mehrere Routen durch verschiedene Netzwerkschnittstellen, die an unterschiedliche IP-Adressen gebunden sind, zu organisieren. Die Verwendung von Multipath TCP kann in bestimmten Situationen die Latenz um 25 % verringern.
- In BITCOUNT und HyperLogLog wurden Optimierungen hinzugefügt, die SIMD-Prozessoranweisungen nutzen und in einigen Fällen die Durchsatzrate um 200 % erhöhen können.
- Geospatial-Indizes verfügen jetzt über die Unterstützung von Standortanfragen anhand der Koordinaten eines Polygons.
- Ein Befehl „DELIFEQ“ wurde hinzugefügt, um einen Schlüssel zu löschen, wenn der damit verbundene Wert dem angegebenen Wert entspricht.
- Im Befehl „CLIENT LIST“ wurde die Möglichkeit implementiert, Filter zu setzen, die Elemente nach Namen, Flags, Aktivität, DB, IP-Adresse und Berechtigungen aussondern.
- Die Unterstützung für 25 Befehle, die zuvor als veraltet erklärt wurden, wurde wiederhergestellt.
Quelle: opennet.ru
