Pagpagawas sa high-performance embedded DBMS libmdbx 0.11.3

Ang libmdbx 0.11.3 (MDBX) nga librarya gibuhian uban sa pagpatuman sa usa ka high-performance nga compact embedded key-value database. Ang libmdbx code lisensyado ubos sa OpenLDAP Public License. Ang tanan nga kasamtangan nga operating system ug arkitektura gisuportahan, ingon man ang Russian Elbrus 2000. Sa katapusan sa 2021, libmdbx gigamit ingon nga usa ka storage backend sa duha ka labing paspas nga mga kliyente sa Ethereum - Erigon ug ang bag-o nga "Shark", nga, sumala sa anaa impormasyon, mao ang pinakataas nga performance Ethereum kliyente.

Sa kasaysayan, ang libmdbx usa ka lawom nga pagdesinyo pag-usab sa LMDB DBMS ug milabaw sa iyang katigulangan sa termino sa pagkakasaligan, feature set ug performance. Kung itandi sa LMDB, ang libmdbx nagbutang ug daghang gibug-aton sa kalidad sa code, kalig-on sa API, pagsulay, ug awtomatiko nga pagsusi. Ang usa ka gamit alang sa pagsusi sa integridad sa istruktura sa database gihatagan og pipila ka mga kapilian sa pagbawi.

Maalamon sa teknolohiya, ang libmdbx nagtanyag sa ACID, kusog nga pagbag-o sa serialization, ug dili pag-block nga mga pagbasa nga adunay linear scaling sa mga cores sa CPU. Auto-compactification, automatic database size management, ug range query estimation gisuportahan. Sukad sa 2016, ang proyekto gipondohan sa Positive Technologies ug gigamit sa mga produkto niini sukad sa 2017.

Nagtanyag ang libmdbx og C++ API, ingon man ang gisuportahan sa mga mahiligon nga mga pagbugkos sa pinulongan alang sa Rust, Haskell, Python, NodeJS, Ruby, Go, ug Nim.

Ang dagkong mga inobasyon, pagpaayo ug pagtul-id gidugang sukad sa miaging balita niadtong Oktubre 11:

  • Ang C++ API gikonsiderar nga andam na alang sa paggamit.
  • Ang pag-update sa datos sa GC sa diha nga ang paghimo sa dagkong mga transaksyon gipaspasan pag-ayo, nga labi ka importante sa paggamit sa libmdbx sa Ethereum ecosystem.
  • Ang internal nga pirma sa format sa database giusab aron suportahan ang awtomatikong pag-update, nga hingpit nga transparent sa mga tiggamit. Kini nagtugot kanimo sa pagwagtang sa bakak nga positibo nga mga mensahe mahitungod sa korapsyon sa database kung ang mga outdated nga bersyon sa librarya gigamit sa pagbasa sa mga transaksyon nga natala sa kasamtangan nga mga bersyon.
  • Gidugang nga mga gimbuhaton mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() ug mdbx_env_get_syncbytes(). Gidugang nga suporta alang sa MDBX_SET_UPPERBOUND nga operasyon.
  • Ang tanan nga mga pasidaan kung magtukod uban ang tanan nga gisuportahan nga mga compiler sa C++ 11/14/17/20 nga mga mode giwagtang. Ang pagkaangay sa legacy compiler gisiguro: clang sugod sa 3.9, gcc sugod sa 4.8, lakip ang asembliya gamit ang cdevtoolset-9 para sa CentOS/RHEL 7.
  • Giayo ang posibilidad sa usa ka panagsumpaki sa panid sa meta pagkahuman sa mano-mano nga pagbalhin sa usa ka piho nga panid sa meta gamit ang utility nga mdbx_chk.
  • Giayo ang wala damha nga MDBX_PROBLEM nga sayup nga gibalik kung gi-overwrite ang legacy meta nga mga panid.
  • Giayo ang pagbalik sa MDBX_NOTFOUND kung adunay dili eksakto nga tugma kung giproseso ang usa ka hangyo sa MDBX_GET_BOTH.
  • Giayo ang usa ka sayup sa pag-compile sa Linux kung wala ang mga file sa header nga adunay mga paghulagway sa mga interface sa kernel.
  • Giayo ang panagsumpaki tali sa MDBX_SHRINK_ALLOWED internal nga bandila ug ang MDBX_ACCEDE nga kapilian.
  • Daghang wala kinahanglana nga pag-insister nga mga tseke ang giwagtang.
  • Giayo ang wala damha nga pagbalik sa MDBX_RESULT_TRUE gikan sa mdbx_env_set_option() function.
  • Sa kinatibuk-an, labaw pa sa 90 nga mga pagbag-o ang gihimo sa 25 nga mga file, ~ 1300 nga linya ang gidugang, ~ 600 ang natangtang.

Source: opennet.ru

Idugang sa usa ka comment