Vabastati kõrgtehnoloogiline sisseehitatud andmebaas libmdbx 0.10

Pärast kolme kuu arendustööd toimus libmdbx 0.10.0 (MDBX) väljaanne, mis sisaldab kõrgelt tootlikku, kompaktset sisseehitatud võtme-väärtuse andmebaasi. libmdbx kood on levitatav OpenLDAP Public License'i alusel. libmdbx on põhjalik ülevaade andmebaasist LMDB ning arendajate sõnul ületab see oma eelkäijat usaldusväärsuse, funktsioonide kogumi ja tootlikkuse osas. Teadaolevalt on libmdbx CRUD-skeemides kuni 20% kiirem kui LMDB ja kuni 30% kiirem, kui libmdbx koostamisel keelata sisemine kontroll, et saavutada peaaegu LMDB tasemel.

Libmdbx pakub ACID-i, ranget muudatuste serialiseerimist ja mitteblokeerivat lugemist koos lineaarse skaleeritavusega CPU tuumade järgi. Libmdbx-is pööratakse suurt tähelepanu koodi kvaliteedile, API stabiilsusele, testimisele ja automatiseeritud kontrollidele. Toetatakse automaatset kompaktimist, automaatset andmebaasi suuruse haldamist, ühtset andmebaasi formaati 32- ja 64-bitiste koostuste jaoks, vahemike põhjal hindamise (range query estimation). Elle on saadaval andmebaasi struktuuri terviklikkuse kontrollimise utiliit, kus on mõned taastamisvõimalused. Alates 2016. aastast rahastab projekti Positive Technologies ning alates 2017. aastast kasutatakse seda nende toodetes, samas ei avalda USA valitsuse poolt Positive Technologies'e vastu kehtestatud sanktsioonid mingit märkimisväärset mõju.

Olulisemad uuendused, täiustused ja parandused, mis on lisatud pärast eelmist väljaannet:

  • Saadaval on Ruby sidumine Mahlon E. Smithilt ja Python'i katseversioon Noel Kuntze'ilt, GoLang'i sidumised on ajakohastatud Alexey Sharovilt.
  • Režiimil «MDBX_WRITEMAP», kus andmebaasi andmeid muudetakse otse RAM-is, on rakendatud «läbipaistev voog» muudetud andmebaasi lehekülgede kirjutamiseks kettale. Nüüd, pärast iga toimingu lõpetamist, on need leheküljed kohe täielikult valmis kettale kirjutamiseks ja operatsioonisüsteemi tuum saab ise muudetud leheküljed kettale kirjutada, ilma et tehingu fikseerimiseks oleks vaja neid muuta. Selle tulemusena võib mälupuuduse korral koormatud stsenaariumites kettatoimingute maht väheneda kuni 2 korda.
  • On rakendatud vana, mittekasutatavate varukoopiate väljajätmine muudetud lehekülgedelt, eelistades lehekülgede kustutamist, kus on suured/pikad väärtused, mis enamikus stsenaariumites muudetakse ainult üks kord tehingu jooksul. Selle tulemusena väheneb kettaga vahetatava andmete maht ja suureneb jõudlus väga suurte tehingute korral.
  • Rakendatud on "nutikas" lehtede jagamise režiim võtmete sisestamisel. Nüüd tagatakse järjestatud jadasid sisestades automaatselt lehtede täielik täitmine ja muudel juhtudel paremini optimeeritud puu tasakaal. Tulemuseks on, et andmebaasi lehed täidetakse keskmiselt paremini ning B-puu muutub tasakaalustatumaks, mis positively mõjutab jõudlust.
  • Lisatud on lehtede operatsioonide statistika, mis võimaldab täpselt hinnata andmebaasi muutmisoperatsioonide kulusid.
  • Eemaldatud on rohkem kui tosin viga ja probleem, sealhulgas: MinGW kaudu kokkupanemise probleemide lahendamine, `std::filesystem::path` kasutamine iOS <= 13.0, kokkupanek vanade Windowsi versioonide sihtimisega jne.
  • Kokku on tehtud üle 200 muudatuse 66 failis, lisatud on ~6500 rida, eemaldatud ~4500.

Eraldi tahaksin tähelepanu pöörata projekti Turbo-Geth (turbo-fork Go-Ethereum) valikule libmdbx kui uuele salvestusbackendile ning tänada projekti meeskonda (eriti Aleksei Sharovi, Artiom Vorotnikovi ja Aleksei Ahunovi) nende suure abi eest äärmuslike kasutusstsenaariumide testimisel. Just nii avastati ja kõrvaldati viga eelneva lugemise/kihi haldamisel, mis põhjustas jõudluse halvenemist keerukalt korratavates stsenaariumides suurte andmebaasidega.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster