Liberigo de alt-efikeca enigita DBMS libmdbx 0.11.3

La libmdbx 0.11.3 (MDBX) biblioteko estis publikigita kun la efektivigo de alt-efikeca kompakta enigita ŝlosil-valora datumbazo. La libmdbx-kodo estas licencita sub la Publika Permesilo OpenLDAP. Ĉiuj nunaj operaciumoj kaj arkitekturoj estas subtenataj, same kiel la rusa Elbrus 2000. Fine de 2021, libmdbx estas uzata kiel stoka backend en la du plej rapidaj Ethereum-klientoj - Erigon kaj la nova "Ŝarko", kiuj, laŭ disponeblaj disponeblaj, estas subtenataj. informoj, estas la plej alt-efikeca Ethereum-kliento.

Historie, libmdbx estas profunda restrukturado de la LMDB DBMS kaj superas ĝian prapatron laŭ fidindeco, funkcioj kaj efikeco. Kompare kun LMDB, libmdbx multe emfazas kodkvaliton, API-stabilecon, testadon kaj aŭtomatigitajn kontrolojn. Ilo por kontroli la integrecon de la datumbaza strukturo estas provizita kun kelkaj reakiro-opcioj.

Teknologie, libmdbx ofertas ACID, fortan ŝanĝan seriigon kaj ne-blokantajn legadojn kun lineara skalo trans CPU-kernoj. Aŭtomata kompaktigo, aŭtomata datumbaza grandadministrado kaj interval-demanda takso estas subtenataj. Ekde 2016, la projekto estas financita de Positive Technologies kaj estas uzata en siaj produktoj ekde 2017.

libmdbx ofertas C++ API, same kiel entuziasmul-subtenatajn lingvoligojn por Rust, Haskell, Python, NodeJS, Ruby, Go kaj Nim.

Gravaj novigoj, plibonigoj kaj korektoj aldonitaj ekde la antaŭa novaĵo la 11-an de oktobro:

  • La C++ API estas konsiderata preta por uzo.
  • La ĝisdatigo de GC-datumoj dum farado de grandegaj transakcioj estis signife akcelita, kio estas precipe grava kiam vi uzas libmdbx en la Ethereum-ekosistemo.
  • La interna subskribo de la datumbaza formato estis ŝanĝita por subteni aŭtomatan ĝisdatigon, kiu estas tute travidebla por uzantoj. Ĉi tio ebligas al vi forigi falsajn pozitivajn mesaĝojn pri datumbaza korupto kiam malmodernaj versioj de la biblioteko estas uzataj por legi transakciojn registritajn de aktualaj versioj.
  • Aldonitaj funkcioj mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() kaj mdbx_env_get_syncbytes(). Aldonita subteno por la operacio MDBX_SET_UPPERBOUND.
  • Ĉiuj avertoj dum konstruado kun ĉiuj subtenataj kompililoj en C++ 11/14/17/20 reĝimoj estis forigitaj. Kongrueco kun heredaj kompililoj estas certigita: clang ekde 3.9, gcc ekde 4.8, inkluzive de asembleo uzante cdevtoolset-9 por CentOS/RHEL 7.
  • Riparis la eblecon de meta-paĝa konflikto post permane ŝanĝi al specifa meta-paĝo uzante la ilon mdbx_chk.
  • Korektis neatenditan MDBX_PROBLEM-eraron resendita dum anstataŭigo de heredaj meta-paĝoj.
  • Korektis la revenon de MDBX_NOTFOUND en kazo de malĝusta kongruo dum prilaborado de MDBX_GET_BOTH peto.
  • Korektis kompilan eraron en Linukso pro manko de kapdosieroj kun priskriboj de interfacoj kun la kerno.
  • Korektis konflikton inter la interna flago MDBX_SHRINK_ALLOWED kaj la opcio MDBX_ACCEDE.
  • Pluraj nenecesaj asertkontroloj estis eliminitaj.
  • Riparita neatendita reveno de MDBX_RESULT_TRUE de mdbx_env_set_option() funkcio.
  • Entute, pli ol 90 ŝanĝoj estis faritaj al 25 dosieroj, ~1300 linioj estis aldonitaj, ~600 estis forigitaj.

fonto: opennet.ru

Aldoni komenton