Ukukhutshwa kwe-DBMS ephezulu efakwe kwi-libmdbx 0.10.4 kunye ne-libfpta 0.3.9

Ithala leencwadi le-libmdbx 0.10.4 (MDBX) lakhululwa ngokuphunyezwa kogcino lwedatha olungundoqo olusebenza ngokucokisekileyo, kunye nethala leencwadi le-libfpta 0.3.9 (FPTA) elinxulumeneyo, eliphumeza ukumelwa kwetheyibhula yedatha enezalathisi zesibini nezihlanganisiweyo. phezu kwe-MDBX. Omabini amathala eencwadi asasazwa phantsi kweelayisensi ezivunyiweyo ze-OSI. Zonke iinkqubo zokusebenza zangoku kunye nezakhiwo zixhaswa, kunye ne-Russian Elbrus 2000.

Ngokwembali, i-libmdbx kukuphinda kusetyenzwe ngokunzulu kwe-LMDB DBMS kwaye iphakamile kunokhokho wayo ngokuthembeka, iseti yeempawu kunye nokusebenza. Xa kuthelekiswa ne-LMDB, i-libmdbx ibeka ugxininiso oluninzi kumgangatho wekhowudi, ukuzinza kwe-API, uvavanyo, kunye nokuhlola okuzenzekelayo. Isixhobo sokujonga imfezeko yesakhiwo sesiseko sedatha esinesakhono sokubuyisela sinikezelwe.

Itekhnoloji yobulumko, i-libmdbx ibonelela nge-ACID, uhlengahlengiso oluluqilima, kunye nokufundwa okungathinteliyo ngokukalwa komda kwii-CPU cores. I-auto-compaction, ulawulo lobungakanani bedatabase oluzenzekelayo, kunye noqikelelo loluhlu lwemibuzo luyaxhaswa. Ukususela ngo-2016, iiprojekthi zixhaswe ngemali yi-Positive Technologies kwaye ukususela ngo-2017 zisetyenziswe kwiimveliso zayo.

I-libmdbx inikezela nge-C++ API, kunye nezibophelelo zolwimi ezixhaswa ngumshisekeli kwiRust, Haskell, Python, NodeJS, Ruby, Go, kunye neNim. Kwi-libfpta, kuphela inkcazo ye-API efumaneka esidlangalaleni ngohlobo lwefayile ye-header ye-C/C++.

Iinguqulelo ezinkulu, uphuculo kunye nezilungiso ezongeziweyo ukusukela kwiindaba zangaphambili nge-9 kaMeyi:

  • Yenza ukuveliswa kwakhona kolwakhiwo.
  • Kulungiswe ibug ngenxa yokuba, kwiimeko ezinqabileyo kakhulu, iluphu/umkhenkce unokwenzeka ngexesha lentengiselwano. Ingxaki ichongwe ziingcali zePositive Tecnologies ngexesha lovavanyo lwangaphakathi lweemveliso zabo.
  • Iimvavanyo ziphuculwe kwaye iimeko zovavanyo zandisiwe ukujonga zonke iimeko ezifikelelekayo ezingekho isomorphic zomthi wephepha kunye nemixholo yeGC ngaphakathi kwedatha.
  • Kwi-C++ API, i-"noexcept" eyongezelelweyo ilungisiwe, ukulayishwa okungaphezulu kongeziweyo kongezwa kwindlela "ye-cursor::esula ()", ukuphunyezwa kwee-buffers kugcinwe ukusetyenziswa kwe-"std::string" ukuqinisekisa ukulungelelaniswa. (ifanelekile kwiCLANG libstdc++).
  • Ukuhlehla kwiphepha elimdaka lokuchitheka kwe-algorithm (ukukhutshwa okukhethiweyo kwamaphepha edatha atshintshiweyo) abonakaliswe ngempazamo enqabileyo engalindelekanga MDBX_PROBLEM xa ukutshintsha idatha kwiintengiselwano ezinkulu kuphelisiwe.
  • Uvavanyo lwezigaba lwenziwa kunye nokongezwa kwenani lokutshekisha ukuqinisekisa ukuzinza xa kwenzeka umonakalo owenziwe ngabom kwiziko ledatha.
  • Zilungisiwe izilumkiso ezincinci UndefinedBehaviorSanitizer kunye neCoverity Scan imiba.
  • Kulungiswe ukujonga ephelelwe lixesha kwaye ayisasetyenziswa iflegi yangaphakathi "P_DIRTY" kumaphepha abekwe ngaphakathi kwimifanekiso egciniweyo eyenziwe ziinguqulelo ezindala zethala leencwadi.
  • Kwimibhalo ye-CMake, ukukhangela amacandelo omqokeleli afunekayo kwi-LTO (i-link-time optimization) iphuculwe.
  • Elona nani liphezulu labafundi ngaxeshanye linyuswe laya kutsho kuma-32767.
  • Ukusebenza okuphuculweyo xa usebenzisa iValgrind kunye neAdresiSanitizer.
  • Kwi-Windows, ukusetyenziswa okuphindaphindiweyo kwe-SRW-lock xa usebenza kwimodi ye-MDBX_NOTLS (ngaphandle kokusebenzisa intambo yendawo yokugcina) isusiwe, isizukulwana se-bootid silungisiwe ukuba ixesha lenkqubo litshintshile, ubhaqo lwe-WSL1 kunye ne-WSL2 luphuculwe, kunye nokukwazi vula isiseko sedatha kwiSicwangciso se-9 esixhonywe nge-DrvFS songeziwe.
  • Lilonke, ngaphezu kwe-160 utshintsho lwenziwa kwiifayile ze-57, i-~5000 imigca yongezwa, ~ 2500 yacinywa.

Ndingathanda ngokukodwa ukubulela iqela leprojekthi ye-Erigon (i-Ethereum ecosystem) ngoncedo lwabo ekuvavanyeni kwiimeko zokusetyenziswa ngokugqithiseleyo. Kuyaphawuleka ukuba kwiinyanga ezintlanu ukususela ekukhululweni kwe-libmdbx v0.10.0, kunye nomthamo wedatha ye-1-2 TB kwi-Erigon nganye yofakelo (isetyenziswe kwi-7% ye-Ethereum nodes), iingxelo ezintathu kuphela zorhwaphilizo lwedatha zifunyenwe, zonke okwenzeke ngenxa yezizathu zangaphandle, kwaye kungekhona iimpazamo zesofthiwe: kwiimeko ezimbini unobangela ukusilela kwe-RAM, okwesithathu impazamo yokusetha kwakhona idatha kuqwalaselo oluthile lwenkqubo esezantsi yokugcina usebenzisa i-BTRFS.

umthombo: opennet.ru

Yongeza izimvo