Друго издање кандидата за либмдбк в1.0 након пет година развоја.

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

ЛМДБ является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе дрво Б+ без проактивно евидентирање, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь 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 и т. д.
  • ажурирање АПИ описи.
  • Амальгамация исходного кода для удобства встраивания.
  • ЦМаке подршка.
  • Подршка за угнежђене трансакције.
  • Коришћење боотида за утврђивање да ли се ОС поново покренуо (заустављање прљаве базе података).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Опција МДБКС_АЦЦЕДЕ за повезивање са већ отвореном базом података у компатибилном режиму.
  • Коришћење ОФД блокирање ако је на располагању.
  • Врућа резерва у цеви.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Максимална дужина кључа је повећана.
  • Аутоматска контрола читања унапред (стратегија кеширања датотека базе података у меморији).
  • Агресивнија и бржа ауто-компактација.
  • Оптималнија стратегија за спајање Б+ страница стабла.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Скуп тестова је проширен.

Развој „следеће“ верзије либмдбк-а ће се наставити као посебан пројекат МитхрилДБ, док је вектор развоја „тренутне“ верзије МДБКС-а усмерен на замрзавање скупа функција и његову стабилизацију. Ова одлука је донета из три разлога:

  • Потпуно некомпатибилно: МитхрилДБ захтева другачији (некомпатибилан) формат датотеке базе података и другачији (некомпатибилан) АПИ за имплементацију свих планираних функција.
  • Нови изворни код: МитхрилДБ изворни код је лиценциран независно од ЛМДБ-а, а планирано је да се сам пројекат објави под другом лиценцом (одобрено од ОСИ лиценца Апацхе КСНУМКСИ не OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

МитхрилДБ, као и МДБКС, такође се заснива на дрво Б+ и такође ће имати изузетно високе перформансе, док ће елиминисати бројне фундаменталне недостатке МДБКС и ЛМДБ. Конкретно, биће елиминисан проблем „дугог читања“, који се манифестује као „надувавање“ базе података због чињенице да је обрада смећа блокирана дугим трансакцијама читања. Нове МитхрилДБ карактеристике укључују:

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

Извор: линук.орг.ру

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