Lëshimi i DBMS i integruar me performancë të lartë libmdbx 0.11.3

Biblioteka libmdbx 0.11.3 (MDBX) u lëshua me implementimin e një baze të dhënash me vlera kyçe të ngulitura kompakte me performancë të lartë. Kodi libmdbx është i licencuar sipas licencës publike OpenLDAP. Mbështeten të gjitha sistemet operative dhe arkitekturat aktuale, si dhe Elbrus 2000 ruse. Në fund të vitit 2021, libmdbx përdoret si një bazë ruajtëse në dy klientët më të shpejtë të Ethereum - Erigon dhe "Shark" i ri, i cili, sipas disponueshmërisë informacioni, është klienti i Ethereum me performancën më të lartë.

Historikisht, libmdbx është një ripërpunim i thellë i LMDB DBMS dhe tejkalon paraardhësin e tij në besueshmërinë, grupin e veçorive dhe performancën. Krahasuar me LMDB, libmdbx i kushton shumë theks cilësisë së kodit, stabilitetit të API-së, testimit dhe kontrolleve të automatizuara. Ofrohet një mjet për kontrollimin e integritetit të strukturës së bazës së të dhënave me disa aftësi rikuperimi.

Për sa i përket teknologjisë, libmdbx ofron ACID, serializimin e fortë të ndryshimeve dhe lexime pa bllokim me shkallëzim linear nëpër bërthamat e CPU. Mbështetet kompaktimi automatik, menaxhimi automatik i madhësisë së bazës së të dhënave dhe vlerësimi i pyetjeve të gamës. Që nga viti 2016, projekti është financuar nga Positive Technologies dhe është përdorur në produktet e saj që nga viti 2017.

libmdbx ofron një API C++, si dhe lidhje gjuhësore të mbështetura nga entuziastët për Rust, Haskell, Python, NodeJS, Ruby, Go dhe Nim.

Risitë, përmirësimet dhe korrigjimet kryesore të shtuara që nga lajmet e mëparshme më 11 tetor:

  • API C++ konsiderohet gati për përdorim.
  • Përditësimi i të dhënave GC kur kryeni transaksione të mëdha është përshpejtuar ndjeshëm, gjë që është veçanërisht e rëndësishme kur përdorni libmdbx në ekosistemin Ethereum.
  • Nënshkrimi i brendshëm i formatit të bazës së të dhënave është ndryshuar për të mbështetur përditësimin automatik, i cili është plotësisht transparent për përdoruesit. Kjo ju lejon të eliminoni mesazhet false-pozitive në lidhje me korrupsionin e bazës së të dhënave kur versionet e vjetruara të bibliotekës përdoren për të lexuar transaksionet e regjistruara nga versionet aktuale.
  • Funksionet e shtuara mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() dhe mdbx_env_get_syncbytes(). Mbështetje e shtuar për operacionin MDBX_SET_UPPERBOUND.
  • Të gjitha paralajmërimet gjatë ndërtimit me të gjithë përpiluesit e mbështetur në mënyrat C++ 11/14/17/20 janë eliminuar. Sigurohet përputhshmëria me përpiluesit e vjetër: zhurma duke filluar nga 3.9, gcc duke filluar nga 4.8, duke përfshirë montimin duke përdorur cdevtoolset-9 për CentOS/RHEL 7.
  • Rregulloi mundësinë e një konflikti meta faqe pas kalimit manualisht në një faqe specifike meta duke përdorur mjetin mdbx_chk.
  • Rregulloi gabimin e papritur MDBX_PROBLEM që u kthye gjatë mbishkrimit të meta faqeve të vjetra.
  • Rregullohet kthimi i MDBX_NOTFOUND në rast të një përputhjeje të pasaktë gjatë përpunimit të një kërkese MDBX_GET_BOTH.
  • Rregulloi një gabim përpilimi në Linux në mungesë të skedarëve të kokës me përshkrime të ndërfaqeve me kernelin.
  • Rregulloi një konflikt midis flamurit të brendshëm MDBX_SHRINK_ALLOWED dhe opsionit MDBX_ACCEDE.
  • Janë eliminuar disa kontrolle të panevojshme pohimi.
  • Rregulloi kthimin e papritur të MDBX_RESULT_TRUE nga funksioni mdbx_env_set_option().
  • Në total, u bënë më shumë se 90 ndryshime në 25 skedarë, u shtuan ~ 1300 rreshta, ~ 600 u fshinë.

Burimi: opennet.ru

Shto një koment