Kuburitswa kwepamusoro-kushanda kwakamisikidzwa DBMS libmdbx 0.10.4 uye libfpta 0.3.9

Libmdbx 0.10.4 (MDBX) raibhurari yakaburitswa pamwe nekuitwa kwepamusoro-kushanda compact yakamisikidzwa kiyi-value dhatabhesi, uye yakabatana libfpta 0.3.9 (FPTA) raibhurari, iyo inoshandisa tabular inomiririra data ine yechipiri uye inoumbwa indexes. pamusoro peMDBX. Maraibhurari ese ari maviri akagoverwa pasi peOSI yakabvumidzwa marezinesi. Yese yazvino mashandiro masisitimu uye zvivakwa zvinotsigirwa, pamwe neRussia Elbrus 2000.

Zvekare, libmdbx igadziriso yakadzama yeLMDB DBMS uye yakakwirira kune tateguru vayo mukuvimbika, chimiro seti uye kuita. Kuenzaniswa neLMDB, libmdbx inoisa zvakanyanya kukoshesa pamhando yekodhi, kugadzikana kweAPI, kuyedzwa, uye otomatiki cheki. Chishandiso chekutarisa kutendeseka kweiyo dhatabhesi chimiro nehumwe hunyanzvi hwekudzoreredza chinopihwa.

Tekinoroji-huchenjeri, libmdbx inopa ACID, yakasimba shanduko serialization, uye isiri-kuvhara kuverenga ine mutsara kuyera muCPU cores. Auto-compactification, otomatiki dhatabhesi saizi manejimendi, uye renji yemubvunzo fungidziro inotsigirwa. Kubva 2016, mapurojekiti akatsigirwa nePositive Technologies uye kubvira 2017 ave achishandiswa muzvigadzirwa zvayo.

libmdbx inopa C++ API, pamwe chete nevanofarira-inotsigirwa mitauro inosunga yeRust, Haskell, Python, NodeJS, Ruby, Go, uye Nim. Kune libfpta, iyo API tsananguro chete inowanikwa pachena muchimiro cheC/C++ musoro faira.

Hunyowani hukuru, kuvandudzwa uye kugadzirisa kwakawedzerwa kubva panhau yapfuura muna Chivabvu 9:

  • Inogonesa kugadzirwazve.
  • Yakagadzirisa bug nekuda kwekuti, mumamiriro ezvinhu asingawanzo, loop / kuomesa inogona kuitika panguva yekutengeserana. Dambudziko rakaonekwa nePositive Tecnologies nyanzvi panguva yekuyedzwa kwemukati kwezvigadzirwa zvavo.
  • Miedzo yakagadziridzwa uye mamiriro ebvunzo akawedzerwa kuti atarise ese anosvikika asiri-isomorphic nyika emuti wepeji uye zviri mukati meGC mukati medhatabhesi.
  • MuC ++ API, imwe yekuwedzera "noexcept" yakagadziriswa, yakawedzera kuwanda kwakawedzerwa kune "cursor:: erase ()" nzira, kuitiswa kwebuffers kwakachengetedzwa kushandiswa kwe "std:: tambo" kuona kurongeka. (inoenderana neCLANG libstdc++).
  • Kudzokororwa mune yakasviba peji yekudurura algorithm (yakasarudzika ejection yemapeji edatabase yakashandurwa) iyo yakaratidzwa nechikanganiso chisingawanzo fungidzirwe MDBX_PROBLEM pakuchinja data mukutengeserana kukuru kwabviswa.
  • Muedzo wepasing wakaitwa pamwe nekuwedzerwa kwehuwandu hwecheki kuti ive nechokwadi chekugadzikana muchiitiko chekukuvadza nemaune kune database.
  • Yakagadziriswa yambiro diki UndefinedBehaviorSanitizer uye Coverity Scan nyaya.
  • Yakagadziriswa kutarisa yekare uye isingachashandisi mureza wemukati "P_DIRTY" mumapeji akaiswa mukati memifananidzo yedatabase yakagadzirwa neshanduro dzekare dzeraibhurari.
  • MuCMake scripts, kutsvaga kwemuumbi wezvinhu zvinodiwa kuLTO (link-time optimization) yakagadziridzwa.
  • Nhamba yepamusoro yevaverengi panguva imwe chete yakawedzerwa kusvika ku32767.
  • Kuvandudzwa kwekuita kana uchishandisa Valgrind uye KeroSanitizer.
  • PaWindows, iyo inodzokorodza kushandiswa kweSRW-lock kana uchishanda muMDBX_NOTLS modhi (pasina kushandisa tambo yekuchengetera nzvimbo) yakabviswa, chizvarwa chebootid chakagadziriswa kana nguva yehurongwa yachinja, WSL1 uye WSL2 yekuona yakagadziridzwa, uye kugona vhura dhatabhesi paChirongwa 9 chakaiswa kuburikidza neDrvFS chawedzerwa.
  • Pakazara, kupfuura 160 shanduko dzakaitwa kune 57 mafaera, ~ 5000 mitsetse yakawedzerwa, ~ 2500 yakabviswa.

Ndinoda kunyanya kuonga boka repurojekiti yeErigon (Ethereum ecosystem) nerubatsiro rwavo mukuedza mumamiriro ekushandisa zvakanyanya. Zvinokosha kuti mumwedzi mishanu kubva pakuburitswa kwe libmdbx v0.10.0, ine dhatabhesi vhoriyamu ye1-2 TB mune yega yega Erigon yekugadzika (yakashandiswa pa7% yeEthereum node), mishumo mitatu chete yehuori hwe database yakagamuchirwa, zvese iyo yakaitika nekuda kwezvikonzero zvekunze, uye kwete zvikanganiso zvesoftware: muzviitiko zviviri chikonzero chaive kutadza kwe RAM, mune yechitatu kukanganisa pakugadzirisa zvakare data mune imwe gadziriso yekuchengetera subsystem uchishandisa BTRFS.

Source: opennet.ru

Voeg