Augstas veiktspējas iegultās DBVS libmdbx 0.10 izlaiÅ”ana

Pēc trÄ«s mēneÅ”u izstrādes tika izlaists libmdbx 0.10.0 (MDBX), ievieÅ”ot augstas veiktspējas, kompaktu iegulto atslēgu vērtÄ«bu datu bāzi. Libmdbx kods ir licencēts saskaņā ar OpenLDAP publisko licenci. libmdbx ir dziļa LMDB DBVS pārstrāde, un, pēc izstrādātāju domām, tā ir pārāka par savu priekÅ”teci uzticamÄ«bas, iespēju diapazona un veiktspējas ziņā. Tiek norādÄ«ts, ka libmdbx ir lÄ«dz 20% ātrāks nekā LMDB CRUD scenārijos un lÄ«dz 30% ātrāks, ja iekŔējās kontroles ir atspējotas, veidojot libmdbx lÄ«menÄ«, kas ir salÄ«dzināms ar LMDB.

Libmdbx piedāvā ACID, spēcÄ«gu izmaiņu serializāciju un nebloķējoÅ”us nolasÄ«jumus, kas lineāri mērogojas visos CPU kodolos. Libmdbx liela uzmanÄ«ba tiek pievērsta koda kvalitātei, stabilai API darbÄ«bai, testÄ“Å”anai un automātiskajām pārbaudēm. Atbalsta automātisko sablÄ«vÄ“Å”anu, automātisku datu bāzes lieluma pārvaldÄ«bu, vienotu datu bāzes formātu 32 bitu un 64 bitu komplektiem un diapazona vaicājumu novērtÄ“Å”anu. Tiek nodroÅ”ināta utilÄ«ta datu bāzes struktÅ«ras integritātes pārbaudei ar dažām atkopÅ”anas iespējām. KopÅ” 2016. gada projektu finansē Positive Technologies, un tas tiek izmantots tā produktos kopÅ” 2017. gada, un ASV valdÄ«bas noteiktajām sankcijām pret Positive Technologies nav manāmas ietekmes.

KopÅ” pēdējās izlaiÅ”anas pievienoti galvenie jauninājumi, uzlabojumi un labojumi:

  • Ir pieejams Mahlona E. Smita Ruby iesējums un Noela Kunces Python iesējumu izmēģinājuma versija, un ir atjaunināti Alekseja Å arova iesējumi GoLang.
  • Režīmā ā€œMDBX_WRITEMAPā€, kad datu bāzes dati tiek mainÄ«ti tieÅ”i RAM, tiek ieviesta mainÄ«to datu bāzes lapu ā€œcaurspÄ«dÄ«ga izlieÅ”anaā€ uz diska. Tagad, pēc katras darbÄ«bas pabeigÅ”anas, Ŕādas lapas uzreiz ir pilnÄ«bā gatavas ierakstÄ«Å”anai diskā un OS kodols var patstāvÄ«gi izskalot mainÄ«tās lapas diskā, un darÄ«juma veikÅ”anai tās nav jāmaina. Tā rezultātā noslogotos scenārijos ar nepietiekamu operatÄ«vo atmiņu diska darbÄ«bu apjomu var samazināt lÄ«dz pat 2 reizēm.
  • Ieviesta sen neizmantotu modificētu lapu ēnu kopiju izlikÅ”ana, dodot priekÅ”roku lapu izlikÅ”anai ar lielām/garām vērtÄ«bām, kuras lielākajā daļā gadÄ«jumu tiek mainÄ«tas tikai vienu reizi vienā darÄ«jumā. Rezultāts ir samazināta diska trafika un uzlabota veiktspēja scenārijos ar ļoti lieliem darÄ«jumiem.
  • Ieviests ā€œviedaisā€ režīms lapu sadalÄ«Å”anai, ievietojot atslēgas. Tagad, ievietojot sakārtotas secÄ«bas, lapas tiek automātiski pilnÄ«bā aizpildÄ«tas, un citos gadÄ«jumos koks ir optimālāk lÄ«dzsvarots. LÄ«dz ar to caurmērā datu bāzes lapas tiek aizpildÄ«tas optimālāk un B-koks ir lÄ«dzsvarotāks, kas pozitÄ«vi ietekmē veiktspēju.
  • Ir pievienota operāciju statistika ar lapām, kas ļauj precÄ«zi novērtēt operāciju modificÄ“Å”anas ar datu bāzi izmaksas.
  • Ir novērstas vairāk nekā ducis kļūdu un kļūdu, tostarp: problēmas ar veidoÅ”anu, izmantojot MinGW, izmantojot `std::filesystem::path` operētājsistēmā iOS <= 13.0, veidoÅ”anu, kuru mērÄ·auditorija tiek atlasÄ«ta vecākām Windows versijām utt.
  • Kopumā 200 failos veiktas vairāk nekā 66 izmaiņas, pievienotas ~6500 rindas, dzēstas ~4500.

AtseviŔķi es vēlos atzÄ«mēt Turbo-Geth projekta (Go-Ethereum turbo dakÅ”a) libmdbx izvēli kā jaunu krātuves aizmuguri, kā arÄ« pateikties projekta komandai (jo Ä«paÅ”i Aleksejam Å arovam, Artjomam Vorotņikovam un Aleksejam Akhunovam) par viņu darbu. lieliska palÄ«dzÄ«ba testÄ“Å”anā ārkārtējos lietoÅ”anas gadÄ«jumos. Jo Ä«paÅ”i tika atklāts un novērsts priekÅ”lasÄ«Å”anas/keÅ”atmiņas vadÄ«bas defekts, kas izraisÄ«ja veiktspējas pasliktināŔanos grÅ«ti reproducējamos scenārijos ar lielām datu bāzēm.

Avots: opennet.ru

Pievieno komentāru