Po pěti letech vývoje byl zveřejněn druhý release candidate verze libmdbx 1.0.

Dostupné pro testování druhého kandidáta na vydání knihovny libmdbx 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 distribuováno pod licencí OpenLDAP Public License.

Knihovna MDBX je podstatně přepracovanou odnoží LMDB — transakční vestavěná DBMS typu klíč-hodnota na základě B+ stromu bez v předstihu zapisující žurnální systém, 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 ACID 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 popisu API.
  • 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í OFD zámky 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 MithrilDB, 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 OSI licencí Apache 2.0, a ne OpenLDAP Public License).
  • 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 B+ stromu 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster