Po pěti letech vývoje byl zveřejněn druhý kandidát na vydání libmdbx 1.0
Dostupný pro testování druhého kandidáta na vydání knihovny libmdbx s implementací vysoce výkonné, kompaktní vestavěné databáze klíč-hodnota. Aktuální verze (0.5) je technická verze, znamená dokončení jakýchkoli vylepšení a přechod do fáze veřejného finálního testování a stabilizace s následným vytvořením prvního plného vydání knihovny. kód libmdbx distribuovány pod licencí OpenLDAP Public License.
Knihovna MDBX je výrazně revidovaný fork z LMDB — transakční vestavěný DBMS třídy „klíč–hodnota“ založený na strom B+ без proaktivní protokolování, který umožňuje vícevláknovým procesům pracovat konkurenceschopně a efektivně s lokálně sdílenou (nikoli síťovou) databází. MDBX je zase rychlejší a spolehlivější než LMDB a zároveň si zachovává všechny klíčové vlastnosti svého předka, jako např. ACID a neblokující čtení s lineárním škálováním napříč jádry CPU.
Nejdůležitější rozdíly mezi MDBX a LMDB:
Větší pozornost je v zásadě věnována kvalitě kódu, testování a automatickým kontrolám.
Výrazně větší kontrola během provozu, od kontroly parametrů až po interní audit databázových struktur.
Automatická kompaktifikace a automatická správa velikosti databáze.
Jediný databázový formát pro 32bitové a 64bitové sestavy.
Odhad objemů vzorků podle rozsahů (odhad dotazu na rozsah).
Podpora kláves dvakrát větších než palačinky a uživatelsky volitelná velikost stránky databáze.
Kandidát na vydání libmdbx je výsledkem rozhodnutí ze srpna 2019 oddělit projekty MDBX a MithrilDB. Zároveň se libmdbx rozhodlo odstranit (racionální) maximální technický dluh a knihovnu stabilizovat. Ve skutečnosti se v určeném směru udělalo 2-3krát více, než se původně odhadovalo a plánovalo:
Byla implementována podpora pro macOS a platformy druhé úrovně: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podle potřeby lze přidat podporu AIX a HP-UX.
Kód byl dezinfikován pomocí Undefined Behavior Sanitizer a Address Sanitizer, všechna varování při sestavování s „-Wpedantic“, všechna varování Coverity Static Analyzer atd. byla odstraněna.
Specializovaný optimalizovaný interní třídicí algoritmus (až 2-3krát rychlejší než „qsort()“ a až o 30 % rychlejší než „std::sort()“).
Maximální délka klíče byla zvýšena.
Automatické řízení předčítání (strategie ukládání databázových souborů do mezipaměti).
Agresivnější a rychlejší automatické zhutňování.
Optimálnější strategie pro slučování stránek stromu B+.
Kontrola nelokálních souborových systémů (NFS, Samba atd.), aby se zabránilo poškození databáze při nesprávném použití.
Sada testů byla rozšířena.
Vývoj "další" verze libmdbx bude pokračovat jako samostatný projekt MithrilDB, zatímco vývojový vektor „aktuální“ verze MDBX je zaměřen na zmrazení sady funkcí a její stabilizaci. Toto rozhodnutí bylo učiněno ze tří důvodů:
Zcela nekompatibilní: MithrilDB vyžaduje jiný (nekompatibilní) formát databázového souboru a jiné (nekompatibilní) API pro implementaci všech plánovaných funkcí.
Nový zdrojový kód: Zdrojový kód MithrilDB byl licencován nezávisle na LMDB a samotný projekt má být publikován pod jinou licencí (schválenou OSI Licence Apache 2.0 ne OpenLDAP Public License).
Oddělení zabraňuje potenciálnímu zmatku, přináší větší jistotu a zajišťuje nezávislou cestu projektů.
MithrilDB, stejně jako MDBX, je také založen na strom B+ a bude se také vyznačovat extrémně vysokým výkonem, přičemž eliminuje řadu zásadních nevýhod MDBX a LMDB. Odpadne zejména problém „dlouhého čtení“, který se projevuje jako „nabobtnání“ databáze v důsledku toho, že zpracování odpadků je blokováno dlouhými transakcemi čtení. Mezi nové funkce MithrilDB patří:
Podpora umístění databáze na několik heterogenních médií: HDD, SSD a energeticky nezávislá paměť.
Optimální strategie pro „cenná“ a „nízká hodnota“, pro „horká“, „teplá“ a „studená“ data.
Použití stromu Merkle k monitorování integrity databáze.
Volitelné použití WAL a výrazně zlepšený výkon ve scénářích náročných na zápis se zárukou integrity dat.