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.
  • Aktualizace Popisy API.
  • Sloučení (sloučení) 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).
  • Úplné 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í OFD blokování 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+.
  • 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.
  • Lazy catch-up odesílání dat na disky.

Zdroj: opennet.ru

Přidat komentář