Veröffentlichung des leistungsstarken eingebetteten DBMS libmdbx 0.11.3

Die Bibliothek libmdbx 0.11.3 (MDBX) wurde mit der Implementierung einer leistungsstarken, kompakten eingebetteten Schlüsselwertdatenbank veröffentlicht. Der libmdbx-Code ist unter der OpenLDAP Public License lizenziert. Alle aktuellen Betriebssysteme und Architekturen werden unterstützt, ebenso das russische Elbrus 2000. Ende 2021 wird libmdbx als Speicher-Backend in den beiden schnellsten Ethereum-Clients eingesetzt – Erigon und dem neuen „Shark“, der laut Verfügbarkeit verfügbar ist Informationen, ist der leistungsstärkste Ethereum-Client.

Historisch gesehen ist libmdbx eine tiefgreifende Neugestaltung des LMDB-DBMS und übertrifft seinen Vorgänger in Bezug auf Zuverlässigkeit, Funktionsumfang und Leistung. Im Vergleich zu LMDB legt libmdbx großen Wert auf Codequalität, API-Stabilität, Tests und automatisierte Prüfungen. Im Lieferumfang einiger Wiederherstellungsoptionen ist ein Dienstprogramm zur Überprüfung der Integrität der Datenbankstruktur enthalten.

Technisch gesehen bietet libmdbx ACID, starke Änderungsserialisierung und nicht blockierende Lesevorgänge mit linearer Skalierung über CPU-Kerne hinweg. Automatische Komprimierung, automatische Datenbankgrößenverwaltung und Bereichsabfrageschätzung werden unterstützt. Seit 2016 wird das Projekt von Positive Technologies gefördert und kommt seit 2017 in seinen Produkten zum Einsatz.

libmdbx bietet eine C++-API sowie von Enthusiasten unterstützte Sprachbindungen für Rust, Haskell, Python, NodeJS, Ruby, Go und Nim.

Wichtige Neuerungen, Verbesserungen und Korrekturen seit der letzten Meldung vom 11. Oktober:

  • Die C++-API gilt als einsatzbereit.
  • Die Aktualisierung von GC-Daten bei der Durchführung großer Transaktionen wurde erheblich beschleunigt, was besonders wichtig ist, wenn libmdbx im Ethereum-Ökosystem verwendet wird.
  • Die interne Signatur des Datenbankformats wurde geändert, um eine automatische Aktualisierung zu unterstützen, die für Benutzer völlig transparent ist. Dadurch können Sie falsch-positive Meldungen über Datenbankbeschädigungen vermeiden, wenn veraltete Versionen der Bibliothek zum Lesen von Transaktionen verwendet werden, die von aktuellen Versionen aufgezeichnet wurden.
  • Funktionen mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() und mdbx_env_get_syncbytes() hinzugefügt. Unterstützung für den MDBX_SET_UPPERBOUND-Vorgang hinzugefügt.
  • Alle Warnungen beim Erstellen mit allen unterstützten Compilern in den Modi C++ 11/14/17/20 wurden entfernt. Die Kompatibilität mit älteren Compilern ist gewährleistet: clang ab 3.9, gcc ab 4.8, einschließlich Assembly mit cdevtoolset-9 für CentOS/RHEL 7.
  • Die Möglichkeit eines Metaseitenkonflikts nach dem manuellen Wechsel zu einer bestimmten Metaseite mit dem Dienstprogramm mdbx_chk wurde behoben.
  • Es wurde ein unerwarteter MDBX_PROBLEM-Fehler behoben, der beim Überschreiben älterer Metaseiten zurückgegeben wurde.
  • Die Rückgabe von MDBX_NOTFOUND im Falle einer ungenauen Übereinstimmung bei der Verarbeitung einer MDBX_GET_BOTH-Anfrage wurde behoben.
  • Ein Kompilierungsfehler unter Linux aufgrund fehlender Header-Dateien mit Beschreibungen der Schnittstellen zum Kernel wurde behoben.
  • Ein Konflikt zwischen dem internen Flag MDBX_SHRINK_ALLOWED und der Option MDBX_ACCEDE wurde behoben.
  • Mehrere unnötige Assert-Prüfungen wurden eliminiert.
  • Die unerwartete Rückgabe von MDBX_RESULT_TRUE von der Funktion mdbx_env_set_option() wurde behoben.
  • Insgesamt wurden mehr als 90 Änderungen an 25 Dateien vorgenommen, etwa 1300 Zeilen hinzugefügt und etwa 600 gelöscht.

Source: opennet.ru

Kommentar hinzufügen