Nach fünf Jahren Entwicklung wurde der zweite Kandidat für die Veröffentlichung von libmdbx 1.0 veröffentlicht.

Verfügbar для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx wird unter der GPLv3-Lizenz bereitgestellt. под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — einer transaktionalen Embedded-Datenbank der Schlüssel-Wert-Klasse basierend auf B+-Bäumen ohne vorausschauender Protokollierung, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.

Die wichtigsten Unterschiede von MDBX im Vergleich zu LMDB:

  • Der Schwerpunkt liegt wesentlich stärker auf der Codequalität, dem Testen und automatisierten Prüfungen.
  • 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 doppelter Breite und vom Benutzer ausgewählter Größe der Datenbankseite.

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Aktualisierung der API-Beschreibung.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Unterstützung von CMake.
  • Unterstützung für verschachtelte Transaktionen.
  • Verwendung von bootid zur Feststellung von Betriebssystemneustarts (unsachgemäße Datenbankabschaltung).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Option MDBX_ACCEDE zum Zugriff auf eine bereits geöffnete Datenbank im kompatiblen Modus.
  • Nutzung OFD-Sperren bei deren Verfügbarkeit.
  • Hot-Backup über Pipe.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Maximale Schlüssellänge erhöht.
  • Automatische Steuerung des Read Ahead (Strategie zur Datei-Caching im Speicher).
  • Aggressivere und schnellere Auto-Komprimierung.
  • Optimierte Strategie für das Zusammenführen von Seiten im B+-Baum.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Erweitertes Testset.

Die Entwicklung der 'nächsten' Version von libmdbx wird als separates Projekt fortgesetzt. MithrilDB, während der Entwicklungsvektor der 'aktuellen' Version MDBX auf die Stabilisierung des Funktionsumfangs und die Stabilisierung ausgerichtet ist. Diese Entscheidung wurde aus drei Gründen getroffen:

  • Vollständige Inkompatibilität: Um alle geplanten Funktionen in MithrilDB zu realisieren, ist ein anderer (inkompatibler) DB-Dateiformat und eine andere (inkompatible) API erforderlich.
  • Neuer Quellcode: Der Quellcode von MithrilDB wird lizenzunabhängig von LMDB bereitgestellt, und das Projekt soll unter einer anderen (genehmigten) Lizenz veröffentlicht werden. OSI лицензией Apache 2.0, а не OpenLDAP Public License).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB basiert wie MDBX ebenfalls auf B+-Bäumen und zeichnet sich ebenfalls durch eine extrem hohe Leistungsfähigkeit aus, während gleichzeitig eine Reihe grundlegender Nachteile von MDBX und LMDB beseitigt werden. Insbesondere wird das Problem der "langen Lesevorgänge", das sich als "Aufblähen" der DB zeigt, beseitigt, da die Bearbeitung von Müll durch lange Lese-Transaktionen blockiert wird. Zu den neuen Funktionen von MithrilDB gehören:

  • Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • Использование Merkle tree для контроля целостности БД.
  • Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

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