Izdanje ugrađenog DBMS-a visokih performansi libmdbx 0.11.3

Biblioteka libmdbx 0.11.3 (MDBX) objavljena je sa implementacijom kompaktne ugrađene baze podataka ključ/vrijednost visokih performansi. Libmdbx kod je licenciran pod OpenLDAP javnom licencom. Podržani su svi trenutni operativni sistemi i arhitekture, kao i ruski Elbrus 2000. Krajem 2021. godine, libmdbx će se koristiti kao pozadina za skladištenje u dva najbrža Ethereum klijenta - Erigon i novi “Shark”, koji, prema dostupnim informacije, je Ethereum klijent s najvišim performansama.

Istorijski gledano, libmdbx je duboki redizajn LMDB DBMS-a i nadmašuje svog prethodnika u smislu pouzdanosti, skupa karakteristika i performansi. U poređenju sa LMDB, libmdbx stavlja veliki naglasak na kvalitet koda, stabilnost API-ja, testiranje i automatizovane provere. Pomoćni program za provjeru integriteta strukture baze podataka se isporučuje s nekim opcijama oporavka.

Tehnološki gledano, libmdbx nudi ACID, snažnu serijalizaciju promjena i neblokirajuće čitanje s linearnim skaliranjem kroz CPU jezgre. Podržana je automatska kompaktifikacija, automatsko upravljanje veličinom baze podataka i procjena opsega upita. Od 2016. godine projekat je finansiran od strane Positive Technologies i koristi se u svojim proizvodima od 2017. godine.

libmdbx nudi C++ API, kao i jezičke veze koje podržavaju entuzijasti za Rust, Haskell, Python, NodeJS, Ruby, Go i Nim.

Glavne inovacije, poboljšanja i ispravke dodane od prethodne vijesti 11. oktobra:

  • 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 ekosistemu.
  • Interni potpis formata baze podataka je promijenjen da podržava automatsko ažuriranje, koje je potpuno transparentno za korisnike. Ovo vam omogućava da eliminišete lažno pozitivne poruke o korupciji baze podataka kada se zastarele verzije biblioteke koriste za čitanje transakcija snimljenih trenutnim verzijama.
  • Dodane funkcije mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() i mdbx_env_get_syncbytes(). Dodata podrška za operaciju MDBX_SET_UPPERBOUND.
  • Sva upozorenja kada se gradi sa svim podržanim kompajlerima u C++ 11/14/17/20 modovima su eliminisana. Osigurana je kompatibilnost sa zastarjelim kompajlerima: clang počevši od 3.9, gcc počevši od 4.8, uključujući asembler pomoću cdevtoolset-9 za CentOS/RHEL 7.
  • Ispravljena 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 greška MDBX_PROBLEM koja se vraća prilikom prepisivanja naslijeđenih meta stranica.
  • Popravljeno vraćanje MDBX_NOTFOUND u slučaju netačnog podudaranja prilikom obrade MDBX_GET_BOTH zahtjeva.
  • Ispravljena je greška pri kompilaciji na Linuxu u odsustvu datoteka zaglavlja s opisima sučelja s kernelom.
  • Popravljen je sukob između interne zastavice MDBX_SHRINK_ALLOWED i opcije MDBX_ACCEDE.
  • Nekoliko nepotrebnih provjera tvrdnji je eliminirano.
  • Ispravljen neočekivani povratak MDBX_RESULT_TRUE iz funkcije mdbx_env_set_option().
  • Ukupno je napravljeno više od 90 izmjena u 25 datoteka, ~1300 linija je dodano, ~600 je obrisano.

izvor: opennet.ru

Dodajte komentar