Po piatich rokoch vývoja bol zverejnený druhý kandidát na vydanie libmdbx 1.0
K dispozícii для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx distribuovaný под лицензией OpenLDAP Public License.
Библиотека MDBX является существенно переработанным ответвлением от LMDB — transakčné vstavané DBMS triedy „kľúč – hodnota“ založené na strom B+ bez proaktívne protokolovanie, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.
Najdôležitejšie rozdiely medzi MDBX a LMDB:
V zásade sa väčšia pozornosť venuje kvalite kódu, testovaniu a automatickým kontrolám.
Výrazne väčšia kontrola počas prevádzky, od kontroly parametrov až po interný audit databázových štruktúr.
Automatická kompaktifikácia a automatická správa veľkosti databázy.
Formát jednej databázy pre 32-bitové a 64-bitové zostavy.
Odhad objemov vzoriek podľa rozsahov (odhad dotazu na rozsah).
Podpora kľúčov dvakrát väčších ako palacinky a užívateľsky voliteľná veľkosť stránky databázy.
Выпущенный кандидат в релизы 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 и т.д.
Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
Súbor testov bol rozšírený.
Vývoj „ďalšej“ verzie libmdbx bude pokračovať ako samostatný projekt MithrilDB, zatiaľ čo vývojový vektor „aktuálnej“ verzie MDBX je zameraný na zmrazenie súboru funkcií a jeho stabilizáciu. Toto rozhodnutie bolo prijaté z troch dôvodov:
Úplne nekompatibilné: MithrilDB vyžaduje iný (nekompatibilný) formát súboru databázy a iné (nekompatibilné) API na implementáciu všetkých plánovaných funkcií.
Nový zdrojový kód: Zdrojový kód MithrilDB bol licencovaný nezávisle od LMDB a samotný projekt sa plánuje publikovať pod inou licenciou (schválenou OSI лицензией Apache 2.0, а не Verejná licencia OpenLDAP).
Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.
MithrilDB, podobne ako MDBX, je tiež založený na strom B+ a bude sa tiež vyznačovať extrémne vysokým výkonom, pričom eliminuje množstvo základných nevýhod MDBX a LMDB. Predovšetkým sa odstráni problém „dlhého čítania“, ktorý sa prejavuje „nafúknutím“ databázy v dôsledku toho, že spracovanie odpadu je blokované dlhými transakciami čítania. Medzi nové funkcie MithrilDB patria:
Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
Использование Merkle tree для контроля целостности БД.
Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.