Втор кандидат за издавање на libmdbx v1.0 по пет години развој.

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

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

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

  • Во основа, повеќе внимание се посветува на квалитетот на кодот, тестирањето и автоматските проверки.
  • Значително поголема контрола за време на работата, од проверка на параметрите до внатрешна ревизија на структурите на базата на податоци.
  • Автоматско компактирање и автоматско управување со големината на базата на податоци.
  • Единствен формат на база на податоци за 32-битни и 64-битни склопови.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Поддршка за клучеви двојно поголеми од палачинки и големина на страница со база на податоци што може да ја избере корисникот.

Выпущенный релиз-кандидат 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 и т. д.
  • Ажурирање Описи на API.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake поддршка.
  • Поддршка за вгнездени трансакции.
  • Користење на bootid за да се утврди дали ОС се рестартира (валканата база на податоци стопира).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Опција MDBX_ACCEDE за поврзување со веќе отворена база на податоци во компатибилен режим.
  • Користете Блокирање на OFD кога е достапно.
  • Топла резервна копија во цевката.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Максималната должина на клучот е зголемена.
  • Автоматска контрола на читање напред (стратегија за кеширање на датотеки со бази на податоци во меморијата).
  • Поагресивно и побрзо автоматско компактирање.
  • Пооптимална стратегија за спојување на страници со стебла B+.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Сетот на тестови е проширен.

Развојот на „следната“ верзија на libmdbx ќе продолжи како посебен проект МитрилДБ, додека развојниот вектор на „тековната“ верзија на MDBX е насочен кон замрзнување на сетот на функции и негово стабилизирање. Оваа одлука е донесена од три причини:

  • Целосно некомпатибилно: MithrilDB бара различен (некомпатибилен) формат на датотека на базата на податоци и различен (некомпатибилен) API за да ги имплементира сите планирани функции.
  • Нов изворен код: Изворниот код на MithrilDB е лиценциран независен од LMDB, а самиот проект се планира да биде објавен под друга лиценца (одобрена од ИЛИ АКО лиценца Апачи 2.0и не OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, како и MDBX, исто така се заснова на дрво Б+ и исто така ќе има екстремно високи перформанси, притоа елиминирајќи голем број основни недостатоци на MDBX и LMDB. Конкретно, ќе се елиминира проблемот со „долго читање“, што се манифестира како „отекување“ на базата на податоци поради фактот што обработката на ѓубрето е блокирана со долги трансакции со читање. Новите карактеристики на MithrilDB вклучуваат:

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

Извор: linux.org.ru

Додадете коментар