Izdaja vdelanega DBMS libmdbx 0.13.3

Objavljena je bila izdaja libmdbx 0.13.3 (MDBX), ki izvaja visoko zmogljivo kompaktno vdelano bazo podatkov ključ-vrednost. Koda libmdbx se distribuira pod licenco Apache 2.0. Podprti so vsi trenutni operacijski sistemi in arhitekture, pa tudi ruski Elbrus 2000. libmdbx ponuja razvit API za C++, kot tudi za navdušence podprte vezave na jezike Rust, Haskell, Python, NodeJS, Ruby, Go, Nim , Deno, Scala.

Zgodovinsko gledano je libmdbx globoka predelava LMDB DBMS in je boljši od svojega prednika v zanesljivosti, naboru funkcij in zmogljivosti. V primerjavi z LMDB libmdbx daje velik poudarek kakovosti kode, stabilnosti API-ja, testiranju in samodejnim preverjanjem. Priložen je pripomoček za preverjanje celovitosti strukture baze podatkov z nekaterimi zmožnostmi obnovitve. Tehnološko gledano ponuja libmdbx ACID, močno serializacijo sprememb in branje brez blokiranja z linearnim skaliranjem po jedrih CPE. Podprto je samodejno zgoščevanje, samodejno upravljanje velikosti baze podatkov in ocena poizvedbe obsega.

Večje spremembe:

  • Veja 0.13.x je dobila stabilen status. Začel se je razvoj veje 0.14.x.
  • Funkcija mdbx_cursor_count_ex() je bila dodana API-ju C, ki vam omogoča, da dobite število več vrednosti, ki ustrezajo trenutnemu ključu, in informacije o ugnezdenem drevesu, ki shranjuje te vrednosti.
  • Metoda mdbx::txn::make_broken(), podobna mdbx_txn_break(), je bila dodana API-ju C++.
  • Pripomočki mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat izvajajo beleženje napak, opozoril in pomembnih sporočil iz libmdbx.
  • Sprememba vedenja:
    • Ko je omogočeno profiliranje GC (gradnja z možnostjo MDBX_ENABLE_PROFGC=ON), se zdaj izračuna čas CPE, porabljen za združevanje seznamov strani, tj. da funkcija pnl_merge() deluje.
    • V pripomočku za testiranje je bila vrednost podatkovnega načina preimenovana iz data.dups v data.multi.
    • Izboljšan nadzor dolžine ključa znotraj cursor_seek().
    • Če uporabnik ne poda dejanske vrednosti z mdbx_env_set_option(MDBX_opt_txn_dp_limit), se omejitev umazanih strani prilagodi na začetku vsake neugnezdene pisalne transakcije glede na količino razpoložljivega RAM-a in velikosti baze podatkov.
    • V načinu MDBX_NOSTICKYTHREADS je dovoljena potrditev/prekinitev ugnezdenih transakcij iz katere koli niti/niti.
    • Pri poskusu izvajanja ugnezdenih transakcij v načinu MDBX_WRIITEMAP se izvede beleženje in vrne napaka MDBX_INCOMPATIBLE.
    • V API-ju C++ se v konstruktorjih/inicializatorjih in metodah, povezanih z oblikovanjem geometrije baze podatkov, privzeto uporabljajo samo privzete vrednosti.
    • Znotraj mdbx_env_set_geometry() je bila izboljšana hevristika za izbiro parametrov geometrije baze podatkov, ki jih zahteva uporabnik »privzeto«.
  • Popravki:
    • Odpravljena je regresija, ko se mutex ne odklene, ko poskušate znova zapreti deskriptor dbi, vključno s poskusom izrecnega zapiranja deskriptorja po izbrisu tabele, povezane z njim.
    • Odpravljena regresija stanja kazalca ugnezdenega/dupsort po vstavljanju podatkov v načinu MDBX_APPEND.
    • Podpora za pridobivanje boot_id pri delu v vsebniku LXC.
    • Odpravljena je težava z nepravilno obdelavo poskusa zagona ugnezdene transakcije branja. V teh situacijah je zdaj vrnjena napaka MDBX_EINVAL, ker je gnezdenje podprto samo za transakcije branja in pisanja.
    • Regresija SIGSEGV dostopanja do ničelnega naslova pri delu v načinu samo za branje brez uporabe datoteke LCK je bila odpravljena, na primer pri postavitvi baze podatkov na medij samo za branje.

Vir: opennet.ru

Dodaj komentar