Vydanie kompaktného vstavaného DBMS libmdbx 0.9.1

Vydané verzia knižnice 0.9.1 libmdbx (MDBX) implementácia vysokovýkonnej kompaktnej databázy kľúč-hodnota. Kód libmdbx je distribuovaný pod licenciou Verejná licencia OpenLDAP.

Aktuálna verzia je kompromisom medzi zámerom vydať dlhodobo stabilnú verziu 1.0 s plnou podporou C++ a neochotou odkladať vydania z dôvodu nepripravenosti na zmrazenie nového C++ API. Prezentovaná verzia je výsledkom 9-mesačnej práce zameranej na stabilizáciu knižnice a zlepšenie jej použiteľnosti a obsahuje aj predbežnú verziu C++ API.

Knižnica libmdbx nie je len „fork“, ale radikálne prerobený potomok LMDB — transakčné vstavané DBMS triedy „kľúč – hodnota“ založené na strom B+ bez proaktívne protokolovanie, ktorý umožňuje viacvláknovým procesom pracovať konkurencieschopne a efektívne s lokálne zdieľanou (nesieťovou) databázou bez dedikovaného serverového procesu. libmdbx zásadne expanduje schopnosti svojho predka pri súčasnom odstránení alebo zmiernení nevýhod. Zároveň je podľa vývojárov libmdbx o niečo rýchlejší a výrazne spoľahlivejší ako LMDB.

libmdbx navrhuje ACID, prísna serializácia zmien a neblokujúce čítanie s lineárnym škálovaním naprieč jadrami CPU. Výsledky testovania výkonu (odosielanie paralelných požiadaviek na čítanie/vyhľadávanie v 1-2-4-8 vláknach na CPU i7-4600U s 2 fyzickými jadrami v 4-vláknovom režime HyperThread):

Vydanie kompaktného vstavaného DBMS libmdbx 0.9.1

Najdôležitejšie rozdiely medzi MDBX a LMDB:

  • V zásade sa väčšia pozornosť venuje kvalite kódu, konzistencii API, 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 objemov vzoriek podľa rozsahov (odhad dotazu na rozsah).
  • Podpora pre dvakrát dlhšie klávesy a užívateľsky voliteľná veľkosť stránky databázy.
  • Pomôcka na kontrolu integrity štruktúry databázy s niektorými schopnosťami obnovy.

Hlavné inovácie a vylepšenia po predchádzajúce správy so zavedením verzie 0.5 v januári 2020:

  • Pre rýchlu podporu a odpovede na otázky bol vytvorený otvorený systém. Telegramová skupina.
  • Bolo odstránených viac ako tucet chýb a nedostatkov (viď. changelog).
  • Opravilo sa veľa preklepov a pravopisných chýb a urobili sa mnohé kozmetické vylepšenia.
  • Testovacie scenáre boli rozšírené.
  • Podpora pre iOS, Android, buildroot, musl, uClibc, WSL1 и Víno.
  • Ukážka C++ API vydaná v jeden hlavičkový súbor.
  • Zabudovaná dokumentácia vo formáte Doxygen a automatické generovanie Online dokumentácia.
  • Poskytuje sa automatické generovanie archívov so zlúčenými zdrojovými textami.
  • Pridaná podpora pre prípravu transakcií a kurzorov, užívateľské kontexty pre transakcie a kurzory.
  • Boli implementované ďalšie metódy na kontrolu referenčnej integrity v snímkach B+tree MVCC.
  • Pridaná podpora pre kontrolu MVCC snímky databázy, prístupná cez akúkoľvek meta stránku s možnosťou prepínania na obnovu.
  • Implementovaná podpora opätovného otvorenia databázy z jedného procesu na testovacie účely atď.
  • Implementované automatické spracovanie voľby MDBX_NOSUBDIR pri otváraní databázy.
  • Pridané funkcie na generovanie celočíselných kľúčov z hodnôt s pohyblivou rádovou čiarkou a „univerzálnych“ čísel JavaScriptu.
  • Celkovo bolo vykonaných 430 zmien týkajúcich sa 93 súborov, pridaných viac ako 25 tisíc riadkov, zmazaných viac ako 8.5 tisíc riadkov.

Následný vývoj libmdbx sa zameria na finálne C++ API, ďalšiu stabilizáciu základného kódu, zlepšenie použiteľnosti knižnice a balenie pre populárne linuxové distribúcie. Medzi navrhovanými vylepšeniami stojí za zmienku podpora kľúčov vo formáte MessagePack.

Zdroj: opennet.ru

Pridať komentár