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 ú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 distribuovány pod veřejnou licencí OpenLDAP.

Knihovna MDBX je výrazně přepsanou verzí knihovny LMDB — transakční vestavěný DBMS třídy „klíč–hodnota“ založený na strom B+ без proaktivní protokolování, 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 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í 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 Popisy API.
  • 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í 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+.
  • 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 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, nikoli OpenLDAP Public License).
  • 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 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 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

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster