Valkey 8.1, ein Fork des Redis DBMS von Amazon, Google, Oracle und Ericsson, wurde veröffentlicht

Die Veröffentlichung von Valkey 8.1 DBMS, einem Fork von Redis DBMS nach der Umstellung auf eine proprietäre Lizenz, fand statt. Das Projekt wird auf einer neutralen Plattform unter der Schirmherrschaft der Linux Foundation mit Beteiligung von Entwicklern von Unternehmen wie Amazon, Google, Oracle, Ericsson und Snap entwickelt. Madelyn Olson, ehemalige Redis-Betreuerin, hat sich der Entwicklung von Valkey angeschlossen. Der Projektcode ist in C geschrieben und wird unter der BSD-Lizenz vertrieben. Unterstützt Linux, macOS, OpenBSD, NetBSD und FreeBSD.

Ab Version 7.4 verwendet Redis nun die Lizenzen Redis Source Available License v2 (RSALv2) und Server Side Public License v1 (SSPLv1), die bestimmte Benutzerkategorien diskriminieren und es nicht zulassen, dass diese als offen oder kostenlos betrachtet werden. Beide Lizenzen verfolgen ähnliche Ziele. Der Unterschied besteht darin, dass die SSPL-Lizenz auf der AGPLv3-Copyleft-Lizenz basiert, während die RSAL-Lizenz auf der permissiven BSD-Lizenz basiert. Mit der RSAL-Lizenz dürfen Sie den Code verwenden, ändern, verteilen und in Anwendungen integrieren, es sei denn, diese Anwendungen sind kommerziell oder werden zur Bereitstellung verwalteter kostenpflichtiger Dienste verwendet. Die SSPL-Lizenz enthält zusätzlich die Anforderung, nicht nur den Code der Anwendung selbst, sondern auch den Quellcode aller an der Bereitstellung des Cloud-Dienstes beteiligten Komponenten unter derselben Lizenz bereitzustellen.

Valkey und Redis bieten Funktionen zum Speichern von Daten im Schlüssel/Wert-Format, erweitert um die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen sowie die Möglichkeit zur Ausführung auf der Seite. Server Lua-basierte Handler-Skripte. Die Datenbank wird im Arbeitsspeicher gespeichert und mit der Festplattenversion synchronisiert oder im Festplattenänderungsprotokoll abgebildet, wodurch die Datenintegrität im Falle eines Systemabsturzes gewährleistet wird. Transaktionen, Publish/Subscribe-Modus, Inkrementierungs-/Dekrementierungsbefehle, Listen- und Mengenoperationen (Vereinigung, Schnittmenge), Schlüsselumbenennung, Master-Slave-Replikation, Mehrfachauswahl und Sortierfunktionen werden unterstützt.

