Version 0.9.1 der Bibliothek (MDBX) mit der Implementierung einer leistungsstarken, kompakten Embedded-Datenbank der SchlĂŒssel-Wert-Klasse. Der Code von libmdbx wird unter der Lizenz .
Die aktuelle Version ist ein Kompromiss zwischen dem Ziel, eine langfristig stabile Version 1.0 mit vollumfĂ€nglicher C++-UnterstĂŒtzung zu veröffentlichen und dem Wunsch, Veröffentlichungen nicht aufgrund der Unvorbereitetheit einer neuen C++-API zu verzögern. Die vorgestellte Version ist das Ergebnis von 9 Monaten Arbeit zur Stabilisierung der Bibliothek und Verbesserung ihrer Benutzerfreundlichkeit und enthĂ€lt auch eine Vorabversion der .
Die Bibliothek libmdbx ist nicht einfach ein "Fork", sondern ein grundlegend ĂŒberarbeiteter Nachfolger â einer transaktionalen Embedded-Datenbank der SchlĂŒssel-Wert-Klasse basierend auf ohne , die es mehreren Prozessen ermöglicht, konkurrierend und effizient mit lokal geteilten (nicht netzwerkbasierten) Datenbanken ohne einen dedizierten Serverprozess zu arbeiten. Libmdbx ist grundsĂ€tzlich Die Möglichkeiten seines VorgĂ€ngers werden verbessert, wĂ€hrend gleichzeitig die Nachteile beseitigt oder gemildert werden. Die Entwickler sind ĂŒberzeugt, dass libmdbx etwas schneller und wesentlich zuverlĂ€ssiger als LMDB ist.
libmdbx bietet , strenge Serialisierung von Ănderungen und nicht blockierendes Lesen mit linearer Skalierung auf CPU-Kerne. Die Ergebnisse der Leistungstests (Parallelversendung von Lese-/Suchanfragen in 1-2-4-8 Threads auf einem i7-4600U mit 2 physischen Kernen im 4-Thread HyperThread-Modus):
Die wichtigsten Unterschiede von MDBX im Vergleich zu LMDB:
- Es wird wesentlich mehr Wert auf die CodequalitĂ€t, die âStabilitĂ€tâ der API, das Testen und automatische ĂberprĂŒfungen gelegt.
- Weitaus mehr Kontrolle wĂ€hrend des Betriebs, angefangen bei der ParameterĂŒberprĂŒfung bis hin zur internen Audits der Datenbankstrukturen.
- Automatische Kompaktion und automatisches Management der DatenbankgröĂe.
- Ein einheitliches Datenbankformat fĂŒr 32-Bit- und 64-Bit-Versionen.
- SchĂ€tzung der Abfragevolumina ĂŒber Bereiche (Range Query Estimation).
- UnterstĂŒtzung von SchlĂŒsseln mit doppelt so langer LĂ€nge und benutzerdefinierter SeitenlĂ€nge der Datenbank.
- Ein Tool zur ĂberprĂŒfung der IntegritĂ€t der Datenbankstruktur mit einigen Wiederherstellungsoptionen.
Die wichtigsten Neuerungen und Anpassungen nach mit der EinfĂŒhrung von Version 0.5 im Januar 2020:
- FĂŒr schnelle UnterstĂŒtzung und Fragen wurde eine offene .
- Mehr als ein Dutzend Fehler und Unstimmigkeiten wurden behoben (siehe ).
- Eine Vielzahl von Tippfehlern und Rechtschreibfehlern wurde korrigiert, zahlreiche kosmetische Verbesserungen.
- Die TestfÀlle wurden erweitert.
- UnterstĂŒtzung fĂŒr iOS, Android, , , , und .
- Eine Vorabversion der C++ API wurde in .
- Eingebaute Dokumentation im Doxygen-Format und automatische Generierung .
- Automatische Erstellung von Archiven mit amalgamierten Quelltexten wurde sichergestellt.
- UnterstĂŒtzung fĂŒr die Vorbereitung von Transaktionen und Cursors, Benutzerkontexte fĂŒr Transaktionen und Cursors wurde hinzugefĂŒgt.
- ZusÀtzliche Methoden zur Kontrolle der referenziellen IntegritÀt in MVCC-Snapshots von B+Tree wurden implementiert.
- UnterstĂŒtzung fĂŒr die ĂberprĂŒfung des MVCC-Snapshots der DB, zugĂ€nglich ĂŒber jede Metaseite mit Umschaltmöglichkeit zur Wiederherstellung, wurde hinzugefĂŒgt.
- UnterstĂŒtzung fĂŒr die Wiedereröffnung der DB aus einem Prozess zu Testzwecken usw. wurde implementiert.
- Die automatische Verarbeitung der Option MDBX_NOSUBDIR beim Ăffnen der Datenbank wurde implementiert.
- Funktionen zur Bildung von GanzzahlenschlĂŒsseln aus FlieĂkommawerten und 'universellen' JavaScript-Zahlen wurden hinzugefĂŒgt.
- Insgesamt wurden 430 Ănderungen an 93 Dateien vorgenommen, ĂŒber 25.000 Zeilen hinzugefĂŒgt und mehr als 8.500 Zeilen entfernt.
Die weitere Entwicklung von libmdbx wird sich auf die Bildung einer finalen 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
