Vabastatud kõrge jõudlusega manustatud andmebaas libmdbx 0.10

Pärast kolme kuu arendust on välja antud libmdbx 0.10.0 (MDBX) teek, mis on rakendatav kõrgtehnoloogiline, kompaktne võtme-väärtuse andmebaas. libmdbx kood on levitatud OpenLDAP Public License'i all. libmdbx on sügavalt ümber töötatud LMDB andmebaas ja arendajate väitel ületab see oma eelkäijat usaldusväärsuse, funktsioonide komplekti ja jõudluse osas. Teatatakse, et libmdbx on CRUD stsenaariumites kuni 20% kiirem kui LMDB ja kuni 30% kiirem, kui libmdbxi kompileerimisel on välja lülitatud sisejälgimine, mis vastab LMDB tasemele.

Libmdbx pakub ACID-tugi, ranget muudatuste serialiseerimist ja mitteblokeerivat lugemist, mis võimaldab lineaarset skaleerimist CPU tuumade järgi. libmdbx-s on rõhk pandud koodikvaliteedile, API stabiilsele toimimisele, testimisele ja automaatsetele kontrollidele. Toetatakse automaatset kompaktimist, automaatset andmebaasi suuruse haldamist, ühte andmebaasi vormingut 32-bitiste ja 64-bitiste koostete jaoks, vahemike (range query estimation) põhjal asetuste hindamine. Toodud on andmebaasi struktuuri terviklikkuse kontrollimise utiliit, millel on mõned taastamise võimalused. Alates 2016. aastast rahastatakse projekti Positive Technologies'i poolt ja alates 2017. aastast kasutatakse seda nende toodetes, samas ei avalda USA valitsuse kehtestatud sanktsioonid Positive Technologies'ile mingit märkimisväärset mõju.

Peamised uuendused, täiustused ja parandused, mis lisati pärast eelmist väljalaset:

  • Saadaval on Ruby sidumine Mahlon E. Smithilt ja prooviversioon Python sidumist Noel Kuntzelt, samuti on värskendatud GoLang sidumisi Aleksei Šarovilt.
  • MDBX_WRITEMAP režiimis, kus andmebaasi andmeid muudetakse otse RAM-is, on rakendatud „läbipaistev voolamine“ kõvaketta muutunud lehtedele. Nüüd, pärast iga toimingu lõpetamist, on need lehed viivitamatult valmis kõvakettale kirjutamiseks ning opsüsteemi kernel võib iseseisvalt muutunud lehti kõvakettale tõsta, mistõttu tehingu fikseerimine ei nõua nende modifitseerimist. Selle tulemusel võib koormatud stsenaariumites, kus RAM-i on piiratud, kõvaketta operatsioonide maht väheneda kuni 2 korda.
  • Tehti on ära kasutatud juba ammu mittekasutatud varjatud koopiad muudetud lehtedest, eelistades lehtede kustutamist, millel on suuremad/pikemad väärtused, mis enamikus stsenaariumides muudetakse ühe korra tehingu jooksul. Selle tulemusena väheneb andmevahetuse maht ketas ja suureneb jõudlus väga suurte tehingute korral.
  • Rakendatud on "nutikas" lehtede jagamise režiim võtmete sisestamisel. Nüüd tagatakse järjestatud järjestuste sisestamisel automaatselt lehtede täielik täitmine, samas kui muudel juhtudel saavutatakse optimaalne puu tasakaalustamine. Selle tulemusena täidetakse andmebaasi lehed keskmiselt paremini ja B-puu on paremini tasakaalustatud, mis mõjutab positiivselt jõudlust.
  • Lisatud on statistika lehtede operatsioonide kohta, mis võimaldab täpselt hinnata andmebaasi muutmise operatsioonide kulusid.
  • Lahendatud on rohkem kui tosin puudust ja viga, sealhulgas: lahendatud on probleeme MinGW koostamisel, `std::filesystem::path` kasutamisel iOS <= 13.0, koostamine vanemate Windowsi versioonide sihtimisega jne.
  • Kokku on tehtud üle 200 muudatuse 66 failis, lisatud on ~6500 rida, eemaldatud ~4500.

Eraldi soovime märkida Turbo-Geth (turbo-foor Go-Ethereum) projekti valikut libmdbx uue ladustamise tagumise platvormina ning tänada projekti meeskonda (eriti Aleksei Šarovit, Artem Vorotnikovit ja Aleksei Ahunovit) suure abistamise eest testimisel ekstreemsetes kasutusstsenaariumites. Eelkõige tuvastati ja kõrvaldatud defekt eelnevate lugemise/cache’imise haldamisel, mis põhjustas jõudluse halvenemist keerukates reprodutseeritavates stsenaariumites suurte andmebaasidega.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster