Otrais libmdbx v1.0 laidiena kandidāts pēc piecu gadu izstrādes.

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

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе koks B+ bez proaktīva mežizstrāde, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

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

  • Būtībā lielāka uzmanība tiek pievērsta koda kvalitātei, testēšanai un automātiskajām pārbaudēm.
  • Ievērojami lielāka kontrole darbības laikā, sākot no parametru pārbaudes līdz datu bāzes struktūru iekšējam auditam.
  • Automātiska blīvēšana un automātiska datu bāzes lieluma pārvaldība.
  • Viens datu bāzes formāts 32 bitu un 64 bitu komplektiem.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Atbalsts atslēgas, kas ir divreiz lielākas par pankūkām, un lietotāja izvēles datu bāzes lapas izmērs.

Выпущенный релиз-кандидат 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 и т. д.
  • Atjaunināt API apraksti.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake atbalsts.
  • Atbalsts ligzdotiem darījumiem.
  • Bootid izmantošana, lai noteiktu, vai OS ir pārstartēta (netīra datu bāzes apturēšana).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Opcija MDBX_ACCEDE, lai izveidotu savienojumu ar jau atvērtu datu bāzi saderīgā režīmā.
  • Izmantot OFD bloķēšana kad tas ir pieejams.
  • Karstā dublēšana caurulē.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Maksimālais atslēgas garums ir palielināts.
  • Automātiska priekšlasīšanas kontrole (datu bāzes failu kešatmiņas stratēģija atmiņā).
  • Agresīvāka un ātrāka automātiskā blīvēšana.
  • Optimālāka stratēģija B+ koka lapu sapludināšanai.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Pārbaužu kopums ir paplašināts.

"Nākamās" libmdbx versijas izstrāde turpināsies kā atsevišķs projekts MithrilDB, savukārt MDBX “pašreizējās” versijas attīstības vektors ir vērsts uz funkciju kopas iesaldēšanu un stabilizēšanu. Šāds lēmums tika pieņemts trīs iemeslu dēļ:

  • Pilnīgi nesaderīgs: MithrilDB nepieciešams cits (nesaderīgs) datu bāzes faila formāts un cits (nesaderīgs) API, lai ieviestu visas plānotās funkcijas.
  • Jauns pirmkods: MithrilDB pirmkods ir licencēts neatkarīgi no LMDB, un pašu projektu plānots publicēt ar citu licenci (apstiprinājusi OSI licence Apache 2.0Un ne OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, tāpat kā MDBX, arī ir balstīts uz koks B+ un tam būs arī ārkārtīgi augsta veiktspēja, vienlaikus novēršot vairākus būtiskus MDBX un LMDB trūkumus. Jo īpaši tiks novērsta “ilgo lasīšanas” problēma, kas izpaužas kā datu bāzes “uztūkšana” tādēļ, ka atkritumu apstrādi bloķē garas lasīšanas transakcijas. Jaunās MithrilDB funkcijas ietver:

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

Avots: linux.org.ru

Pievieno komentāru