Veröffentlichung des eingebetteten DBMS libmdbx 0.13.6

Die Veröffentlichung der Bibliothek libmdbx 0.13.6 (MDBX) bietet eine hochleistungsfähige, kompakte, eingebettete Schlüssel-Wert-Datenbank. Der Code von libmdbx wird unter der Apache 2.0-Lizenz verbreitet. Alle aktuellen Betriebssysteme und Architekturen werden unterstützt, einschließlich des russischen Elbrus 2000. Für libmdbx steht eine erweiterte API für C++ zur Verfügung, sowie von Enthusiasten unterstützte Bindungen für die Programmiersprachen Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno und Scala. Zu den Projekten, die libmdbx verwenden, gehören Isar, Erigon und Reth sowie Entwicklungen der Firmen StarkWare und Positive Technologies.

Historisch betrachtet ist libmdbx eine umfassende Überarbeitung der LMDB-Datenbank und übertrifft ihren Vorgänger hinsichtlich Zuverlässigkeit, Funktionsumfang und Leistung. Im Vergleich zur LMDB wird in libmdbx großer Wert auf die Codequalität, die Stabilität der API, die Tests und die automatischen Prüfungen gelegt. Es wird ein Tool zur Überprüfung der Integrität der Datenbankstruktur mit einigen Wiederherstellungsfunktionen bereitgestellt. Technologisch bietet libmdbx ACID, strikte Serialisierung der Änderungen und nicht blockierendes Lesen mit linearer Skalierung auf mehreren CPU-Kernen. Auto-Compaction, automatisches Management der Datenbankgröße und die Schätzung von Umfangsabfragen werden unterstützt.

Wesentliche Änderungen:

  • Änderung des Verhaltens: Wenn der Cursor nicht von seiner aktuellen Transaktion entkoppelt werden kann, gibt die Funktion mdbx_cursor_bind() jetzt MDBX_EINVAL anstelle von MDBX_BAD_TXN zurück.
  • Um potenzielle Probleme zu vermeiden, wurde die Nutzung von copy_file_range() auf Linux-Kernen 5.3 – 5.18 deaktiviert.
  • Der Ausnahmefehler std::invalid_argument wird jetzt mit der Meldung MDBX_EINVAL ausgelöst.
  • Ein Rückschritt bei der Verwendung von Cursorn für DBI=0 (auch bekannt als GC/FreeDB) in Lese-Transaktionen wurde beseitigt.
  • Ein Rückschritt, bei dem der Fehler EAGAIN beim Kopieren der Datenbank auf NFS und CIFS/SMB auftrat, wurde behoben.
  • Bei Anpassungen/Erweiterungen der API wurde in der Kopierfunktion die Dateisperre sowohl über fcntl() als auch über flock() hinzugefügt. Je nach Version des lokalen Kernels, der Version von Server NFS und den Montageoptionen könnte dies zu einer Rückgabe des POSIX-Fehlers EAGAIN (11 auf den meisten Plattformen, einschließlich Linux) geführt haben.
  • Ein Fehler bei merge/rebase in mdbx_txn_release_all_cursors_ex() wurde behoben, was zu unerwarteten Fehlern wie MDBX_EBADSIGN und Speicherlecks führen konnte.
  • Die assert-Prüfung im Pfad zum Abschluss verschachtelter Transaktionen wurde korrigiert.
  • Die Möglichkeit, unerwarteten Fehler MDBX_BUSY aus mdbx_txn_lock(dont_wait=false) zurückzugeben, wurde behoben.
  • Um die Kompatibilität mit GCC 15.x im C23-Modus zu gewährleisten, wurde die Reihenfolge der Funktionsattributangaben geändert.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster