Vydání vestavěné databázové SŘBD libmdbx 0.13

Byl zveřejněn nový výstup knihovny libmdbx 0.13.1 (MDBX) implementující vysoce výkonnou kompaktní vestavěnou databázi typu klíč-hodnota. Kód libmdbx je distribuován pod licencí Apache 2.0. Podporovány jsou všechny aktuální operační systémy a architektury, včetně ruského Elbrus 2000. Pro libmdbx je k dispozici rozšířené API pro C++, stejně jako podporované vazby pro jazyky Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Historicky je libmdbx hlubokou přepracováním SGBD LMDB a převyšuje svého předchůdce z hlediska spolehlivosti, funkčnosti a výkonu. Ve srovnání s LMDB se v libmdbx klade velký důraz na kvalitu kódu, stabilitu API, testování a automatické kontroly. Dodávána je utilita pro kontrolu integrity struktury databáze s některými možnostmi obnovy. Technologie libmdbx nabízí ACID, přísnou serializaci změn a neblokující čtení s lineárním škálováním podle jader CPU. Podporována je automatická kompaktifikace, automatické řízení velikosti databáze a odhad objemu dotazů podle rozsahů (range query estimation).

Hlavní změny:

  • Změna licence kódu z OpenLDAP Public License na Apache 2.0.
  • Rozšíření API kurzorů o pohodlnější a zřejmější operace pro pozicování podle podmínek <, =, > jak pro klíče, tak pro páry klíč-hodnota. Byly přidány funkce mdbx_cursor_unbind() a mdbx_txn_release_all_cursors() pro flexibilní správu kurzorů v scénářích opětovného použití s cílem snížit režijní náklady. Funkce mdbx_cursor_scan() a mdbx_cursor_scan_from() pro skenování tabulek s využitím funkčního predikátu a snížením souvisejících režijních nákladů.
  • Přepracování kurzorů za účelem zjednocení chování, a pro pravidelnější kód, snížení počtu větvení a strojových operací.
  • Přesunutí funkcionality utility mdbx_chk dovnitř knihovny ve formě funkce mdbx_env_chk() pro kontrolu integrity struktury databáze, včetně zahrnutí logiky aplikace.
  • Volba MDBX_opt_gc_time_limit pro flexibilnější řízení času stráveného hledáním posloupností sousedících volných stránek v GC.
  • Výrazné snížení režijních nákladů na zahájení transakcí ve scénářích s velkým počtem DBI-handlů díky odložené/líné inicializaci prvků pomocných tabulek. Zahrnuje také mechanismus podpory řídkých sad DBI-handlů řízený volbou kompilace MDBX_ENABLE_DBI_SPARSE, která je ve výchozím nastavení povolena.
  • Snížení režijních nákladů na otevírání DBI-handlů. To zahrnuje mechanismus odloženého uvolnění a podporu rychlé cesty otevření bez použití zámků, řízený volbou kompilace MDBX_ENABLE_DBI_LOCKFREE, která je ve výchozím nastavení povolena.
  • Podpora „parkování“ čtecích transakcí s jejich vytlačováním kvůli zpracování starých MVCC snímků a prevenci problémů způsobených pozastavením zpracování odpadních dat. Mechanismus parkování a vytlačování zaparkovaných transakcí je jak doplňkem, tak jednodušší alternativou k zpětnému volání Handle-Slow-Readers. Pro pohodlí mají funkce mdbx_txn_park() a mdbx_txn_unpark() dodatečné argumenty, které umožňují požádat o automatické „odparkování“ zaparkovaných a restartování vytlačených transakcí. Do utility mdbx_copy byly přidány odpovídající možnosti -d a -p.
  • Podpora obnovení otevřeného pracovního prostředí s DB v podprocesu po rozvětvení/prolomení procesu prostřednictvím mdbx_env_resurrect_after_fork().
  • Podpora přejmenovávání tabulek prostřednictvím mdbx_dbi_rename() a mdbx_dbi_rename2(). Přidána funkce mdbx_enumerate_tables() pro získání informací o pojmenovaných uživatelských tabulkách.
  • Režim MDBX_NOSTICKYTHREADS místo MDBX_NOTLS pro zjednodušení integrace s lehkými vlákny/multiplexováním s transakcemi v operačním systému.
  • Pro identifikaci DB byl přidán UUID dostupný v poli mi_dxbid struktury MDBX_envinfo, která je získávána prostřednictvím mdbx_env_info_ex(). Byla implementována funkce pro získání informací o DB bez jejího otevření prostřednictvím mdbx_preopen_snapinfo().
  • Podpora funkcí logování zpětného volání bez funkčnosti vprintf(), což podstatně usnadňuje používání logování v vazbách na jiné programovací jazyky.
  • Přidání funkcí do API mdbx_txn_copy2pathname() a mdbx_txn_copy2fd().
  • Restrukturalizace zdrojového kódu s refaktoringem.
  • Použití termínu „tabulka“ místo „subDb“.
  • Vyhlášení opce MDBX_COALESCE a MDBX_NOTLS jako zastaralé. Nahrazení velitelské volby MDBX_USE_VALGRIND běžně přijatou ENABLE_MEMCHECK.

Zdroj: opennet.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