pro testování druhého kandidáta na vydání knihovny s realizací vysoce výkonné, kompaktní vestavěné databáze typu klíč-hodnota. Aktuální verze (0.5) je technickým vydáním, které signalizuje dokončení jakýchkoli úprav 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 plnohodnotného vydání knihovny. Kód libmdbx pod licencí OpenLDAP Public License.
Knihovna MDBX je podstatně přepracovanou odnoží — transakční vestavěná DBMS typu klíč-hodnota na základě bez , která umožňuje vícerozměrným procesům konkurentně a efektivně pracovat s lokálně sdílenou (ne síťovou) DB. MDBX je rychlejší a spolehlivější než LMDB, a přitom si zachovává všechny klíčové možnosti svého předchůdce, jako jsou a nezablokované čtení s liniovým škálováním podle jader CPU.
Nejdůležitější rozdíly MDBX ve srovnání s LMDB:
- Výrazně více pozornosti je věnováno kvalitě kódu, testování a automatickému ověřování.
- Podstatně více kontroly během práce, počínaje kontrolou parametrů, konče interním auditem struktur databáze.
- Automatická kompakce a automatické řízení velikosti databáze.
- Jednotný formát databáze pro 32-bitové a 64-bitové verze.
- Odhad objemu výběrů podle rozsahů (estimation query range).
- Podpora klíčů dvojnásobně větších a uživatelsky volitelné velikosti stránky DB.
Uvolněný kandidát na vydání libmdbx je výsledkem rozhodnutí přijatého v srpnu 2019 o rozdělení projektů MDBX a MithrilDB. Bylo rozhodnuto v libmdbx odstranit (racionální) maximum technického dluhu a stabilizovat knihovnu. V praxi bylo v této oblasti provedeno 2-3krát více, než se původně odhadovalo a plánovalo:
- Byla implementována podpora macOS a platforem „druhé úrovně“: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podpora AIX a HP-UX může být přidána při potřebě.
- Byla provedena sanace kódu pomocí Undefined Behavior Sanitizer a Address Sanitizer, byla odstraněna všechna upozornění při sestavení s „-Wpedantic“, všechna upozornění Coverity Static Analyzer atd.
- Aktualizace .
- Sloučení (amalgame) zdrojového kódu pro usnadnění integrace.
- Podpora CMake.
- Podpora vnořených transakcí.
- Použití bootid pro určení skutečnosti restartu OS (špinavého zastavení DB).
- Celkový počet aktualizovaných/starých stránek a rozšířené informace o transakcích.
- Možnost MDBX_ACCEDE pro připojení k již otevřené databázi v kompatibilním režimu.
- Použití v případě jejich dostupnosti.
- Horké zálohování pomocí pipe.
- Specializovaný optimalizovaný algoritmus interního třídění (až 2-3krát rychlejší než „qsort()“ a až 30% rychlejší než „std::sort()“).
- Zvýšena maximální délka klíče.
- Automatické řízení načítání (strategie ukládání do vyrovnávací paměti databázového souboru v paměti).
- Agresivnější a rychlejší automatická kompakce.
- Optimálnější strategie sloučení stránek B+ stromu.
- Kontrola nelokálních souborových systémů (NFS, Samba atd.) pro prevenci poškození DB při nesprávném použití.
- Rozšířená sada testů.
Vývoj 'další' verze libmdbx bude pokračovat v rámci samostatného projektu , zatímco vývoj 'aktuální' verze MDBX je zaměřen na zafixování sady funkcí a stabilizaci. Toto rozhodnutí bylo přijato ze tří důvodů:
- Úplná nekompatibilita: pro realizaci všech plánovaných funkcí v MithrilDB je vyžadován jiný (nekompatibilní) formát databázových souborů a jiné (nekompatibilní) API.
- Nový zdrojový kód: pro zdrojový kód MithrilDB je zajištěna licenční nezávislost na LMDB a samotný projekt bude plánován k publikaci pod jinou licencí (schválenou licencí Apache 2.0, a ne ).
- Rozdělení umožňuje předejít potenciálnímu zmatení, přinést více určitého a zajistit nezávislost cesty rozvoje projektů.
MithrilDB, stejně jako MDBX, se také zakládá na a také se bude vyznačovat maximální výkonem, přičemž odstraní řadu zásadních nevýhod MDBX a LMDB. Zejména bude odstraněn problém 'dlouhých čtení', který se projevuje jako 'nafouknutí' databáze v důsledku toho, že zpracování odpadu je blokováno dlouhými čtecími transakcemi. Mezi nové možnosti MithrilDB patří:
- Podpora umístění DB na různých heterogenních médiích: HDD, SSD a nevolatilní paměti.
- Optimální strategie pro „cenné“ a „málo cenné“, pro „horká“, „teplá“ a „studená“ data.
- Použití Merkle trees pro kontrolu integrity databáze.
- Volitelný výkon WAL a výrazně vyšší výkon v scénářích s intenzivním zápisem s garancemi integrity dat.
- Líné dodatečné ukládání dat na discích.
Zdroj: opennet.ru
