Augstas veiktspējas iegultās DBVS libmdbx 0.10.4 un libfpta 0.3.9 izlaišana

Libmdbx 0.10.4 (MDBX) bibliotēkas tika izlaistas, ieviešot augstas veiktspējas kompaktu iegulto atslēgu vērtību datu bāzi un saistīto libfpta 0.3.9 (FPTA) bibliotēku, kas ievieš datu tabulas attēlojumu ar sekundārajiem un saliktajiem indeksiem. virs MDBX. Abas bibliotēkas tiek izplatītas ar OSI apstiprinātām licencēm. Tiek atbalstītas visas pašreizējās operētājsistēmas un arhitektūras, kā arī Krievijas Elbrus 2000.

Vēsturiski libmdbx ir dziļa LMDB DBVS pārstrāde, un tā ir pārāka par savu priekšteci uzticamības, funkciju kopas un veiktspējas ziņā. Salīdzinot ar LMDB, libmdbx lielu uzsvaru liek uz koda kvalitāti, API stabilitāti, testēšanu un automatizētām pārbaudēm. Tiek nodrošināta utilīta datu bāzes struktūras integritātes pārbaudei ar dažām atkopšanas iespējām.

Tehnoloģiju ziņā libmdbx piedāvā ACID, spēcīgu izmaiņu serializāciju un nebloķējošu lasīšanu ar lineāru mērogošanu starp CPU kodoliem. Tiek atbalstīta automātiskā blīvēšana, automātiska datu bāzes lieluma pārvaldība un diapazona vaicājuma novērtēšana. Kopš 2016. gada projektus finansē Positive Technologies un kopš 2017. gada tiek izmantoti tā produktos.

libmdbx piedāvā C++ API, kā arī entuziastu atbalstītus valodu saistījumus Rust, Haskell, Python, NodeJS, Ruby, Go un Nim. Libfpta tikai API apraksts ir publiski pieejams C/C++ galvenes faila veidā.

Kopš iepriekšējām ziņām 9. maijā pievienoti galvenie jauninājumi, uzlabojumi un labojumi:

  • Iespējo reproducējamus būvējumus.
  • Izlabota kļūda, kuras dēļ ļoti retos gadījumos darījuma izpildes laikā var rasties cilpa/iesaldēšana. Problēmu konstatēja Positive Tecnologies speciālisti savu produktu iekšējās testēšanas laikā.
  • Testi ir uzlaboti un testu scenāriji ir paplašināti, lai pārbaudītu visus sasniedzamos neizomorfos lapu koka un GC satura stāvokļus datu bāzē.
  • C++ API ir izlabots papildu “noexcept”, pievienotas papildu pārslodzes metodei “cursor::erase()”, buferu ieviešanā ir aiztaupīts no “std::string” izmantošanas, lai nodrošinātu līdzināšanu. (attiecas uz CLANG libstdc++).
  • Ir novērsta regresija netīro lapu izliešanas algoritmā (izmainīto datu bāzes lapu selektīva izstumšana), kas izpaudās ar retu negaidītu MDBX_PROBLEM kļūdu, mainot datus milzīgās transakcijās.
  • Tika veikta pakāpeniskā pārbaude, pievienojot vairākas pārbaudes, lai nodrošinātu stabilitāti datubāzes tīšas bojāšanas gadījumā.
  • Izlaboti nelieli brīdinājumi UndefinedBehaviorSanitizer un Coverity Scan problēmas.
  • Novērsta novecojušā un vairs neizmantotā iekšējā karoga “P_DIRTY” pārbaude ligzdotajās lapās datu bāzes attēlos, kas izveidoti ar vecākām bibliotēkas versijām.
  • CMake skriptos ir uzlabota kompilatora komponentu meklēšana, kas nepieciešama LTO (saites laika optimizācijai).
  • Maksimālais vienlaicīgo lasītāju skaits palielināts līdz 32767.
  • Uzlabota veiktspēja, izmantojot Valgrind un AddressSanitizer.
  • Operētājsistēmā Windows ir novērsta rekursīva SRW bloķēšanas izmantošana, strādājot režīmā MDBX_NOTLS (neizmantojot pavedienu lokālo krātuvi), ir fiksēta sāknēšanas ģenerēšana, ja ir mainījies sistēmas laiks, ir uzlabota WSL1 un WSL2 noteikšana un iespēja ir pievienota atvērta datubāze 9. plānam, kas uzstādīts, izmantojot DrvFS.
  • Kopumā 160 failos veiktas vairāk nekā 57 izmaiņas, pievienotas ~5000 rindas, dzēstas ~2500.

Īpaši vēlos pateikties Erigon projekta komandai (Ethereum ekosistēma) par palīdzību testēšanā ekstremālos lietošanas scenārijos. Zīmīgi, ka piecu mēnešu laikā kopš libmdbx v0.10.0 izlaišanas ar datu bāzes apjomu 1-2 TB katrā Erigon instalācijā (izmantota 7% Ethereum mezglu) tika saņemti tikai trīs ziņojumi par datu bāzes bojājumiem, visi kas radās ārēju iemeslu, nevis programmatūras kļūdu dēļ: divos gadījumos iemesls bija RAM kļūmes, trešajā - kļūda, atiestatot datus noteiktā krātuves apakšsistēmas konfigurācijā, izmantojot BTRFS.

Avots: opennet.ru

Pievieno komentāru