Veröffentlichung des kompakten eingebetteten DBMS libmdbx 0.9.1

Veröffentlicht Bibliotheksversion 0.9.1 libmdbx (MDBX) Implementierung einer leistungsstarken, kompakten eingebetteten Schlüsselwertdatenbank. Der libmdbx-Code wird unter einer Lizenz vertrieben Öffentliche OpenLDAP-Lizenz.

Die aktuelle Version ist ein Kompromiss zwischen der Absicht, eine langfristig stabile Version 1.0 mit vollständiger C++-Unterstützung zu veröffentlichen, und der Zurückhaltung, Veröffentlichungen zu verzögern, weil man nicht auf das Einfrieren der neuen C++-API vorbereitet ist. Die vorgestellte Version ist das Ergebnis einer 9-monatigen Arbeit zur Stabilisierung der Bibliothek und Verbesserung ihrer Benutzerfreundlichkeit und enthält auch eine Vorversion C++-API.

Die libmdbx-Bibliothek ist nicht nur ein „Fork“, sondern ein radikal neu gestalteter Nachkomme LMDB — transaktionales eingebettetes DBMS der „Schlüsselwert“-Klasse basierend auf Baum B+ без proaktive Protokollierung, wodurch Multithread-Prozesse wettbewerbsfähig und effizient mit einer lokal gemeinsam genutzten Datenbank (nicht im Netzwerk) ohne einen dedizierten Serverprozess arbeiten können. libmdbx grundsätzlich expandiert Fähigkeiten seines Vorfahren zu verbessern und gleichzeitig Nachteile zu beseitigen oder abzumildern. Gleichzeitig ist libmdbx den Entwicklern zufolge etwas schneller und deutlich zuverlässiger als LMDB.

libmdbx schlägt vor ACID, strikte Serialisierung von Änderungen und nicht blockierendes Lesen mit linearer Skalierung über CPU-Kerne hinweg. Ergebnisse der Leistungstests (Senden paralleler Lese-/Suchanfragen in 1-2-4-8 Threads auf einer CPU i7-4600U mit 2 physischen Kernen im 4-Thread-HyperThread-Modus):

Veröffentlichung des kompakten eingebetteten DBMS libmdbx 0.9.1

Die wichtigsten Unterschiede zwischen MDBX und LMDB:

  • Grundsätzlich wird mehr Wert auf Codequalität, API-Konsistenz, Tests und automatische Prüfungen gelegt.
  • Deutlich mehr Kontrolle im laufenden Betrieb, von der Parameterprüfung bis zum internen Audit der Datenbankstrukturen.
  • Automatische Komprimierung und automatische Verwaltung der Datenbankgröße.
  • Ein einzelnes Datenbankformat für 32-Bit- und 64-Bit-Assemblys.
  • Schätzung von Probenvolumina nach Bereichen (Bereichsabfrageschätzung).
  • Unterstützung für doppelt so lange Schlüssel und eine vom Benutzer wählbare Datenbankseitengröße.
  • Ein Dienstprogramm zur Überprüfung der Integrität der Datenbankstruktur mit einigen Wiederherstellungsfunktionen.

Wichtigste Neuerungen und Verbesserungen nach frühere Nachrichten mit der Einführung der Version 0.5 im Januar 2020:

  • Zur zeitnahen Unterstützung und Beantwortung von Fragen wurde ein offenes System geschaffen. Telegrammgruppe.
  • Mehr als ein Dutzend Fehler und Mängel wurden behoben (vgl. Änderungsprotokoll).
  • Viele Tipp- und Rechtschreibfehler wurden behoben und zahlreiche kosmetische Verbesserungen vorgenommen.
  • Testszenarien wurden erweitert.
  • Unterstützung für iOS, Android, Buildroot, Müsli, uClibc, WSL1 и Wine.
  • C++-API-Vorschau veröffentlicht in eine Header-Datei.
  • Integrierte Dokumentation im Doxygen-Format und automatische Generierung Online-Dokumentation.
  • Die automatische Erstellung von Archiven mit zusammengeführten Quelltexten ist möglich.
  • Unterstützung für die Vorbereitung von Transaktionen und Cursorn sowie Benutzerkontexte für Transaktionen und Cursor hinzugefügt.
  • Zusätzliche Methoden wurden implementiert, um die referenzielle Integrität in B+Tree-MVCC-Snapshots zu steuern.
  • Unterstützung für die Überprüfung eines MVCC-Snapshots der Datenbank hinzugefügt, auf den über jede Metaseite zugegriffen werden kann und die Möglichkeit besteht, zur Wiederherstellung zu wechseln.
  • Unterstützung für das erneute Öffnen der Datenbank aus einem Prozess zu Testzwecken usw. implementiert.
  • Automatische Verarbeitung der Option MDBX_NOSUBDIR beim Öffnen einer Datenbank implementiert.
  • Funktionen zum Generieren von Ganzzahlschlüsseln aus Gleitkommawerten und „universellen“ JavaScript-Zahlen hinzugefügt.
  • Insgesamt wurden 430 Änderungen an 93 Dateien vorgenommen, mehr als 25 Zeilen hinzugefügt und mehr als 8.5 Zeilen gelöscht.

Die weitere Entwicklung von libmdbx wird sich auf die endgültige C++-API, die weitere Stabilisierung des Basiscodes, die Verbesserung der Benutzerfreundlichkeit der Bibliothek und die Verpackung für gängige Linux-Distributionen konzentrieren. Unter den vorgeschlagenen Verbesserungen ist die Unterstützung von Schlüsseln im Format hervorzuheben MessagePack.

Source: opennet.ru

Kommentar hinzufügen