Version 0.9.1 der Bibliothek (MDBX) mit der Implementierung einer hochleistungsfähigen, kompakten eingebetteten Schlüssel-Wert-Datenbank. Der Code von libmdbx wird unter der Lizenz .
Die aktuelle Version ist ein Kompromiss zwischen dem Wunsch, eine langfristige stabile Version 1.0 mit vollständiger Unterstützung für C++ herauszugeben, und dem Unwillen, die Veröffentlichungen aufgrund der Unfertigkeit des neuen C++ API zu verschieben. Die vorgestellte Version ist das Ergebnis von 9 Monaten Arbeit, die auf die Stabilisierung der Bibliothek und die Verbesserung ihrer Benutzerfreundlichkeit abzielt und umfasst auch eine Vorabversion .
Die libmdbx-Bibliothek ist nicht einfach ein „Fork“, sondern ein grundlegend überarbeiteter Nachfolger – einem transaktionsbasierten eingebetteten DBMS der Klasse „Schlüssel-Wert“, das auf ohne , der es mehreren Prozessen ermöglicht, gleichzeitig und effizient mit einer lokal geteilten (nicht netzwerkbasierten) Datenbank ohne dedizierten Serverprozess zu arbeiten. Libmdbx verfolgt grundsätzlich die Möglichkeiten ihres Vorfahren, während gleichzeitig die Mängel beseitigt oder gemildert werden. Dabei sind die Entwickler überzeugt, dass libmdbx etwas schneller und erheblich zuverlässiger ist als LMDB.
libmdbx bietet , strenge Serialisierung von Änderungen und nicht blockierendes Lesen mit linearer Skalierung über CPU-Kerne. Die Testergebnisse zur Leistung (Versand paralleler Lese-/Suchanfragen in 1-2-4-8 Threads auf CPU i7-4600U mit 2 physischen Kernen im 4-Thread-HyperThread-Modus):
Die wichtigsten Unterschiede von MDBX im Vergleich zu LMDB:
- Grundsätzlich wird der Qualität des Codes, der „Ausfallresistenz“ des API, dem Testen und der automatisierten Überprüfung mehr Aufmerksamkeit geschenkt.
- Es gibt erheblich mehr Kontrolle während des Betriebs, von der Überprüfung der Parameter bis hin zu internen Audits der Datenbankstrukturen.
- Automatische Kompaktifizierung und automatisches Management der Datenbankgröße.
- Ein einheitliches Datenbankformat für 32-Bit- und 64-Bit-Bauten.
- Bewertung des Volumens von Abfragen nach Bereichen (range query estimation).
- Unterstützung von Schlüsseln mit doppelt so langer Länge und von Benutzern wählbarer Datenbankseiten-Größe.
- Ein Tool zur Überprüfung der Datenbankstruktur mit einigen Wiederherstellungsfunktionen.
Die wichtigsten Neuerungen und Verbesserungen nach mit der Präsentation von Version 0.5 im Januar 2020:
- Für die schnelle Unterstützung und Beantwortung von Fragen wurde eine offene .
- Mehr als ein Dutzend Fehler und Ungenauigkeiten wurden behoben (siehe ).
- Eine Menge Schreibfehler und orthografischer Fehler wurden korrigiert, mehrere kosmetische Verbesserungen.
- Die Testszenerien wurden erweitert.
- Unterstützung für iOS, Android, , , , und .
- Die Vorabversion des C++ API wurde vorgestellt in .
- Die integrierte Dokumentation wurde im Doxygen-Format erstellt und die automatische Generierung .
- Die automatische Archivierung von amalgamierten Ausgangstexten ist sichergestellt.
- Unterstützung für die Vorbereitung von Transaktionen und Cursorn, benutzerdefinierte Kontexte für Transaktionen und Cursorn wurde hinzugefügt.
- Zusätzliche Methoden zur Überwachung der referenziellen Integrität in MVCC-Schnappschüssen von B+-Bäumen wurden implementiert.
- Unterstützung für die Überprüfung des MVCC-Schnappschusses der Datenbank, verfügbar über jede Meta-Seite mit der Möglichkeit zum Umschalten für die Wiederherstellung, wurde hinzugefügt.
- Unterstützung für das erneute Öffnen der Datenbank aus einem Prozess zu Testzwecken usw. wurde implementiert.
- Die automatische Verarbeitung der Option MDBX_NOSUBDIR beim Öffnen der Datenbank wurde realisiert.
- Funktionen zur Erstellung von Ganzzahl-Schlüsseln aus Gleitkommawerten und 'universellen' JavaScript-Zahlen wurden hinzugefügt.
- Insgesamt wurden 430 Änderungen an 93 Dateien vorgenommen, mehr als 25.000 Zeilen hinzugefügt, mehr als 8.500 Zeilen gelöscht.
Die weitere Entwicklung von libmdbx wird sich auf die Schaffung einer endgültigen C++-API, die Stabilisierung des Basiscodes, die Verbesserung der Benutzerfreundlichkeit der Bibliothek sowie die Erstellung von Paketen für beliebte Linux-Distributionen konzentrieren. Zu den geplanten Erweiterungen gehört die Unterstützung von Schlüsseln im Format .
Quelle: opennet.ru
