Vydanie vstavaného DBMS libmdbx 0.13.6

Zverejnené vydanie knižnice libmdbx 0.13.6 (MDBX) s implementáciou vysoko výkonných kompaktných embedded databáz typu kľúč-hodnota. Kód libmdbx je šírený pod licenciou Apache 2.0. Podporované sú všetky aktuálne operačné systémy a architektúry, ako aj ruský Elbrus 2000. Pre libmdbx je k dispozícii vyspelé API pre C++, ako aj podpory pre jazyky Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala podporované nadšencami. Z projektov, ktoré používajú libmdbx, môžeme spomenúť Isar, Erigon a Reth, ako aj vývoj spoločností StarkWare a Positive Technologies.

Historicky je libmdbx hlbokou rekonštrukciou DB LMDB a prevyšuje svojho predchodcu z hľadiska spoľahlivosti, sady funkcií a výkonu. V porovnaní s LMDB sa v libmdbx kladie veľký dôraz na kvalitu kódu, stabilnú prácu API, testovanie a automatické kontroly. Dodáva sa nástroj na kontrolu integrity štruktúry DB s niektorými možnosťami obnovy. Technologicky libmdbx ponúka ACID, prísnu serializáciu zmien a neblokujúce čítanie s lineárnym škálovaním podľa jadier CPU. Podporuje automatické zhušťovanie, automatické riadenie veľkosti DB, odhad objemu výberov podľa rozsahu (range query estimation).

Hlavné zmeny:

  • Zmena správania: Pri neschopnosti odpojiť kurzor od jeho aktuálnej transakcie funkcia mdbx_cursor_bind() teraz vracia MDBX_EINVAL namiesto MDBX_BAD_TXN.
  • Aby sa predišlo potenciálnym problémom, bolo zakázané používanie copy_file_range() na jadrach Linux 5.3 — 5.18.
  • Vhadzovanie std::invalid_argument sa teraz vykonáva s jasnou správou MDBX_EINVAL.
  • Bola odstránená regresia pri použití kurzorov pre DBI=0 (aka GC/FreeDB) v čítacích transakciách.
  • Bola odstránená regresia vo forme chyby EAGAIN pri kopírovaní databázy na NFS a CIFS/SMB.
  • Pri úpravách/rozvoji API v funkcii kopírovania bola pridaná ochrana súborovej zámky prostredníctvom fcntl() aj flock(). Avšak v závislosti od verzie lokálneho jadra, verzie vzdialeného servera NFS a možností montovania, to mohlo viesť k návratu POSIX chyby EAGAIN (11 na väčšine platforiem vrátane Linuxu).
  • Bola opravená chyba merge/rebase v mdbx_txn_release_all_cursors_ex(), ktorá mohla viesť k následným neočakávaným chybám MDBX_EBADSIGN a únikom pamäte.
  • Opravená assert kontrola v ceste dokončenia vnorených transakcií.
  • Bola odstránená možnosť vrátenia neočakávanej chyby MDBX_BUSY z mdbx_txn_lock(dont_wait=false).
  • Pre kompatibilitu s GCC 15.x v režime C23 bol zmenený poriadok uvádzania atribútov funkcií.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster