Ukukhutshwa kwe-DBMS elungisiweyo libmdbx 0.13.7

Ithala leencwadi le-libmdbx 0.13.7 (MDBX) likhutshiwe, liphumeza ugcino lwedatha olusebenza kakhulu, olubambeneyo, olufakwe kwi-key-value. Ikhowudi ye-libmdbx isasazwe phantsi kweLayisensi ye-Apache 2.0. Zonke iinkqubo zokusebenza zangoku kunye nezakhiwo zezakhiwo zixhaswa, kunye ne-Russian Elbrus 2000. Kwi-libmdbx, i-API ehamba phambili ye-C ++ inikezelwa, kunye nezibophelelo ezixhaswa ngumshisekeli kwiilwimi iRust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala. Iiprojekthi ezisebenzisa i-libmdbx ziquka i-Isar, i-Erigon, kunye ne-Reth, kunye nophuhliso lwe-StarkWare kunye ne-Positive Technologies.

Ngokwembali, i-libmdbx kukuphinda kusetyenzwe ngokunzulu kwe-LMDB DBMS kwaye yodlula ukhokho 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. Ngokwetekhnoloji, i-libmdbx ibonelela nge-ACID, uhlengahlengiso olomeleleyo, kunye nokufundwa okungathinteliyo kunye nokukalwa komda kwii-CPU cores. Ukudityaniswa okuzenzekelayo, ulawulo lobungakanani bedathabheyisi oluzenzekelayo, kunye noqikelelo loluhlu lwemibuzo luyaxhaswa.

Utshintsho oluphambili:

  • Kulungiswe ibug ebalulekileyo kumsebenzi we-mdbx_env_resurrect_after_fork () xa usebenzisa i-sysV semaphores. Impazamo yavela kuphela emva kokuzala inkqubo yomntwana ngefolokhwe () ngokubhekiselele kwimvelaphi yentengiselwano eqhubekayo yokubhala, eyakhokelela ekusebenzeni okungalunganga kwe-semaphores kwaye emva koko kwiimpazamo ezahlukeneyo, kubandakanywa urhwaphilizo lwedatha. Ingxaki ikhona ukususela ekufikeni kwe-mdbx_env_resurrect_after_fork () kunye ne-macOS echaphazelekayo, kunye namaqonga e-POSIX xa kusakhiwa nge-MDBX_LOCKING=5 ukhetho.
  • Kulungiswe ingxaki kwiDB Copy API eyenzeka kwiinkqubo zePOSIX ezingezizo zeLinux (ubukhulu becala iMacOS), kwaye kwezinye iimeko xa ifayile ekujoliswe kuyo ibekwe kwindlela yefayile engeyiyo yendawo. Ingxaki ibangele ubuyiselo lwemposiso ye EWOULDBLOCK/EAGAIN, ebangelwe sisiphene/ingxabano kwi fcntl(F_SETLK) kunye ne flock() izitshixo kwi OS kernel. Iphinde yasebenza kwakhona ukuphathwa kweempazamo zokufunyanwa kwefayile kwi-Copy API kwiinkqubo zePOSIX.
  • Kulungiswe isiphene esibangele imbuyekezo engalindelekanga ye-MDBX_BAD_DBI xa uqalisa iintengiselwano ezininzi ngaxeshanye ngaphakathi kwenkqubo enye emva kokuvula idatabase.
  • Kulungiswe isiphene esibangele ukuba i-MDBX_DBS_FULL ibuyiswe ngokungalindelekanga xa kuphinda kuvulwe iitafile esele zivuliwe kwaye umda wokubamba we-DBI ovuliweyo sele ufikile.
  • Kulungiswe impazamo yokwakha yeqonga le-Android xa i-_FILE_OFFSET_BITS ichazwa ngokucacileyo.
  • Lungisa ibug ngokusebenzisa ENOMEM endaweni ye MDBX_ENOMEM. Yintoni enokwaphula ulwakhiwo kwiiplatifti ezingezizo zePOSIX/Windows, kuxhomekeke kuqwalaselo kunye/okanye kuguqulelo lwe-SDK.
  • Kulungiswe okanye kususwe iinkcazo ezininzi ezingachanekanga ezibangele ukuba i-debug idilike kwiimeko ezithile, ikakhulu kwikhowudi txn_end(), txn_lock(), kunye txn_unlock() kuzo zombini iiWindows kunye nePOSIX.
  • Zilungisiwe izilumkiso ezincinci ze-MSVC. Izilumkiso ezikhubazekileyo ze-C5286 kunye ne-C5287.
  • Ingqiqo yokwala ukusebenzisa izitshixo zeOFD kumaqonga ePOSIX iphuculwe. Ngoku, ngaphezu kwe-EINVAL, iikhowudi zephutha ezongezelelweyo zithathwa kwi-akhawunti (ENOSYS, ENOIMPL, ENOTSUP, ENOSUPP, EOPNOTSUPP), eya kuvumela ilayibrari ehlanganisiweyo ukuba isebenze kwezinye iimeko xa i-kernel / i-container / i-emulator yangoku ayixhasi iifowuni zenkqubo efunekayo.
  • Isakhelo sovavanyo ngoku sixhasa i --numa ukhetho. » ukubophelela uvavanyo lwestochastic kwindawo ye-NUMA. Ukusasazwa okucacileyo kuzo zonke iindawo ze-NUMA zongezwe kwi-battery/tmux script, eye yandisa kakhulu ukusebenza kakuhle xa kuhlolwa kumatshini we-NUMA.
  • I-stochastic script sisebenzisa i-odolo engacwangciswanga apho uvavanyo lomntu ngamnye luqhutywa khona.

umthombo: opennet.ru

Yongeza izimvo