Die Datenbank Valkey 9.0 wurde veröffentlicht, die sich im letzten Jahr von der Datenbank Redis abgespalten hat. Der Fork entstand nach der Umstellung von Redis 7.4 auf eine proprietäre Lizenz. In der Veröffentlichung Redis 8.0 wurde der Code wieder auf die freie Lizenz AGPLv3 zurückgeführt, was jedoch die Entwicklung des Valkey-Projekts nicht beeinflusste. Valkey entwickelt sich auf einer neutralen Plattform unter der Schirmherrschaft der Linux Foundation mit der Beteiligung von Entwicklern aus Unternehmen wie Amazon, Google, Oracle, Ericsson und Snap. Der Code des Projekts ist in C geschrieben und wird unter der BSD-Lizenz verbreitet. Es wird Unterstützung für Linux, macOS, OpenBSD, NetBSD und FreeBSD angeboten.
Die Datenbanken Valkey und Redis bieten Funktionen zur Speicherung von Daten im Schlüssel/Wert-Format, erweitert durch die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen sowie die Möglichkeit von Ausführungen auf der Serverseite. Server Skript-Handler in der Sprache Lua. Die Datenbank wird im Speicher gespeichert und mit der Version auf der Festplatte synchronisiert oder in einem Änderungsprotokoll auf der Festplatte erfasst, was die Integrität der Daten im Falle eines unerwarteten Programmabbruchs gewährleistet. Transaktionen, der Publikations-/Abonnementmodus, Inkrement-/Dekrement-Befehle, Operationen auf Listen und Mengen (Vereinigung, Schnittmenge), Umbenennung von Schlüsseln, Master-Slave-Replikation, mehrere Abfragen und Sortierfunktionen werden unterstützt.
In der neuen Version:
- Für den Datenaustausch zwischen den Knoten im Cluster wird die Technik der atomaren Slot-Migration eingesetzt, bei der Daten nicht auf der Ebene einzelner Schlüssel (ein Schlüssel nach dem anderen), sondern auf der Ebene der atomaren Verschiebung von 16384 Byte großen Datenspeicher-Slots übertragen werden. Der Transfer erfolgt unter Verwendung des AOF-Formats, das die Übertragung einzelner Elemente von Sammlungen ermöglicht, anstatt alle mit dem Schlüssel verbundenen Daten zu senden. Dieser Ansatz verbessert die Leistung erheblich, vermeidet Umleitungen und beseitigt Verzögerungen, die beim Zugriff des Clients auf den migrierten Schlüssel auftreten können.
- Es wurde die Möglichkeit hinzugefügt, eine unterschiedliche Lebensdauer für verschiedene Felder in Hashes zu definieren, die mit einem Schlüssel verbunden sind (früher wurde die Lebensdauer an den Schlüssel gebunden und umfasste alle Felder gleichzeitig). Neue Befehle zum Verwalten der Lebensdauer von Daten wurden hinzugefügt: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX und HTTL.
- Die Verwendung von nummerierten Datenbanken im Cluster-Modus wurde ermöglicht, in denen der Schlüsselraum auf mehrere verschiedene Datenbanken verteilt wird (standardmäßig 16).
- Die Effizienz großer Cluster wurde erhöht – ein Cluster mit 2000 Knoten, das in der Lage ist, eine Milliarde Anfragen pro Sekunde zu verarbeiten, wurde demonstriert.
- Eine Optimierung wurde hinzugefügt, die in bestimmten Situationen die Durchsatzrate um 40 % steigern kann, indem zusammengefasste (Pipelining) Befehle proaktiv im Speicher geladen werden.
- Eine Optimierung wurde hinzugefügt, die in manchen Fällen die Durchsatzrate um 20 % erhöhen kann, indem das Kopieren von Daten im Speicher (Zero Copy) während der Verarbeitung großer Anfragen ausgeschlossen wird.
- Die Unterstützung der Multipath-TCP-Technologie wurde hinzugefügt, um die Paketübertragung gleichzeitig über mehrere Routen durch verschiedene Netzwerk-Interfaces, die mit unterschiedlichen IP-Adressen verbunden sind, zu ermöglichen. Die Anwendung von Multipath TCP kann in bestimmten Situationen die Latenz um 25 % reduzieren.
- Optimierungen mit SIMD-Prozessoranweisungen wurden in BITCOUNT und HyperLogLog hinzugefügt, die in einigen Fällen die Leistungsfähigkeit um 200 % steigern können.
- Geopräzisionsindizes unterstützen jetzt Standortabfragen basierend auf den Koordinaten eines Polygons.
- Der Befehl «DELIFEQ» wurde hinzugefügt, um einen Schlüssel zu löschen, wenn der zugehörige Wert dem angegebenen entspricht.
- Im Befehl «CLIENT LIST» wurde die Möglichkeit implementiert, Filter festzulegen, die Elemente nach Namen, Flags, Aktivität, DB, die IP-Adresse gebunden sind und Berechtigungen herausfiltern.
- Die Unterstützung von 25 Befehlen, die zuvor für veraltet erklärt wurden, wurde wiederhergestellt.
Quelle: opennet.ru
