Twadde libmdbx v1.0 release kandidaat nei fiif jier ûntwikkeling.

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

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

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

  • Yn prinsipe wurdt mear omtinken jûn oan koadekwaliteit, testen en automatyske kontrôles.
  • Oanmerklik mear kontrôle tidens operaasje, fan kontrôle parameters oant ynterne kontrôle fan databasestruktueren.
  • Auto-kompaktifikaasje en automatysk behear fan databasegrutte.
  • In inkele databankformaat foar 32-bit en 64-bit gearkomsten.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Stipe foar kaaien twa kear sa grut as pannekoeken en troch de brûker te selektearjen databankpaginagrutte.

Выпущенный релиз-кандидат 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 beskriuwings.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake stipe.
  • Stipe foar geneste transaksjes.
  • Mei help fan bootid om te bepalen oft it OS is opnij opstarte (smoarge database stopje).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Opsje MDBX_ACCEDE foar ferbining mei in al iepen database yn kompatibele modus.
  • Gebrûk OFD blokkearje wannear beskikber.
  • Hot reservekopy yn pipe.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • De maksimale kaai lingte is ferhege.
  • Automatyske kontrôle fan lêzen foarút (Cachingstrategy foar databankbestân yn it ûnthâld).
  • Agressiverer en rapper auto-kompaktifikaasje.
  • In mear optimale strategy foar it gearfoegjen fan B + beam siden.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • De set fan tests is útwreide.

Untwikkeling fan 'e "folgjende" ferzje fan libmdbx sil trochgean as in apart projekt MithrilDB, wylst de ûntwikkelingsvektor fan 'e "aktuele" ferzje fan MDBX is rjochte op it befriezen fan de funksje set en stabilisearjen. Dit beslút is makke om trije redenen:

  • Hiel ynkompatibel: MithrilDB fereasket in oar (ynkompatibel) databankbestânformaat en in oare (ynkompatibele) API om alle plande funksjes út te fieren.
  • Nije boarnekoade: De MithrilDB-boarnekoade is lisinsearre ûnôfhinklik fan LMDB, en it projekt sels is pland om publisearre te wurden ûnder in oare lisinsje (goedkard troch OF IF fergunning ferliene Apache 2.0, en net OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, lykas MDBX, is ek basearre op beam B+ en sil ek ekstreem hege prestaasjes, wylst elimineren in oantal fûnemintele neidielen fan MDBX en LMDB. Benammen it probleem fan "lange lêzings", dy't him manifestearret as "swelling" fan 'e databank troch it feit dat ôffalferwurking troch lange lêstransaksjes blokkearre wurdt, sil wurde elimineare. Nije MithrilDB-funksjes omfetsje:

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

Boarne: linux.org.ru

Add a comment