Errendimendu handiko kapsulatutako DBMS libmdbx 0.10.4 eta libfpta 0.3.9 kaleratzea

libmdbx 0.10.4 (MDBX) liburutegiak errendimendu handiko kapsulatutako gako-balioen datu-base trinko baten inplementazioarekin eta lotutako libfpta 0.3.9 (FPTA) liburutegiarekin kaleratu ziren, indize sekundario eta konposatuekin datuen irudikapen taula bat ezartzen duena. MDBX-ren gainean. Bi liburutegiak OSI onartutako lizentzien arabera banatzen dira. Egungo sistema eragile eta arkitektura guztiak onartzen dira, baita Russian Elbrus 2000 ere.

Historikoki, libmdbx LMDB DBMSren birmoldaketa sakona da eta bere arbasoa baino handiagoa da fidagarritasunean, ezaugarri multzoan eta errendimenduan. LMDBrekin alderatuta, libmdbx-ek kodearen kalitateari, APIaren egonkortasunari, probak eta egiaztapen automatizatuei garrantzia handia ematen die. Datu-basearen egituraren osotasuna egiaztatzeko erabilgarritasun bat eskaintzen da berreskuratzeko gaitasun batzuekin.

Teknologiari dagokionez, libmdbx-ek ACID, aldaketaren serializazio sendoa eta blokeorik gabeko irakurketak eskaintzen ditu PUZaren nukleoetan eskalatze linealarekin. Trinkotze automatikoa, datu-basearen tamaina automatikoa kudeatzea eta barrutiaren kontsultaren estimazioa onartzen dira. 2016az geroztik, Positive Technologies-ek finantzatu ditu proiektuak eta 2017az geroztik bere produktuetan erabiltzen dira.

libmdbx-ek C++ API bat eskaintzen du, baita Rust, Haskell, Python, NodeJS, Ruby, Go eta Nim-entzako zaleek onartzen dituzten hizkuntza-loturak ere. libfpta-rako, APIaren deskribapena soilik dago publikoki eskuragarri C/C++ goiburuko fitxategi moduan.

Maiatzaren 9ko aurreko albisteaz geroztik gehitutako berrikuntza, hobekuntza eta zuzenketa nagusiak:

  • Erreproduzigarriak diren eraikuntzak gaitzen ditu.
  • Akats bat konpondu da, zeinaren ondorioz, oso egoera bakanetan, begizta/izozketa bat gerta zitekeen transakzio-konpromiso batean. Arazoa Positive Tecnologies-eko espezialistek identifikatu zuten beren produktuen barne probetan.
  • Probak hobetu dira eta proba-eszenatokiak zabaldu egin dira datu-basearen barruan dauden orri-zuhaitzaren eta GC edukiaren egoera ez-isomorfiko irisgarri guztiak egiaztatzeko.
  • C++ APIan, "noexcept" gehigarri bat konpondu da, gainkarga gehigarriak gehitu dira "cursor::erase()" metodorako, buffer-en ezarpenak "std::string" erabiltzea baztertu da lerrokatzea ziurtatzeko. (CLANG libstdc++-rako garrantzitsua).
  • Ezabatu egin da transakzio handietan datuak aldatzean MDBX_PROBLEM ustekabeko errore arraro baten ondorioz agertu den orri zikinen isurketa algoritmoaren erregresio bat (aldatutako datu-baseko orrien kanporaketa selektiboa).
  • Fase proba bat egin da datu-basean nahita kaltetuta egonez gero egonkortasuna bermatzeko hainbat egiaztapen gehituta.
  • Abisu txikiak konpondu dira UndefinedBehaviorSanitizer eta Coverity Scan arazoak.
  • "P_DIRTY" barne-marka zaharkitua eta jada erabiltzen ez den egiaztatzea konpondu da liburutegiaren bertsio zaharragoek sortutako datu-baseko irudien barruan habiaratu diren orrialdeetan.
  • CMake scriptetan, LTOrako (link-time optimization) behar diren konpiladore osagaien bilaketa hobetu da.
  • Aldibereko irakurleen gehienezko kopurua 32767ra igo da.
  • Errendimendua hobetu da Valgrind eta AddressSanitizer erabiltzean.
  • Windows-en, MDBX_NOTLS moduan lan egitean SRW-blokeoaren erabilera errekurtsiboa (haria biltegiratze lokala erabili gabe) ezabatu egin da, abiarazteen sorkuntza konpondu da sistemaren ordua aldatu bada, WSL1 eta WSL2 detekzioa hobetu da eta gaitasuna. ireki DrvFS bidez muntatutako Plan 9-n datu-base bat gehitu da.
  • Guztira, 160 fitxategitan 57 aldaketa baino gehiago egin ziren, ~ 5000 lerro gehitu ziren, ~ 2500 ezabatu ziren.

Bereziki eskerrak eman nahi nizkioke Erigon proiektuko taldeari (Ethereum ekosistema) muturreko erabilera agertokietan probak egiteko emandako laguntzagatik. Esanguratsua da libmdbx v0.10.0 kaleratu zenetik bost hilabetetan, Erigon instalazio bakoitzean 1-2 TB-ko datu-basearen bolumenarekin (Ethereum nodoen % 7tan erabilia), datu-basearen ustelkeriaren hiru txosten baino ez zirela jaso, guztiak. kanpoko arrazoiengatik gertatu zena, eta ez software akatsengatik: bi kasutan RAM akatsak izan ziren kausa, hirugarrenean BTRFS erabiliz biltegiratze azpisistemaren konfigurazio zehatz batean datuak berrezartzean errorea.

Iturria: opennet.ru

Gehitu iruzkin berria