Die Veröffentlichung der leistungsstarken Embedded-Datenbank libmdbx 0.11.3

Die Version 0.11.3 der Bibliothek libmdbx (MDBX) wurde veröffentlicht, die eine leistungsstarke, kompakte, eingebettete Schlüssel-Wert-Datenbank bereitstellt. Der Code von libmdbx wird unter der OpenLDAP Public License verbreitet. Alle aktuellen Betriebssysteme und Architekturen werden unterstützt, einschließlich des russischen Elbrus 2000. Ende 2021 wird libmdbx als Backend-Speicher in den zwei schnellsten Ethereum-Clients — Erigon und dem neuen 'Hai', der laut verfügbaren Informationen der leistungsfähigste Ethereum-Client ist, verwendet.

Historisch gesehen ist libmdbx eine umfassende Überarbeitung der Datenbank LMDB und übertrifft ihren Vorfahren in Bezug auf Zuverlässigkeit, Funktionsumfang und Leistung. Im Vergleich zu LMDB wird libmdbx ein großes Augenmerk auf die Codequalität, die stabile API-Arbeit, Tests und automatische Prüfungen gelegt. Ein Dienstprogramm zur Überprüfung der Integrität der Datenbankstruktur wird mit einigen Wiederherstellungsfunktionen bereitgestellt.

Technologisch bietet libmdbx ACID, strikte Serialisierung von Änderungen und nicht blockierendes Lesen mit linearer Skalierung über die CPU-Kerne. Die automatische Kompaktion, das automatische Management der Datenbankgröße und die Schätzung von Abfragevolumina über Bereiche (Range Query Estimation) werden unterstützt. Seit 2016 wird das Projekt von der Firma Positive Technologies finanziert und seit 2017 in ihren Produkten verwendet.

Für libmdbx steht eine C++ API zur Verfügung, sowie von Enthusiasten unterstützte Bindungen an die Programmiersprachen Rust, Haskell, Python, NodeJS, Ruby, Go und Nim.

Die wichtigsten Neuerungen, Änderungen und Bugfixes, die seit der letzten Nachricht vom 11. Oktober hinzugefügt wurden:

  • Die C++ API gilt als einsatzbereit.
  • Die Aktualisierung der GC-Daten wurde erheblich beschleunigt, insbesondere bei großen Transaktionen, was besonders wichtig ist, wenn libmdbx im Ethereum-Ökosystem verwendet wird.
  • Die interne Signatur des Datenbankformats wurde geändert, um automatische Aktualisierungen zu unterstützen, die für die Benutzer vollständig transparent sind. Dadurch werden falsch-positive Meldungen über Beschädigungen der Datenbank vermieden, wenn veraltete Bibliotheksversionen zum Lesen von Transaktionen verwendet werden, die mit aktuellen Versionen abgeschlossen wurden.
  • Die Funktionen mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() und mdbx_env_get_syncbytes() wurden hinzugefügt. Unterstützung für die Operation MDBX_SET_UPPERBOUND wurde implementiert.
  • Alle Warnungen beim Kompilieren mit allen unterstützten Compilern in den C++ Modus 11/14/17/20 wurden beseitigt. Die Kompatibilität mit veralteten Compilern wurde sichergestellt: clang ab Version 3.9, gcc ab Version 4.8, einschließlich des Builds über sdevtoolset-9 für CentOS/RHEL 7.
  • Die Möglichkeit von Konflikten bei Meta-Seiten nach manuellem Umschalten auf eine bestimmte Meta-Seite mit dem mdbx_chk-Tool wurde beseitigt.
  • Der unerwartete Fehler MDBX_PROBLEM beim Überschreiben veralteter Meta-Seiten wurde behoben.
  • Rückgabe MDBX_NOTFOUND bei ungenauem Match bei der Bearbeitung der Anfrage MDBX_GET_BOTH korrigiert.
  • Kompilierungsfehler unter Linux behoben, wenn Headerdateien mit Schnittstellenbeschreibungen zum Kern fehlen.
  • Zusammenstoß zwischen internem Flag MDBX_SHRINK_ALLOWED und der Option MDBX_ACCEDE behoben.
  • Mehrere überflüssige Assert-Prüfungen entfernt.
  • Unerwartete Rückgabe MDBX_RESULT_TRUE aus der Funktion mdbx_env_set_option() korrigiert.
  • Insgesamt wurden mehr als 90 Änderungen in 25 Dateien vorgenommen, etwa 1300 Zeilen hinzugefügt und etwa 600 entfernt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster