Paglabas ng high-performance na naka-embed na DBMS libmdbx 0.11.3

Inilabas ang library ng libmdbx 0.11.3 (MDBX) sa pagpapatupad ng isang high-performance na compact na naka-embed na key-value database. Ang libmdbx code ay lisensyado sa ilalim ng OpenLDAP Public License. Sinusuportahan ang lahat ng kasalukuyang operating system at arkitektura, pati na rin ang Russian Elbrus 2000. Sa pagtatapos ng 2021, ginagamit ang libmdbx bilang backend ng storage sa dalawang pinakamabilis na kliyente ng Ethereum - Erigon at ang bagong "Shark", na, ayon sa available impormasyon, ay ang pinakamataas na pagganap ng Ethereum client.

Sa kasaysayan, ang libmdbx ay isang malalim na reworking ng LMDB DBMS at mas mataas kaysa sa ninuno nito sa pagiging maaasahan, set ng tampok at pagganap. Kung ikukumpara sa LMDB, binibigyang-diin ng libmdbx ang kalidad ng code, katatagan ng API, pagsubok, at mga awtomatikong pagsusuri. Ang isang utility para sa pagsuri sa integridad ng istraktura ng database na may ilang mga kakayahan sa pagbawi ay ibinibigay.

Marunong sa teknolohiya, nag-aalok ang libmdbx ng ACID, malakas na pagbabago ng serialization, at hindi nakaharang na mga pagbabasa na may linear scaling sa mga CPU core. Ang auto-compactification, awtomatikong pamamahala ng laki ng database, at pagtatantya ng query sa hanay ay sinusuportahan. Mula noong 2016, ang proyekto ay pinondohan ng Positive Technologies at ginamit sa mga produkto nito mula noong 2017.

Nag-aalok ang libmdbx ng C++ API, pati na rin ang mga enthusiast-supported language bindings para sa Rust, Haskell, Python, NodeJS, Ruby, Go, at Nim.

Ang mga pangunahing inobasyon, pagpapahusay at pagwawasto ay idinagdag mula noong nakaraang balita noong Oktubre 11:

  • Ang C++ API ay itinuturing na handa nang gamitin.
  • Ang pag-update ng data ng GC kapag gumagawa ng malalaking transaksyon ay pinabilis, na lalong mahalaga kapag gumagamit ng libmdbx sa Ethereum ecosystem.
  • Ang panloob na lagda ng format ng database ay binago upang suportahan ang awtomatikong pag-update, na ganap na malinaw sa mga user. Binibigyang-daan ka nitong alisin ang mga maling-positibong mensahe tungkol sa katiwalian sa database kapag ginagamit ang mga lumang bersyon ng library upang basahin ang mga transaksyong naitala ng mga kasalukuyang bersyon.
  • Nagdagdag ng mga function mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() at mdbx_env_get_syncbytes(). Nagdagdag ng suporta para sa operasyon ng MDBX_SET_UPPERBOUND.
  • Ang lahat ng mga babala kapag nagtatayo kasama ang lahat ng sinusuportahang compiler sa C++ 11/14/17/20 na mga mode ay inalis na. Natitiyak ang pagiging tugma sa mga legacy na compiler: clang simula sa 3.9, gcc simula sa 4.8, kasama ang assembly gamit ang cdevtoolset-9 para sa CentOS/RHEL 7.
  • Inayos ang posibilidad ng isang salungatan sa meta page pagkatapos manu-manong lumipat sa isang partikular na meta page gamit ang mdbx_chk utility.
  • Inayos ang hindi inaasahang MDBX_PROBLEM na error na ibinabalik kapag nag-o-overwrite ng mga legacy na meta page.
  • Inayos ang pagbabalik ng MDBX_NOTFOUND sa kaso ng hindi eksaktong tugma kapag nagpoproseso ng kahilingan sa MDBX_GET_BOTH.
  • Inayos ang isang error sa compilation sa Linux sa kawalan ng mga header file na may mga paglalarawan ng mga interface sa kernel.
  • Inayos ang isang salungatan sa pagitan ng MDBX_SHRINK_ALLOWED panloob na bandila at ang opsyong MDBX_ACCEDE.
  • Ilang mga hindi kinakailangang assert check ang inalis.
  • Inayos ang hindi inaasahang pagbabalik ng MDBX_RESULT_TRUE mula sa mdbx_env_set_option() function.
  • Sa kabuuan, higit sa 90 pagbabago ang ginawa sa 25 na file, ~1300 linya ang idinagdag, ~600 ang tinanggal.

Pinagmulan: opennet.ru

Magdagdag ng komento