Izdanje ugrađenog DBMS-a visokih performansi libmdbx 0.11.3

Biblioteka libmdbx 0.11.3 (MDBX) objavljena je s implementacijom kompaktne ugrađene baze podataka ključ-vrijednost visokih performansi. Kod libmdbx licenciran je pod javnom licencom OpenLDAP. Podržani su svi trenutni operativni sustavi i arhitekture, kao i ruski Elbrus 2000. Krajem 2021. libmdbx se koristi kao backend za pohranu u dva najbrža Ethereum klijenta - Erigon i novi “Shark”, koji, prema dostupnim informacije, je Ethereum klijent s najvišim performansama.

Povijesno gledano, libmdbx je dubok redizajn LMDB DBMS-a i nadmašuje svog prethodnika u smislu pouzdanosti, skupa značajki i performansi. U usporedbi s LMDB-om, libmdbx stavlja veliki naglasak na kvalitetu koda, stabilnost API-ja, testiranje i automatizirane provjere. Pomoćni program za provjeru integriteta strukture baze podataka isporučuje se s nekim opcijama oporavka.

Tehnološki gledano, libmdbx nudi ACID, snažnu serijalizaciju promjena i čitanje bez blokiranja s linearnim skaliranjem preko CPU jezgri. Podržani su automatsko sažimanje, automatsko upravljanje veličinom baze podataka i procjena upita raspona. Od 2016. godine projekt financira Positive Technologies i koristi se u svojim proizvodima od 2017. godine.

libmdbx nudi C++ API, kao i jezična povezivanja podržana od strane entuzijasta za Rust, Haskell, Python, NodeJS, Ruby, Go i Nim.

Glavne inovacije, poboljšanja i ispravci dodani od prethodne vijesti 11. listopada:

  • C++ API se smatra spremnim za upotrebu.
  • Ažuriranje GC podataka prilikom izvršavanja velikih transakcija značajno je ubrzano, što je posebno važno kada se libmdbx koristi u Ethereum ekosustavu.
  • Interni potpis formata baze podataka je promijenjen kako bi podržao automatsko ažuriranje, što je potpuno transparentno za korisnike. To vam omogućuje da eliminirate lažno pozitivne poruke o oštećenju baze podataka kada se zastarjele verzije biblioteke koriste za čitanje transakcija koje su zabilježile trenutne verzije.
  • Dodane su funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). Dodana podrška za operaciju MDBX_SET_UPPERBOUND.
  • Uklonjena su sva upozorenja prilikom izrade sa svim podržanim kompajlerima u C++ 11/14/17/20 modovima. Osigurana je kompatibilnost s naslijeđenim kompajlerima: clang počevši od 3.9, gcc počevši od 4.8, uključujući sklapanje pomoću cdevtoolset-9 za CentOS/RHEL 7.
  • Ispravljena je mogućnost sukoba meta stranica nakon ručnog prebacivanja na određenu meta stranicu pomoću uslužnog programa mdbx_chk.
  • Ispravljena je neočekivana pogreška MDBX_PROBLEM koja se vraćala prilikom prepisivanja naslijeđenih meta stranica.
  • Popravljeno vraćanje MDBX_NOTFOUND u slučaju netočnog podudaranja prilikom obrade MDBX_GET_BOTH zahtjeva.
  • Ispravljena je pogreška kompilacije na Linuxu u nedostatku datoteka zaglavlja s opisima sučelja s jezgrom.
  • Riješen je sukob između interne oznake MDBX_SHRINK_ALLOWED i opcije MDBX_ACCEDE.
  • Uklonjeno je nekoliko nepotrebnih provjera tvrdnji.
  • Popravljen neočekivani povratak MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
  • Ukupno je napravljeno više od 90 izmjena u 25 datoteka, dodano je ~1300 redaka, ~600 je izbrisano.

Izvor: opennet.ru

Dodajte komentar