In der neuen Version:

  • Die Implementierung der Hash-Tabelle, die sowohl im Hauptspeicher für Schlüssel-Wert-Daten als auch beim Speichern von Daten der Typen Hash, Set und Sorted Set verwendet wird, wurde vollständig neu geschrieben. Die neue Version zeichnet sich durch einen geringeren Speicherverbrauch und eine Reduzierung der Anzahl der wahlfreien Speicherzugriffe aus. Für jedes Schlüssel-Wert-Paar ohne TTL (Object Time to Live Limit) wird der Speicherverbrauch um 20 Bytes und mit TTL um 30 Bytes reduziert. Der Durchsatz wurde beim Betrieb im nicht-multithreaded I/O-Modus um etwa 10 % erhöht.
  • Unterstützung für das Vorabrufen beim Ausführen einer Schlüsseliterationsoperation hinzugefügt, z. B. beim Ausführen des Befehls KEYS oder beim Senden aller Schlüssel an einen neuen Knoten in einem Cluster während der Replikation. Dank dieser Optimierung konnte die Schlüsselsuche um das 3.5-fache beschleunigt werden, da beim Weiterarbeiten des nächsten Schlüssels dieser nun in den CPU-Cache geladen wird.
  • Der Übergang der Komponenten zur mehrfädigen Eingabe-/Ausgabeverarbeitung wurde fortgesetzt. Die Möglichkeit zur Verwendung separater E/A-Streams beim Aushandeln von TLS-Verbindungen wurde hinzugefügt, wodurch die Leistung beim Akzeptieren neuer Verbindungen um das Dreifache gesteigert wurde. Die Aufrufe der Funktionen SSL_pending() und ERR_clear_error() wurden ebenfalls in separate Threads verschoben, was zu einer Durchsatzsteigerung bei der Ausführung von SET-Operationen um 10 % und von GET-Operationen um 22 % führte.
  • Verbesserte Replikationseffizienz. Durch das Entfernen redundanter Prüfsummenberechnungen bei der plattenlosen Replikation wurde die Leistung der vollständigen Synchronisierung bei aktiviertem TLS um 18 % verbessert. Der Overhead bei Copy-on-Write-Operationen wurde um 47 % reduziert.
  • Die Implementierung sortierter Listen (Datentyp „sorted set“) wurde optimiert, die Ausführung des ZRANK-Befehls ist dadurch um 45 % schneller geworden. Die Implementierung des ZADD-Befehls verwendet SIMD-Befehle.
  • Reduzierter Speicherverbrauch beim Zählen eindeutiger Elemente mit dem probabilistischen Typ Hyperloglog (benötigt jetzt nur noch 12 KB Speicher, unabhängig von der Datengröße). Durch die Aktivierung von AVX2-Anweisungen auf x86-Systemen wurde die Leistung von PFMERGE- und PFCOUNT-Operationen auf Hyperloglog-Datentypen um das bis zu 12-Fache und die von BITCOUNT-Operationen um das bis zu 5-Fache gesteigert.
  • Das aktive Defragmentierungssystem wurde geändert, um Verzögerungen von mehr als 1 Millisekunde zu verhindern. Die Zeit jedes Defragmentierungszyklus wurde auf 500 Mikrosekunden reduziert. Ein Mechanismus (Anti-Starvation) wurde hinzugefügt, um zu verhindern, dass Vorgänge wie der Defragmentierungszyklus durch Befehle mit langer Ausführungsdauer verzögert werden.
  • Neue Einstellungen zum Formatieren von Protokollen und Anzeigen der Zeit in Protokollen hinzugefügt. COMMANDLOG-Modus hinzugefügt, um große Anfragen und Antworten im Protokoll widerzuspiegeln (ähnlich dem Speichern lang laufender Anfragen).
  • Der Befehl „LATENCY LATEST“ zur Analyse von Latenzen wurde aktualisiert und enthält nun zusätzliche Metriken, die Informationen zur Anzahl der registrierten Latenzen und zu Latenzspitzen liefern.
  • Unterstützung für die Operation „SET IFEQ“ hinzugefügt, die ausgeführt wird, wenn der im Vergleich angegebene Wert mit dem aktuellen Schlüsselwert übereinstimmt.
  • Unterstützung für die Erstellung neuer Skript-Engines als Module hinzugefügt, was die Unterstützung anderer Sprachen als Lua ermöglicht.
  • Neue Module eingeführt:
    • Das Suchmodul ist eine Suchmaschine für Vektorähnlichkeiten, die für maschinelle Lernaufgaben optimiert ist, die eine geringe Latenz und einen hohen Durchsatz erfordern. Das Modul wird von Google bereitgestellt.
    • Das JSON-Modul ist eine Implementierung des JSON-Datentyps, die den Zugriff auf Teile von JSON-Dokumenten ermöglicht, ohne diese auf der Clientseite vollständig zu verarbeiten. Das Modul wird von AWS bereitgestellt.
    • Das Probabilistic Bloom Filter Module ist eine Implementierung von Bloom-Filtern, einem probabilistischen Framework zum Überprüfen der Set-Mitgliedschaft, das falsche Positivergebnisse für ein fehlendes Element zulässt, das Weglassen eines vorhandenen Elements jedoch ausschließt. Das Modul wird von AWS bereitgestellt.

Source: opennet.ru

Kommentar hinzufügen