Kutulutsidwa kwa magwiridwe antchito apamwamba a DBMS libmdbx 0.10.4 ndi libfpta 0.3.9

Ma library a libmdbx 0.10.4 (MDBX) anatulutsidwa ndi kukhazikitsidwa kwa nkhokwe yamtengo wapatali, komanso laibulale yogwirizana ya libfpta 0.3.9 (FPTA), yomwe imagwiritsa ntchito chiwonetsero cha tabular cha data yokhala ndi index yachiwiri ndi yophatikizika. pamwamba pa MDBX. Ma library onsewa amagawidwa pansi pa ziphaso zovomerezeka za OSI. Machitidwe onse amakono ogwiritsira ntchito ndi zomangamanga amathandizidwa, komanso Russian Elbrus 2000.

M'mbiri, libmdbx ndikukonzanso mozama kwa LMDB DBMS ndipo ndiyabwino kuposa makolo ake pakudalirika, mawonekedwe ndi magwiridwe antchito. Poyerekeza ndi LMDB, libmdbx imagogomezera kwambiri khalidwe la code, kukhazikika kwa API, kuyesa, ndi cheke chamagetsi. Chida chowunikira kukhulupirika kwadongosolo la database ndi kuthekera kobwezeretsa kumaperekedwa.

Mwanzeru zaukadaulo, libmdbx imapereka ACID, kusintha kosinthika kolimba, komanso kuwerenga kosatsekereza kokhala ndi mizere mizere kudutsa ma CPU cores. Kuphatikizika kwachangu, kasamalidwe ka kukula kwa database, ndi kuyerekezera kwamafunso osiyanasiyana kumathandizidwa. Kuyambira 2016, ntchito zathandizidwa ndi Positive Technologies ndipo kuyambira 2017 zakhala zikugwiritsidwa ntchito pazinthu zake.

libmdbx imapereka C++ API, komanso zomangira zoyankhulirana zothandizidwa ndi okonda Rust, Haskell, Python, NodeJS, Ruby, Go, ndi Nim. Kwa libfpta, mafotokozedwe a API okha ndi omwe amapezeka pagulu ngati fayilo yamutu ya C/C++.

Zatsopano zazikulu, kuwongolera ndi kuwongolera zomwe zawonjezeredwa kuyambira nkhani zam'mbuyomu pa Meyi 9:

  • Imathandizira zomanganso.
  • Kukonza cholakwika chifukwa, muzochitika zosowa kwambiri, kuzungulira / kuzizira kumatha kuchitika panthawi yochita malonda. Vutoli lidadziwika ndi akatswiri a Positive Tecnologies pakuyesa mkati mwazogulitsa zawo.
  • Mayesero awongoleredwa ndipo zochitika zoyesa zakulitsidwa kuti muwone mayendedwe onse omwe sali isomorphic a mtengo watsamba ndi zomwe zili mkati mwa GC mkati mwa database.
  • Mu C ++ API, chowonjezera "chopanda" chakhazikitsidwa, zowonjezera zowonjezera zawonjezeredwa panjira ya "cursor:: erase()", kukhazikitsidwa kwa ma buffers sikunagwiritsidwe ntchito "std::string" kuti zitsimikizidwe kuti zikugwirizana. (zogwirizana ndi CLANG libstdc++).
  • Kubwereranso kwa tsamba lodetsedwa ndikutayika kwa algorithm (kutulutsa kosankhidwa kwamasamba osinthidwa) komwe kunawonetsedwa ndi cholakwika chosowa chosayembekezereka MDBX_PROBLEM pamene kusintha deta muzochita zazikulu kwachotsedwa.
  • Kuyesedwa kwapang'onopang'ono kunachitika ndikuwonjezera macheke angapo kuti atsimikizire kukhazikika pakawonongeka mwadala ku database.
  • Anakonza machenjezo ang'onoang'ono UndefinedBehaviorSanitizer ndi nkhani za Coverity Scan.
  • Kukonza kuwunika zakale ndipo sikunagwiritsenso ntchito mbendera yamkati "P_DIRTY" m'masamba omwe ali mkati mwa zithunzi za database zopangidwa ndi mitundu yakale ya laibulale.
  • M'ma CMake scripts, kusaka kwa zida zophatikizira zofunika pa LTO (kukhathamiritsa kwa nthawi yolumikizira) kwasinthidwa.
  • Chiwerengero chachikulu cha owerenga nthawi imodzi chawonjezeka kufika pa 32767.
  • Kuchita bwino mukamagwiritsa ntchito Valgrind ndi AddressSanitizer.
  • Pa Windows, kugwiritsa ntchito mobwerezabwereza kwa SRW-lock mukamagwira ntchito mu MDBX_NOTLS mode (popanda kusungirako ulusi wamba) kwathetsedwa, m'badwo wa bootid wakhazikitsidwa ngati nthawi yasintha, kuzindikira kwa WSL1 ndi WSL2 kwasinthidwa, ndikutha Tsegulani database pa Plan 9 yokhazikitsidwa kudzera pa DrvFS yawonjezedwa.
  • Pazonse, zosintha zopitilira 160 zidapangidwa ku mafayilo 57, ~ mizere 5000 idawonjezedwa, ~ 2500 idachotsedwa.

Ndikufuna makamaka kuthokoza gulu la polojekiti ya Erigon (Ethereum ecosystem) chifukwa cha thandizo lawo poyesa zochitika zogwiritsa ntchito kwambiri. Ndizofunikira kuti m'miyezi isanu kuchokera kumasulidwa kwa libmdbx v0.10.0, ndi voliyumu ya 1-2 TB mu unsembe uliwonse wa Erigon (womwe umagwiritsidwa ntchito pa 7% ya mfundo za Ethereum), malipoti atatu okha a ziphuphu zachinsinsi adalandiridwa, onse. zomwe zidachitika chifukwa chazifukwa zakunja, osati zolakwika zamapulogalamu: muzochitika ziwiri zomwe zidayambitsa kulephera kwa RAM, chachitatu cholakwika pakukhazikitsanso deta pamasinthidwe apadera a kagawo kakang'ono kosungirako pogwiritsa ntchito BTRFS.

Source: opennet.ru

Kuwonjezera ndemanga