Umgqatswa wesibini wokukhupha i-libmdbx v1.0 emva kweminyaka emihlanu yophuhliso.

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

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

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

  • Ngokusisiseko, ingqwalasela engakumbi ihlawulwa kumgangatho wekhowudi, uvavanyo kunye nokuhlolwa okuzenzekelayo.
  • Ulawulo olumandla ngakumbi ngexesha lokusebenza, ukusuka ekujongeni iiparamitha ukuya kuphicotho lwangaphakathi lwezakhiwo zedathabheyisi.
  • Ukudityaniswa okuzenzekelayo kunye nolawulo lobungakanani bedatha ezenzekelayo.
  • Ifomati yedatha enye yee-32-bit kunye ne-64-bit yeassemblies.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Inkxaso yezitshixo eziphindwe kabini ngobukhulu njenge-pancakes kunye nobukhulu bekhasi ledatha ekhethiweyo yomsebenzisi.

Выпущенный релиз-кандидат 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 и т. д.
  • Hlaziya Iinkcazo ze-API.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake inkxaso.
  • Inkxaso yeentengiselwano ezifakwe kwindlwane.
  • Ukusebenzisa i-bootid ukumisela ukuba ngaba i-OS iqale ngokutsha (i-stop database emdaka).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Ukhetho MDBX_ACCEDE lokuqhagamshela kuvimba osele uvuliwe kwimowudi ehambelanayo.
  • Sebenzisa I-OFD iyavalela xa ikhona.
  • Backup eshushu kumbhobho.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Obona bude buphezulu bunyusiwe.
  • Ulawulo oluzenzekelayo lokufunda phambili (isicwangciso sogcino lwefayile yedatabase kwinkumbulo).
  • I-Aggressive more and quick-auto-compactification.
  • Iqhinga elilelona liphezulu lokudibanisa B+ amaphepha omthi.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Isethi yovavanyo yandisiwe.

Uphuhliso lwenguqulelo "elandelayo" ye-libmdbx iya kuqhubeka njengeprojekthi eyahlukileyo MithrilDB, ngelixa i-vector yophuhliso ye-"current" version ye-MDBX ijolise ekukhenkceni isethi yesici kunye nokuzinzisa. Esi sigqibo senziwe ngezizathu ezithathu:

  • Ayihambelani ngokupheleleyo: I-MithrilDB idinga ifayile yefayile yedatha eyahlukileyo (engahambelaniyo) kunye ne-API eyahlukileyo (engahambelaniyo) ukuphumeza zonke iimpawu ezicwangcisiweyo.
  • Ikhowudi yomthombo omtsha: Ikhowudi yomthombo weMithrilDB yenziwe ilayisenisi ezimeleyo kwi-LMDB, kwaye iprojekthi ngokwayo icwangciswe ukuba ipapashwe phantsi kwelayisenisi eyahlukileyo (eyamkelwe yi. OKANYE UKUBA ilayisensi I-Apache 2.0, kwaye akunjalo OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

I-MithrilDB, njenge-MDBX, nayo isekwe kwi umthi B+ kwaye iyakubonisa ukusebenza okuphezulu kakhulu, ngelixa isusa inani lezinto ezingeloncedo ezisisiseko ze-MDBX kunye ne-LMDB. Ngokukodwa, ingxaki "yokufunda ixesha elide" iya kupheliswa, ezibonakalisa "njengokuvuvukala" kwesiseko sedatha ngenxa yokuba ukulungiswa kwenkunkuma kuvaliwe ngokuthengiselana okude. Iimpawu ezintsha zeMithrilDB ziquka:

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

umthombo: linux.org.ru

Yongeza izimvo