Vydání integrované SGBD libmdbx 0.13.2

Bylo vydáno vydání knihovny libmdbx 0.13.2 (MDBX) s implementací vysoce výkonné, kompaktní integrované databáze 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, stejně jako ruský Elbrus 2000. Pro libmdbx je k dispozici rozšířené API pro C++ a podporované jazykové vazby pro Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno a 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:

  • Bylo zrychleno obnovení GC při vracení/přesunu seznamů stránkování v složitých scénářích. Byla vylepšena a aktivována dříve vypnutá experimentální režim korektivní zpětné vazby. Tímto způsobem došlo k zásadnímu zlepšení konvergence (snížení počtu opakování), jakož i odstranění defektu vedoucího k „cyklování“ při potvrzení transakcí (s vracením chyby MDBX_PROBLEM) v raritních specifických podmínkách.
  • Do skriptů pro sestavení CMake byl zahrnut standard C23.
  • Byly přidány T-makra pro párové funkce char/wchar_t.
  • Do C++ API byla přidána podpora vnořených zapisovacích transakcí.
  • Byl proveden přechod na druhé vydání specifikace sémantického verzování („Semantic Versioning 2“) a zajištěn export informací o verzi do VERSION.json.
  • Pro reprodukovatelnost sestavení byla přidána podpora proměnné prostředí SOURCE_DATE_EPOCH. Podpora MDBX_BUILD_TIMESTAMP byla zachována a tato proměnná má přednost.
  • Byla přidána možnost uvést další informace o sestavení libmdbx prostřednictvím volby MDBX_BUILD_METADATA. Nyní zadané informace jsou jednoduše vloženy do knihovny jako hodnota mdbx_build.metadata a budou v budoucnu také využity při vytváření balíčků a podobně.
  • Bylo přidáno logování chyb vracených z API. Nyní stačí nastavit úroveň logování MDBX_LOG_DEBUG (pro logování chyb s výjimkou MDBX_NOTFOUND) nebo MDBX_LOG_TRACE (pro logování všech chyb, včetně MDBX_RESULT_TRUE).
  • Změna chování:
    • Byla přidána metoda mdbx::cursor::get_multiple_samelength() a přejmenována mdbx::txn::put_multiple_samelength().
    • Pro jednotnost C++ API při provádění operace MDBX_GET_MULTIPLE je nyní také vracena samotná hodnota klíče.
    • U velikostních konstant mdbx::env::geometry byl základní typ změněn z bezznakového size_t na znakový intptr_t.
    • Volba využití ntdll místo CRT se nyní provádí pouze při výslovném vypnutí C++ API.
    • Bylo zajištěno uvolnění paměti přerušených/ukončených čtecích transakcí předávaných do mdbx_txn_commit(). Dohoda o API vyžaduje, aby takové transakce byly uvolňovány pomocí mdbx_txn_abort(), což způsobovalo, že funkce mdbx_txn_commit() vracela chybu v těchto případech, aniž by ukončila samotné transakce. To vedlo k únikům paměti kvůli chybám v aplikacích, což přimělo k změně chování.
    • Použití makra __deprecated_enum, pokud je definováno.
    • Při kompilaci pomocí CMake se výběr standardu jazyka C nyní provádí s ohledem na CMAKE_C_STANDARD.

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