pro testování druhého kandidáta na vydání knihovny s implementací vysoce výkonné, kompaktní, vestavěné databáze klíč-hodnota. Aktuální verze (0.5) je údržbové vydání, které označuje dokončení všech vylepšení a přechod do fáze veřejného finálního testování a stabilizace, po níž následuje vytvoření první plné verze knihovny. Kód libmdbx pod veřejnou licencí OpenLDAP.
Knihovna MDBX je výrazně přepsanou verzí knihovny — transakční vestavěný DBMS třídy „klíč–hodnota“ založený na без , což umožňuje vícevláknovým procesům pracovat souběžně a efektivně s lokálně sdílenou (ne síťovou) databází. MDBX je na druhou stranu rychlejší a spolehlivější než LMDB a zároveň si zachovává všechny klíčové vlastnosti svého předchůdce, jako například 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í knihovny libmdbx je výsledkem rozhodnutí o oddělení projektů MDBX a MithrilDB ze srpna 2019. Cílem knihovny libmdbx bylo eliminovat co nejvíce technického dluhu a stabilizovat knihovnu. Ve skutečnosti bylo v tomto směru odvedeno dvakrát až třikrát více práce, než se původně odhadovalo a plánovalo:
- Implementovaná podpora macOS a platformy druhé úrovně: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. V případě potřeby lze přidat podporu pro AIX a HP-UX.
- Kód byl sanitizován pomocí nástrojů Undefined Behavior Sanitizer a Address Sanitizer, všechna varování při sestavování s parametrem "-Wpedantic" byla odstraněna, stejně jako všechna varování Coverity Static Analyzer atd.
- Aktualizace .
- Sloučení (amalgamace) zdrojového kódu pro snadné vkládání.
- CMake podporu.
- Podpora pro vnořené transakce.
- Použití bootid k určení, zda se OS restartoval (špinavé zastavení databáze).
- Komplexní počítání 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í když bude dostupný.
- Horká záloha v potrubí.
- 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+.
- Monitorování nelokálních souborových systémů (NFS, Samba atd.) za účelem prevence poškození databáze v důsledku nesprávného použití.
- Sada testů byla rozšířena.
Vývoj "další" verze libmdbx bude pokračovat jako samostatný projekt , 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 Licence Apache 2.0, nikoli ).
- Oddělení pomáhá předcházet potenciálním nejasnostem, poskytuje větší přehlednost a zajišťuje nezávislé vývojové cesty projektů.
MithrilDB, stejně jako MDBX, je také založen na 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 pro umístění databází na několik různých typů médií: HDD, SSD a energeticky nezávislá paměť.
- Optimální strategie pro „vysoce hodnotná“ a „nízce hodnotná“ data, pro „horká“, „teplá“ a „studená“ data.
- Použití Merkleho stromu k monitorování integrity databáze.
- Volitelné použití WAL a výrazně vyšší výkon v situacích s vysokou zápisovou náročností se zárukou integrity dat.
- Pomalé dohánění dat (lazy catching) - ukládání dat na disky.
Zdroj: opennet.ru
