Lona lua o le libmdbx v1.0 fa'amalolo le sui pe a mae'a le lima tausaga o atina'e.

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

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе laau B+ e aunoa ma fa'ato'aga fa'ato'aga, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

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

  • O le mea autu, e sili atu le gauai atu i le tulaga lelei o code, su'ega ma siaki otometi.
  • E sili atu le pulea i le taimi o le faʻagaioiga, mai le siakiina o tapulaʻa i le suʻega faʻalotoifale o fausaga faʻamaumauga.
  • Auto-compctification ma otometi fa'atonuga tele fa'amaumauga.
  • Se fa'amaumauga fa'amaumauga e tasi mo fa'apotopotoga 32-bit ma 64-bit.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Lagolago mo ki e faaluaina le lapopoa nai lo panikeke ma le tele o itulau fa'amaumauga e mafai ona filifilia e le tagata.

Выпущенный релиз-кандидат 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 и т. д.
  • Fa'afouga API fa'amatalaga.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake lagolago.
  • Lagolago mo fefaʻatauaiga faʻanofo.
  • Fa'aaogaina o le bootid e iloa ai pe ua toe fa'afou le OS (tu'u fa'amaumauga palapala).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Filifiliga MDBX_ACCEDE mo le faʻafesoʻotaʻi i se faʻamaumauga o loʻo tatala i le tulaga fetaui.
  • Faaaoga poloka ole OFD pe a avanoa.
  • Fa'asao vevela ile paipa.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Ua fa'ateleina le umi ole ki.
  • Pulea otometi o le faitau i luma (fa'amaumauga faila fa'amaumauga ta'iala ile manatua).
  • Sili atu fa'amalosi ma fa'atopetope le fa'a'oto'oto.
  • Se ta'iala sili ona lelei mo le tu'ufa'atasia o itulau B+ laau.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Ua fa'alauteleina le seti o su'ega.

O le atina'eina o le "so'o" lomiga o le libmdbx o le a faʻaauauina o se galuega ese MithrilDB, aʻo le atinaʻeina o le vector o le "i le taimi nei" o le MDBX o loʻo faʻamoemoe e faʻamalo le seti seti ma faʻamautu. O lenei faaiuga na faia mo mafuaaga e tolu:

  • Le fetaui atoatoa: E manaʻomia e MithrilDB se faʻasologa o faila faʻamaumauga e ese (e le fetaui) ma se API ese (e le fetaui) e faʻatino ai vaega uma na fuafuaina.
  • Fou code source: O le MithrilDB source code ua laiseneina tutoatasi mai le LMDB, ma o le poloketi lava ia ua fuafua e lomia i lalo o se laisene ese (faamaonia e PE AFAI laisene Apache 2.0ae leai OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, pei o le MDBX, e faʻavae foi i luga laau B+ ma o le a faʻaalia ai foʻi le maualuga o le faʻatinoga, aʻo faʻaumatia le tele o tulaga le lelei o le MDBX ma le LMDB. Aemaise lava, o le faʻafitauli o le "faitau umi", lea e faʻaalia ai o ia lava o le "fula" o le faʻamaumauga ona o le mea moni o le faʻaogaina o lapisi e poloka e fefaʻatauaiga umi faitau, o le a faʻaumatia. O foliga fou o le MithrilDB e aofia ai:

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

puna: linux.org.ru

Faaopoopo i ai se faamatalaga