Pangalawang release na kandidato para sa libmdbx v1.0 pagkatapos ng limang taon ng pagbuo.

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

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

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

  • Sa pangunahin, mas binibigyang pansin ang kalidad ng code, pagsubok at awtomatikong pagsusuri.
  • Makabuluhang higit na kontrol sa panahon ng operasyon, mula sa pagsuri ng mga parameter hanggang sa panloob na pag-audit ng mga istruktura ng database.
  • Auto-compactification at awtomatikong pamamahala ng laki ng database.
  • Isang format ng database para sa 32-bit at 64-bit assemblies.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Suporta para sa mga key na dalawang beses na kasing laki ng mga pancake at laki ng pahina ng database na napipili ng 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 paglalarawan ng API.
  • Амальгамация исходного кода для удобства встраивания.
  • suporta sa CMake.
  • Suporta para sa mga nested na transaksyon.
  • Paggamit ng bootid upang matukoy kung ang OS ay nag-reboot (marumi database stop).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Opsyon MDBX_ACCEDE para sa pagkonekta sa isang bukas na database sa compatible mode.
  • Gamitin OFD blocking kapag available.
  • Mainit na backup sa pipe.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Ang maximum na haba ng key ay nadagdagan.
  • Awtomatikong kontrol ng read ahead (diskarte sa pag-cache ng file ng database sa memorya).
  • Mas agresibo at mas mabilis na auto-compactification.
  • Isang mas pinakamainam na diskarte para sa pagsasama-sama ng mga B+ tree page.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Ang hanay ng mga pagsubok ay pinalawak.

Ang pagbuo ng "susunod" na bersyon ng libmdbx ay magpapatuloy bilang isang hiwalay na proyekto MithrilDB, habang ang development vector ng "kasalukuyang" bersyon ng MDBX ay naglalayong i-freeze ang feature set at patatagin ito. Ang desisyon na ito ay ginawa para sa tatlong dahilan:

  • Ganap na hindi tugma: Ang MithrilDB ay nangangailangan ng ibang (hindi tugma) na format ng file ng database at ibang (hindi tugma) na API upang ipatupad ang lahat ng nakaplanong feature.
  • Bagong source code: Ang MithrilDB source code ay ginawang lisensyado na independyente mula sa LMDB, at ang proyekto mismo ay pinlano na i-publish sa ilalim ng ibang lisensya (inaprubahan ng OSI lisensya Apache 2.0At hindi OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

Ang MithrilDB, tulad ng MDBX, ay nakabatay din sa puno B+ at magtatampok din ng napakataas na pagganap, habang inaalis ang ilang pangunahing kawalan ng MDBX at LMDB. Sa partikular, ang problema ng "mahabang pagbabasa", na nagpapakita ng sarili bilang "pamamaga" ng database dahil sa katotohanan na ang pagpoproseso ng basura ay hinarangan ng mahabang mga transaksyon sa pagbabasa, ay aalisin. Kasama sa mga bagong feature ng MithrilDB ang:

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

Pinagmulan: linux.org.ru

Magdagdag ng komento