Zweet Verëffentlechungskandidat fir libmdbx v1.0 no fënnef Joer Entwécklung.

Bibliothéik libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе Bam B+ ouni proaktiv Logged, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как sauerem и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

Описание отличий и усовершенствований libmdbx относительно LMDB заслуживает отдельной статьи (планируется публикации на «Хабре» и «Medium»). Здесь же уместно упомянуть самые важные и заметные:

  • Grondsätzlech gëtt méi Opmierksamkeet op Codequalitéit, Testen an automatesch Kontrollen bezuelt.
  • Bedeitend méi Kontroll wärend der Operatioun, vu Parameteren iwwerpréift bis internen Audit vun Datebankstrukturen.
  • Auto-Kompaktifikatioun an automatesch Datebank Gréisst Gestioun.
  • Een eenzegen Datebankformat fir 32-Bit a 64-Bit Versammlungen.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Ënnerstëtzung fir Schlësselen duebel sou grouss wéi Pancakes a Benotzer-auswielbar Datebank Säit Gréisst.

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

  • Реализована поддержка Mac OS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP -UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с -Wpedantic, все предупреждения Coverity Static Analyzer и т. д.
  • Update API Beschreiwunge.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake Ënnerstëtzung.
  • Ënnerstëtzung fir nestéiert Transaktiounen.
  • Benotzt Bootid fir ze bestëmmen ob d'OS nei gestart ass (dreckeg Datebank stoppen).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Optioun MDBX_ACCEDE fir mat enger scho oppener Datebank am kompatiblen Modus ze verbannen.
  • Benotzt OFD blockéieren wann verfügbar.
  • Hot Backupsatellit am Päif.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Déi maximal Schlëssellängt ass erhéicht ginn.
  • Automatesch Kontroll vu virausliesen (Datebankdatei Caching Strategie an Erënnerung).
  • Méi aggressiv a méi séier Autokompaktifikatioun.
  • Eng méi optimal Strategie fir B + Bam Säiten ze fusionéieren.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • De Set vun Tester gouf erweidert.

D'Entwécklung vun der "nächster" Versioun vu libmdbx wäert als separat Projet weidergoen Mithril DB, während den Entwécklungsvektor vun der "aktueller" Versioun vun MDBX zielt fir d'Feature-Set ze afréieren an ze stabiliséieren. Dës Entscheedung gouf aus dräi Grënn gemaach:

  • Ganz inkompatibel: MithrilDB erfuerdert en anert (inkompatibel) Datebankdateiformat an eng aner (inkompatibel) API fir all geplangte Funktiounen ëmzesetzen.
  • Neie Quellcode: De MithrilDB Quellcode ass lizenzéiert onofhängeg vun LMDB, an de Projet selwer ass geplangt ënner enger anerer Lizenz publizéiert ze ginn (guttgeheescht vum ODER WANN Lizenz Apache 2.0, an net OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, wéi MDBX, baséiert och op Bam B+ a wäert och extrem héich Leeschtung, iwwerdeems eliminéiert eng Rei vun fundamental Nodeeler vun MDBX an LMDB. Besonnesch de Problem vun "laang Liesen", déi sech als "Schwellung" vun der Datebank manifestéiert wéinst der Tatsaach, datt d'Müllveraarbechtung duerch laang Liestransaktiounen blockéiert ass, gëtt eliminéiert. Nei MithrilDB Feature enthalen:

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

Source: linux.org.ru

Setzt e Commentaire