Ikaduha nga kandidato sa pagpagawas sa libmdbx v1.0 pagkahuman sa lima ka tuig nga pag-uswag.

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

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

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

  • Sa panguna, mas daghang pagtagad ang gihatag sa kalidad sa code, pagsulay ug awtomatik nga pagsusi.
  • Mahinungdanon nga dugang nga kontrol sa panahon sa operasyon, gikan sa pagsusi sa mga parameter hangtod sa internal nga pag-audit sa mga istruktura sa database.
  • Auto-compctification ug awtomatikong pagdumala sa gidak-on sa database.
  • Usa ka format sa database alang sa 32-bit ug 64-bit nga mga asembliya.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Suporta alang sa mga yawe nga doble ang kadako sa mga pancake ug gidak-on sa panid sa database nga mapili sa user.

Выпущенный релиз-кандидат 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 Mga paghulagway sa API.
  • Амальгамация исходного кода для удобства встраивания.
  • suporta sa CMake.
  • Suporta alang sa nested nga mga transaksyon.
  • Paggamit sa bootid aron mahibal-an kung ang OS nag-reboot (hugaw nga paghunong sa database).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Opsyon MDBX_ACCEDE para sa pagkonektar sa usa ka bukas na nga database sa compatible mode.
  • Paggamit Pag-block sa OFD kon anaa.
  • Mainit nga backup sa tubo.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Ang kinatas-ang gitas-on sa yawe nadugangan.
  • Awtomatikong pagkontrol sa pagbasa sa unahan (database file caching nga estratehiya sa memorya).
  • Mas agresibo ug mas paspas nga auto-compactification.
  • Usa ka mas maayo nga estratehiya alang sa paghiusa sa mga panid sa B+ tree.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Ang hugpong sa mga pagsulay gipalapdan.

Ang pagpalambo sa "sunod" nga bersyon sa libmdbx magpadayon isip usa ka bulag nga proyekto MithrilDB, samtang ang development vector sa "kasamtangan" nga bersyon sa MDBX gitumong sa pagyelo sa feature set ug pagpalig-on niini. Kini nga desisyon gihimo tungod sa tulo ka rason:

  • Hingpit nga dili magkauyon: Ang MithrilDB nanginahanglan usa ka lahi (dili magkatugma) nga format sa file sa database ug usa ka lahi nga (dili magkatugma) nga API aron ipatuman ang tanan nga giplano nga mga bahin.
  • Bag-ong source code: Ang MithrilDB source code gihimong lisensyado nga independente gikan sa LMDB, ug ang proyekto mismo giplanohan nga ipatik ubos sa laing lisensya (aprobahan ni O KUNG KON lisensya Apache 2.0, ug dili OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

Ang MithrilDB, sama sa MDBX, gibase usab sa kahoy B+ ug magpakita usab sa hilabihan ka taas nga pasundayag, samtang giwagtang ang daghang sukaranang mga disbentaha sa MDBX ug LMDB. Sa partikular, ang problema sa "taas nga pagbasa", nga nagpakita sa iyang kaugalingon nga "paghubag" sa database tungod sa kamatuoran nga ang pagproseso sa basura gibabagan sa dugay nga mga transaksyon sa pagbasa, mapapas. Ang mga bag-ong bahin sa MithrilDB naglakip sa:

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

Source: linux.org.ru

Idugang sa usa ka comment