Druhý kandidát na vydanie libmdbx v1.0 po piatich rokoch vývoja.

knižnica libmdbx je výrazne prepracovaný potomok LMDB - extrémne výkonná, kompaktná embedded databáza kľúč-hodnota.
Aktuálna verzia v0.5 je technické vydanie, znamená dokončenie akýchkoľvek vylepšení a prechod do fázy verejného záverečného testovania a stabilizácie s následným vytvorením prvého úplného vydania knižnice.

LMDB je pomerne dobre známy transakčný embedded kľúč-hodnota DBMS založený na strom B+ bez proaktívne protokolovanie, ktorý umožňuje množstvu viacvláknových procesov konkurencieschopne a mimoriadne efektívne pracovať s lokálne zdieľanou (nie sieťovou) databázou. MDBX je zasa rýchlejší a spoľahlivejší ako LMDB, zatiaľ čo libmdbx si zachováva všetky kľúčové vlastnosti svojho predka, ako napr. ACID a neblokujúce čítanie s lineárnym škálovaním naprieč jadrami CPU a pridáva aj niekoľko nových.

Popis rozdielov a vylepšení libmdbx v porovnaní s LMDB si zaslúži samostatný článok (plánovaný by mal byť publikovaný na Habré a Medium). Tu je vhodné spomenúť tie najdôležitejšie a najpozoruhodnejšie:

  • V zásade sa väčšia pozornosť venuje kvalite kódu, testovaniu a automatickým kontrolám.
  • Výrazne väčšia kontrola počas prevádzky, od kontroly parametrov až po interný audit databázových štruktúr.
  • Automatická kompaktifikácia a automatická správa veľkosti databázy.
  • Formát jednej databázy pre 32-bitové a 64-bitové zostavy.
  • Odhad veľkosti vzorky podľa rozsahov (odhad dotazu na rozsah).
  • Podpora kľúčov dvakrát väčších ako palacinky a užívateľsky voliteľná veľkosť stránky databázy.

Kandidát na vydanie libmdbx je výsledkom rozhodnutia (pozri nižšie) o oddelení projektov MDBX a MithrilDB v auguste 2019. Zároveň sa libmdbx rozhodla odstrániť (racionálny) maximálny technický dlh a stabilizovať knižnicu. V skutočnosti sa v určenom smere urobilo 2-3 krát viac, ako sa pôvodne odhadovalo a plánovalo:

  • Bola implementovaná podpora pre Mac OS a platformy druhej úrovne: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Podľa potreby je možné pridať podporu AIX a HP-UX.
  • Vyčistili kód pomocou dezinfekčného prostriedku na nedefinované správanie a dezinfekcie adries, odstránili všetky varovania pri vytváraní pomocou -Wpedantic, všetky varovania Coverity Static Analyzer atď.
  • Aktualizovať Popisy API.
  • Zlúčenie zdrojového kódu pre jednoduché vkladanie.
  • CMake podporu.
  • Podpora pre vnorené transakcie.
  • Použitie bootid na určenie, či sa OS reštartoval (špinavé zastavenie databázy).
  • Úplné počítanie aktualizovaných/starých stránok a rozšírené informácie o transakciách.
  • Možnosť MDBX_ACCEDE pre pripojenie k už otvorenej databáze v kompatibilnom režime.
  • Použitie OFD blokovanie Ak je k dispozícii.
  • Horúca záloha v potrubí.
  • Špecializovaný optimalizovaný interný triediaci algoritmus (až 2-3 krát rýchlejší ako qsort() a až 30% rýchlejší ako std::sort()).
  • Maximálna dĺžka kľúča bola zvýšená.
  • Automatické riadenie čítania dopredu (stratégia ukladania databázového súboru do pamäte cache).
  • Agresívnejšia a rýchlejšia automatická kompaktifikácia.
  • Optimálnejšia stratégia zlučovania stránok B+ stromu.
  • Kontrola nelokálnych súborových systémov (NFS, Samba atď.), aby sa predišlo poškodeniu databázy pri nesprávnom použití.
  • Súbor testov bol rozšírený.

Vývoj „ďalšej“ verzie libmdbx bude pokračovať ako samostatný projekt MithrilDB, zatiaľ čo vývojový vektor „aktuálnej“ verzie MDBX je zameraný na zmrazenie súboru funkcií a jeho stabilizáciu. Toto rozhodnutie bolo prijaté z troch dôvodov:

  • Úplne nekompatibilné: MithrilDB vyžaduje iný (nekompatibilný) formát súboru databázy a iné (nekompatibilné) API na implementáciu všetkých plánovaných funkcií.
  • Nový zdrojový kód: Zdrojový kód MithrilDB bol licencovaný nezávisle od LMDB a samotný projekt sa plánuje publikovať pod inou licenciou (schválenou OSI licencie Apache 2.0A nie OpenLDAP Foundation).
  • Oddelenie zabraňuje potenciálnemu zmätku, poskytuje väčšiu istotu a zabezpečuje, že projekty budú mať nezávislú cestu vpred.

MithrilDB, podobne ako MDBX, je tiež založený na strom B+ a bude sa tiež vyznačovať extrémne vysokým výkonom, pričom eliminuje množstvo základných nevýhod MDBX a LMDB. Predovšetkým sa odstráni problém „dlhého čítania“, ktorý sa prejavuje „nafúknutím“ databázy v dôsledku toho, že spracovanie odpadu je blokované dlhými transakciami čítania. Medzi nové funkcie MithrilDB patria:

  • podpora umiestnenia databázy na niekoľko heterogénnych médií: HDD, SSD a energeticky nezávislá pamäť.
  • optimálne stratégie pre „hodnotné“ a „nízke hodnoty“, pre „horúce“, „teplé“ a „studené“ údaje.
  • pomocou Merkleho stromu na monitorovanie integrity databázy.
  • voliteľné použitie WAL a výrazne vyšší výkon v scenároch náročných na zápis a záruky integrity údajov.
  • Lazy catch-up fixácia dát na diskoch.

Zdroj: linux.org.ru

Pridať komentár