Ukukhishwa kokusebenza okuphezulu kwe-DBMS eshumekiwe libmdbx 0.10.4 kanye ne-libfpta 0.3.9

Imitapo yolwazi ye-libmdbx 0.10.4 (MDBX) ikhishwe ngokusetshenziswa kwesizindalwazi senani elingukhiye ohlangene osebenza kahle kakhulu, kanye nelabhulali ye-libfpta 0.3.9 (FPTA) ehlobene, esebenzisa ukumelwa kwethebula kwedatha enezinkomba zesibili neziyinhlanganisela. ngaphezulu kwe-MDBX. Yomibili imitapo yolwazi isatshalaliswa ngaphansi kwamalayisense avunyelwe yi-OSI. Zonke izinhlelo zokusebenza zamanje kanye nezakhiwo ziyasekelwa, kanye ne-Russian Elbrus 2000.

Ngokomlando, i-libmdbx iwukusebenza kabusha okujulile kwe-LMDB DBMS futhi iphakeme kunokhokho wayo ngokwethembeka, ukusetha izici nokusebenza. Uma kuqhathaniswa ne-LMDB, i-libmdbx igcizelela kakhulu ikhwalithi yekhodi, ukuzinza kwe-API, ukuhlola, nokuhlola okuzenzakalelayo. Isisetshenziswa sokuhlola ubuqotho besakhiwo sesizindalwazi esinamakhono athile okubuyisela siyanikezwa.

Ngokusebenzisa ubuchwepheshe, i-libmdbx inikeza i-ACID, ukuguqulwa okuqinile kwe-serialization, nokufunda okungavimbeli okunomugqa wokukala kuwo wonke ama-CPU cores. Ukuhlanganisa okuzenzakalelayo, ukuphathwa kosayizi wesizindalwazi okuzenzakalelayo, kanye nesilinganiso semibuzo yobubanzi kuyasekelwa. Kusukela ngo-2016, amaphrojekthi axhaswe yi-Positive Technologies futhi kusukela ngo-2017 asetshenziswa emikhiqizweni yawo.

I-libmdbx inikeza i-C++ API, kanye nezibopho zolimi ezisekelwa umshisekeli zeRust, Haskell, Python, NodeJS, Ruby, Go, kanye ne-Nim. Nge-libfpta, incazelo ye-API kuphela etholakala esidlangalaleni ngohlobo lwefayela elingu-C/C++.

Ukuqamba okusha okukhulu, ukuthuthukiswa nokulungiswa kwengezwe kusukela ezindabeni zangaphambilini ngoMeyi 9:

  • Inika amandla ukwakhiwa okungakhiqizeka kabusha.
  • Kulungiswe isiphazamisi ngenxa yokuthi, ezimeni ezingavamile kakhulu, iluphu/ukumiswa kungase kwenzeke ngesikhathi sesivumelwano sokuthenga. Inkinga ikhonjwe ochwepheshe be-Positive Tecnologies ngesikhathi sokuhlolwa kwangaphakathi kwemikhiqizo yabo.
  • Ukuhlola kuthuthukisiwe futhi izimo zokuhlola zandisiwe ukuze kuhlolwe zonke izimo ezifinyelelekayo ezingezona eze-isomorphic zesihlahla sekhasi nokuqukethwe kwe-GC ngaphakathi kwesizindalwazi.
  • Ku-C++ API, okungeziwe kokuthi "noexcept" kulungisiwe, ukulayishwa okwengeziwe okwengeziwe kwengezwe kundlela "yekhesa::susa ()", ukuqaliswa kokusetshenziswa kwamabhafa kuvikelwe ukusetshenziswa kwe-"std::string" ukuze kuqinisekiswe ukuqondanisa. (ihambisana ne-CLANG libstdc++).
  • Ukuhlehla kwe-algorithm yokuchitheka kwekhasi elingcolile (ukukhishwa okukhethiwe kwamakhasi esizindalwazi ashintshiwe) okuboniswe iphutha elingalindelekile elingalindelekile MDBX_PROBLEM lapho kushintshwa idatha kumisebenzi emikhulu kususiwe.
  • Ukuhlolwa kwezigaba kwenziwa ngokungezwa kwenani lamasheke ukuze kuqinisekiswe ukuzinza uma kwenzeka umonakalo wamabomu kusizindalwazi.
  • Kulungiswe izixwayiso ezincane ezi-UndefinedBehaviorSanitizer kanye nezinkinga ze-Coverity Scan.
  • Kulungiswe ukuhlola okudlulelwe yisikhathi futhi akusasetshenziswa ifulegi langaphakathi elithi “P_DIRTY” emakhasini afakwe esidlekeni ngaphakathi kwezithombe zesizindalwazi ezidalwe izinguqulo ezindala zelabhulali.
  • Kumaskripthi e-CMake, ukusesha kwezingxenye ze-compiler ezidingekayo ze-LTO (ukwenziwa kwe-link-time optimization) kuthuthukisiwe.
  • Isibalo esiphezulu sabafundi abakanye ngasikhathi sinye senyusiwe safinyelela ku-32767.
  • Ukusebenza okuthuthukisiwe uma usebenzisa i-Valgrind ne-AddressSanitizer.
  • Ku-Windows, ukusetshenziswa okuphindaphindiwe kwe-SRW-lock uma usebenza kumodi ye-MDBX_NOTLS (ngaphandle kokusebenzisa isitoreji sendawo sochungechunge) kususiwe, ukukhiqizwa kwe-bootid kulungisiwe uma isikhathi sesistimu sishintshile, ukutholwa kwe-WSL1 ne-WSL2 kuthuthukisiwe, kanye nekhono vula isizindalwazi ku-Plan 9 efakwe nge-DrvFS yengeziwe.
  • Sekukonke, izinguquko ezingaphezu kuka-160 zenziwe kumafayela angu-57, ~ imigqa engu-5000 yengezwe, ~ 2500 yasuswa.

Ngingathanda ikakhulukazi ukubonga ithimba lephrojekthi ye-Erigon (i-Ethereum ecosystem) ngosizo lwabo ekuhloleni izimo zokusetshenziswa ngokweqile. Kuyaphawuleka ukuthi ezinyangeni ezinhlanu kusukela ekukhululweni kwe-libmdbx v0.10.0, enomthamo wedatha we-1-2 TB ekufakweni ngakunye kwe-Erigon (esetshenziswe ku-7% we-Ethereum nodes), imibiko emithathu kuphela yenkohlakalo yedatha yatholwa, konke okwenzeke ngenxa yezizathu zangaphandle, hhayi amaphutha esofthiwe: ezimweni ezimbili imbangela kube ukwehluleka kwe-RAM, okwesithathu iphutha ekusetheni kabusha idatha ekucushweni okukhethekile kohlelo olungaphansi lwesitoreji kusetshenziswa i-BTRFS.

Source: opennet.ru

Engeza amazwana