Rhyddhau libmdbx DBMS mewnosodedig perfformiad uchel 0.11.3

Rhyddhawyd y llyfrgell libmdbx 0.11.3 (MDBX) gyda gweithredu cronfa ddata gwerth allweddol mewnosodedig cryno perfformiad uchel. Mae'r cod libmdbx wedi'i drwyddedu o dan Drwydded Gyhoeddus OpenLDAP. Cefnogir yr holl systemau gweithredu a phensaernïaeth gyfredol, yn ogystal â'r Elbrus 2000 o Rwsia. Ar ddiwedd 2021, defnyddir libmdbx fel backend storio yn y ddau gleientiaid Ethereum cyflymaf - Erigon a'r "Shark" newydd, sydd, yn ôl sydd ar gael gwybodaeth, yw'r cleient Ethereum perfformiad uchaf.

Yn hanesyddol, mae libmdbx yn ailgynllunio dwfn o'r LMDB DBMS ac yn rhagori ar ei epilydd o ran dibynadwyedd, set nodwedd a pherfformiad. O'i gymharu â LMDB, mae libmdbx yn rhoi llawer o bwyslais ar ansawdd cod, sefydlogrwydd API, profi, a gwiriadau awtomataidd. Darperir cyfleustodau ar gyfer gwirio cywirdeb strwythur y gronfa ddata gyda rhai opsiynau adfer.

O ran technoleg, mae libmdbx yn cynnig ACID, cyfresoli newid cryf, a darlleniadau di-rwystro gyda graddio llinellol ar draws creiddiau CPU. Cefnogir awto-gywasgu, rheoli maint cronfa ddata yn awtomatig, ac amcangyfrif ymholiad amrediad. Ers 2016, mae'r prosiect wedi'i ariannu gan Positive Technologies ac mae wedi'i ddefnyddio yn ei gynhyrchion ers 2017.

Mae libmdbx yn cynnig API C ++, yn ogystal â rhwymiadau iaith a gefnogir gan frwdfrydedd ar gyfer Rust, Haskell, Python, NodeJS, Ruby, Go, a Nim.

Ychwanegwyd arloesiadau, gwelliannau a chywiriadau mawr ers y newyddion blaenorol ar Hydref 11:

  • Ystyrir bod yr API C++ yn barod i'w ddefnyddio.
  • Mae diweddariad data GC wrth gyflawni trafodion enfawr wedi'i gyflymu'n sylweddol, sy'n arbennig o bwysig wrth ddefnyddio libmdbx yn ecosystem Ethereum.
  • Mae llofnod mewnol fformat y gronfa ddata wedi'i newid i gefnogi diweddaru awtomatig, sy'n gwbl dryloyw i ddefnyddwyr. Mae hyn yn eich galluogi i ddileu negeseuon ffug-bositif am lygredd cronfa ddata pan ddefnyddir fersiynau hen ffasiwn o'r llyfrgell i ddarllen trafodion a gofnodwyd gan fersiynau cyfredol.
  • Swyddogaethau ychwanegol mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() a mdbx_env_get_syncbytes(). Ychwanegwyd cefnogaeth ar gyfer y gweithrediad MDBX_SET_UPPERBOUND.
  • Mae'r holl rybuddion wrth adeiladu gyda'r holl gasglwyr a gefnogir yn y moddau C ++ 11/14/17/20 wedi'u dileu. Sicrheir cydnawsedd â chasglwyr etifeddiaeth: clang yn dechrau o 3.9, gcc yn dechrau o 4.8, gan gynnwys cynulliad gan ddefnyddio cdevtoolset-9 ar gyfer CentOS / RHEL 7.
  • Wedi trwsio'r posibilrwydd o wrthdaro tudalen meta ar ôl newid â llaw i dudalen meta benodol gan ddefnyddio'r cyfleustodau mdbx_chk.
  • Gwall MDBX_PROBLEM annisgwyl sefydlog yn cael ei ddychwelyd wrth drosysgrifo tudalennau meta etifeddol.
  • Dychwelyd MDBX_NOTFOUND sefydlog rhag ofn y bydd cyfatebiaeth anfanwl wrth brosesu cais MDBX_GET_BOTH.
  • Wedi trwsio gwall casglu ar Linux yn absenoldeb ffeiliau pennawd gyda disgrifiadau o ryngwynebau gyda'r cnewyllyn.
  • Wedi trwsio gwrthdaro rhwng baner fewnol MDBX_SHRINK_ALLOWED a'r opsiwn MDBX_ACCEDE.
  • Mae nifer o wiriadau honiadau diangen wedi'u dileu.
  • Dychweliad annisgwyl sefydlog MDBX_RESULT_TRUE o swyddogaeth mdbx_env_set_option().
  • Yn gyfan gwbl, gwnaed mwy na 90 o newidiadau i 25 o ffeiliau, ychwanegwyd ~1300 o linellau, ~ dilëwyd ~600.

Ffynhonnell: opennet.ru

Ychwanegu sylw