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