Rilaxx ta' DBMS inkorporat ta' prestazzjoni għolja libmdbx 0.10.4 u libfpta 0.3.9

Il-librerija libmdbx 0.10.4 (MDBX) ġiet rilaxxata bl-implimentazzjoni ta 'database ta' valur ewlieni inkorporat kompatt ta 'prestazzjoni għolja, u l-librerija assoċjata libfpta 0.3.9 (FPTA), li timplimenta rappreżentazzjoni tabulari ta' data b'indiċi sekondarji u komposti fuq MDBX. Iż-żewġ libreriji huma mqassma taħt liċenzji approvati mill-OSI. Is-sistemi operattivi u l-arkitetturi kollha kurrenti huma appoġġjati, kif ukoll il-Russu Elbrus 2000.

Storikament, libmdbx huwa xogħol mill-ġdid fil-fond tal-LMDB DBMS u huwa superjuri għall-antenat tiegħu fl-affidabbiltà, is-sett ta 'karatteristiċi u l-prestazzjoni. Meta mqabbel ma 'LMDB, libmdbx jagħmel ħafna enfasi fuq il-kwalità tal-kodiċi, l-istabbiltà tal-API, l-ittestjar u l-kontrolli awtomatizzati. Hija fornuta utilità għall-iċċekkjar tal-integrità tal-istruttura tad-database b'xi kapaċitajiet ta' rkupru.

Fir-rigward tat-teknoloġija, libmdbx joffri ACID, serialization ta 'bidla qawwija, u qari li ma jimblukkawx bi skalar lineari fil-qlub tas-CPU. Il-kompattifikazzjoni awtomatika, il-ġestjoni awtomatika tad-daqs tad-database, u l-istima tal-mistoqsija tal-firxa huma appoġġjati. Mill-2016, proġetti ġew iffinanzjati minn Positive Technologies u mill-2017 ġew użati fil-prodotti tagħha.

libmdbx joffri C++ API, kif ukoll rabtiet lingwistiċi appoġġjati minn dilettanti għal Rust, Haskell, Python, NodeJS, Ruby, Go, u Nim. Għal libfpta, id-deskrizzjoni tal-API biss hija disponibbli pubblikament fil-forma ta' fajl header C/C++.

Innovazzjonijiet kbar, titjib u korrezzjonijiet miżjuda mill-aħbarijiet preċedenti fid-9 ta’ Mejju:

  • Jippermetti bini riproduċibbli.
  • Iffissat bug li minħabba fih, f'ċirkostanzi rari ħafna, jista 'jseħħ loop/iffriżar waqt impenn ta' tranżazzjoni. Il-problema ġiet identifikata mill-ispeċjalisti ta' Positive Tecnologies waqt l-ittestjar intern tal-prodotti tagħhom stess.
  • It-testijiet ġew imtejba u x-xenarji tat-test ġew estiżi biex jiċċekkjaw l-istati kollha mhux isomorfiċi li jistgħu jintlaħqu tas-siġra tal-paġna u l-kontenut tal-GC ġewwa d-database.
  • Fis-C++ API, ġie ffissat "noexcept" żejjed, ġew miżjuda tagħbija żejda addizzjonali għall-metodu "cursor::erase()", l-implimentazzjoni tal-buffers ġiet meħlusa mill-użu ta '"std::string" biex jiġi żgurat l-allinjament (rilevanti għal CLANG libstdc++).
  • Rigressjoni fl-algoritmu tat-tixrid tal-paġna maħmuġa (tkeċċija selettiva tal-paġni tad-database mibdula) li kienet manifestata minn żball rari mhux mistenni MDBX_PROBLEM meta tinbidel id-dejta fi tranżazzjonijiet kbar ġiet eliminata.
  • Twettaq test ta' fażijiet biż-żieda ta' numru ta' kontrolli biex tiġi żgurata l-istabbiltà fil-każ ta' ħsara intenzjonata lid-database.
  • Twissijiet minuri ffissati kwistjonijiet UndefinedBehaviorSanitizer u Coverity Scan.
  • Imwaqqfa l-iċċekkjar tal-bandiera interna skaduta u li m'għadhiex użata "P_DIRTY" f'paġni mdaħħla ġewwa immaġini tad-database maħluqa minn verżjonijiet eqdem tal-librerija.
  • Fl-iskripts CMake, it-tfittxija għall-komponenti tal-kompilatur meħtieġa għal LTO (ottimizzazzjoni tal-ħin tal-link) ġiet imtejba.
  • In-numru massimu ta' qarrejja simultanji żdied għal 32767.
  • Prestazzjoni mtejba meta tuża Valgrind u AddressSanitizer.
  • Fuq Windows, l-użu rikorsiv ta 'SRW-lock meta taħdem fil-mod MDBX_NOTLS (mingħajr ma tuża ħażna lokali tal-ħajt) ġie eliminat, il-ġenerazzjoni tal-bootid ġiet iffissata jekk il-ħin tas-sistema jkun inbidel, l-iskoperta WSL1 u WSL2 tjiebet, u l-abbiltà li tiftaħ database fuq Pjan 9 immuntat permezz DrvFS ġiet miżjuda.
  • B'kollox, saru aktar minn 160 tibdil f'57 fajl, ġew miżjuda ~ 5000 linja, ~2500 tħassru.

Nixtieq b'mod speċjali nirringrazzja lit-tim tal-proġett Erigon (ekosistema Ethereum) għall-assistenza tagħhom fl-ittestjar f'xenarji ta 'użu estrem. Huwa sinifikanti li f'ħames xhur mir-rilaxx ta 'libmdbx v0.10.0, b'volum ta' database ta '1-2 TB f'kull installazzjoni Erigon (użata fuq 7% tan-nodi Ethereum), ġew riċevuti biss tliet rapporti ta' korruzzjoni ta 'database, kollha li seħħew minħabba raġunijiet esterni, u mhux żbalji ta 'softwer: f'żewġ każijiet il-kawża kienet fallimenti RAM, fit-tielet żball fir-reset tad-data f'konfigurazzjoni speċifika tas-subsistema tal-ħażna bl-użu ta' BTRFS.

Sors: opennet.ru

Żid kumment