Vydání kompaktního vestavěného DBMS libmdbx 0.9.1

Vydáno verze knihovny 0.9.1 libmdbx (MDBX) implementace vysoce výkonné, kompaktní vestavěné databáze klíč-hodnota. Kód libmdbx je distribuován pod licencí OpenLDAP Public License.

Aktuální verze je kompromisem mezi záměrem vydat dlouhodobě stabilní verzi 1.0 s plnou podporou C++ a neochotou odkládat vydání kvůli nepřipravenosti na zmrazení nového C++ API. Prezentovaná verze je výsledkem 9 měsíců práce zaměřené na stabilizaci knihovny a zlepšení její použitelnosti a obsahuje také předběžnou verzi C++ API.

Knihovna libmdbx není jen „fork“, ale radikálně přepracovaný potomek 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 (nesíťovou) databází bez dedikovaného serveru. libmdbx zásadně rozšiřuje schopnosti svého předka a zároveň eliminovat nebo zmírnit nevýhody. Zároveň je podle vývojářů libmdbx o něco rychlejší a výrazně spolehlivější než LMDB.

libmdbx navrhuje ACID, přísná serializace změn a neblokující čtení s lineárním škálováním napříč jádry CPU. Výsledky testování výkonu (odesílání požadavků paralelního čtení/hledání ve vláknech 1-2-4-8 na CPU i7-4600U se 2 fyzickými jádry v režimu 4vlákna HyperThread):

Vydání kompaktního vestavěného DBMS libmdbx 0.9.1

Nejdůležitější rozdíly mezi MDBX a LMDB:

  • Větší pozornost je v zásadě věnována kvalitě kódu, konzistenci API, 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 dvakrát delších kláves a uživatelsky volitelná velikost stránky databáze.
  • Nástroj pro kontrolu integrity struktury databáze s některými možnostmi obnovy.

Hlavní inovace a vylepšení po předchozí zprávy se zavedením verze 0.5 v lednu 2020:

  • Pro rychlou podporu a odpovědi na otázky byl vytvořen otevřený systém. Skupina telegramů.
  • Bylo odstraněno více než desítka chyb a nedostatků (viz. protokol změn).
  • Bylo opraveno mnoho překlepů a pravopisných chyb a byla provedena řada kosmetických vylepšení.
  • Testovací scénáře byly rozšířeny.
  • Podpora pro iOS, Android, kořen stavby, musl, uClibc, WSL1 и Víno.
  • Náhled C++ API vydán v jeden hlavičkový soubor.
  • Vestavěná dokumentace ve formátu Doxygen a automatické generování Online dokumentace.
  • Je zajištěno automatické generování archivů se sloučenými zdrojovými texty.
  • Přidána podpora pro přípravu transakcí a kurzorů, uživatelských kontextů pro transakce a kurzory.
  • Byly implementovány další metody pro řízení referenční integrity ve snímcích B+tree MVCC.
  • Přidána podpora pro kontrolu MVCC snímku databáze, přístupná přes libovolnou meta stránku s možností přepnutí na obnovu.
  • Implementována podpora opětovného otevření databáze z jednoho procesu pro účely testování atp.
  • Implementováno automatické zpracování volby MDBX_NOSUBDIR při otevírání databáze.
  • Přidány funkce pro generování celočíselných klíčů z hodnot s plovoucí desetinnou čárkou a JavaScript „univerzálních“ čísel.
  • Celkem bylo provedeno 430 změn týkajících se 93 souborů, bylo přidáno více než 25 tisíc řádků, více než 8.5 tisíce řádků bylo smazáno.

Následný vývoj libmdbx se zaměří na finální C++ API, další stabilizaci základního kódu, zlepšení použitelnosti knihovny a balení pro populární linuxové distribuce. Mezi navrhovanými vylepšeními stojí za zmínku podpora klíčů ve formátu MessagePack.

Zdroj: opennet.ru

Přidat komentář