Druhý kandidát na vydání libmdbx v1.0 po pěti letech vývoje.

Knihovna libmdbx je výrazně přepracovaným potomkem LMDB — vysoce výkonné, kompaktní embedded databáze typu klíč-hodnota.
Aktuální verze v0.5 je technickým vydáním, které označuje 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.

LMDB je dostatečně známou transakční embedded DBMS typu „klíč-hodnota“ založenou na B+ stromu bez v předstihu zapisující žurnální systém, která umožňuje stovkám vícerozměrných procesů konkurenčně a vysoce efektivně pracovat s lokálně sdílenou (ne síťovou) DB. Samotný MDBX je rychlejší a spolehlivější než LMDB, přičemž libmdbx zachovává všechny klíčové možnosti svého předchůdce, jako jsou ACID a neblokující čtení s lineárním škálováním podle jader CPU, a také přidává několik nových.

Popis rozdílů a vylepšení libmdbx vůči LMDB si zaslouží samostatný článek (plánované publikace na „Habré“ a „Medium“). Zde je vhodné zmínit ty nejdůležitější a nejvýraznější:

  • 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 rozsahu (range query estimation).
  • Podpora klíčů dvojnásobně větších a uživatelsky volitelné velikosti stránky DB.

Vydaný release candidate libmdbx je výsledkem rozhodnutí (viz dále) o rozdělení projektů MDBX a MithrilDB v srpnu 2019. Přitom bylo rozhodnuto odstranit (racionální) maximum technického dluhu a stabilizovat knihovnu. V praxi bylo v tomto směru uděláno 2-3krát více, než bylo původně odhadováno a plánováno:

  • Byla implementována podpora pro Mac OS a platformy „druhého sledu“: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podpora AIX a HP-UX může být přidána podle potřeby.
  • Byla provedena sanace kódu pomocí Undefined Behavior Sanitizer a Address Sanitizer, odstraněna všechna varování při sestavení s -Wpedantic, všechna varování Coverity Static Analyzer atd.
  • Aktualizace popisu API.
  • Amalgamační zdrojový kód pro snadné vložení.
  • Podpora CMake.
  • Podpora vnořených transakcí.
  • Použití bootid pro určení skutečnosti restartu OS (špinavého zastavení DB).
  • Celkový přehled 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 vnitřního třídění (až 2-3x rychlejší než qsort() a až o 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 ne-lokálních souborových systémů (NFS, Samba atd.) pro prevenci poškození databáze při nesprávném používání.
  • 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 Foundation).
  • Rozdělení umožňuje vyhnout se potenciálním záměnám, poskytnout více jasnosti a zajistit nezávislost vývoje 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í databáze na několika různorodých médiích: HDD, SSD a energie-nezávislé paměti.
  • optimální strategie pro 'cenné' a 'méně cenné', pro 'horká', 'teplá' a 'studená' data.
  • použití Merkle tree pro kontrolu integrity databáze.
  • volitelné použití WAL a výrazně vyšší výkon v scénářích s intenzivním zápisem a zárukami integrity dat.
  • lenivé dojezdové zaznamenávání dat na discích.

Zdroj: linux.org.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