Efter fem års udvikling er den anden libmdbx 1.0-udgivelseskandidat blevet offentliggjort

Ledig для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx distribueret af под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — transaktionelt indlejret DBMS af klassen "nøgleværdi" baseret på træ B+ без proaktiv logning, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.

De vigtigste forskelle mellem MDBX og LMDB:

  • Grundlæggende lægges der mere vægt på kodekvalitet, test og automatiske kontroller.
  • Betydeligt mere kontrol under drift, fra kontrol af parametre til intern revision af databasestrukturer.
  • Automatisk komprimering og automatisk databasestørrelsesstyring.
  • Et enkelt databaseformat til 32-bit og 64-bit samlinger.
  • Estimering af prøvevolumener efter intervaller (intervallforespørgselsestimering).
  • Understøttelse af nøgler dobbelt så store som pandekager og brugervalgbar databasesidestørrelse.

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Opdatering API-beskrivelser.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • CMake support.
  • Understøttelse af indlejrede transaktioner.
  • Brug af bootid til at bestemme, om operativsystemet er genstartet (stop af beskidt database).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Mulighed MDBX_ACCEDE for at oprette forbindelse til en allerede åben database i kompatibel tilstand.
  • Brug OFD blokering når det er tilgængeligt.
  • Varm backup i rør.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Den maksimale nøglelængde er blevet øget.
  • Automatisk styring af fremadlæsning (databasefil-caching-strategi i hukommelsen).
  • Mere aggressiv og hurtigere auto-komprimering.
  • En mere optimal strategi til at flette B+ træsider.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Sættet af test er blevet udvidet.

Udviklingen af ​​den "næste" version af libmdbx vil fortsætte som et separat projekt MithrilDB, mens udviklingsvektoren for den "aktuelle" version af MDBX er rettet mod at fryse funktionssættet og stabilisere det. Denne beslutning blev truffet af tre grunde:

  • Fuldstændig inkompatibel: MithrilDB kræver et andet (inkompatibelt) databasefilformat og et andet (inkompatibelt) API for at implementere alle planlagte funktioner.
  • Ny kildekode: MithrilDB-kildekoden er blevet licenseret uafhængig af LMDB, og selve projektet er planlagt udgivet under en anden licens (godkendt af ELLER HVIS лицензией Apache 2.0, а не OpenLDAP offentlig licens).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB er ligesom MDBX også baseret på træ B+ og vil også have ekstrem høj ydeevne, samtidig med at en række grundlæggende ulemper ved MDBX og LMDB elimineres. Især problemet med "lange læsninger", som manifesterer sig som "hævelse" af databasen på grund af det faktum, at affaldsbehandling er blokeret af lange læsningstransaktioner, vil blive elimineret. Nye MithrilDB-funktioner inkluderer:

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

Kilde: opennet.ru

Tilføj en kommentar