Avaldatud teekide libmdbx 0.13.3 (MDBX) väljaanne, mis sisaldab kõrgtehnoloogilise kompaktselt sisseehitatud võtme-väärtuse andmebaasi. Libmdbx'i kood on levitatud Apache 2.0 litsentsi alusel. Toetatud on kõik kaasaegsed operatsioonisüsteemid ja arhitektuurid, sealhulgas Venemaa Elbrus 2000. Libmdbx pakub arenenud API-d C++ jaoks ning toetatud on entusiastide loodud sidemed Rusti, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ja Scala keeltega.
Ajalooliselt on libmdbx sügavalt ümber töödelud andmebaas LMDB-st ning ületab oma eelkäijat usaldusväärsuse, võimaluste ja jõudluse poolest. LMDB-ga võrreldes on libmdbx-is suurt tähelepanu pööratud koodi kvaliteedile, API stabiilsele toimimisele, testimisele ja automaatsetele kontrollidele. Saadaval on andmebaasi struktuuri terviklikkuse kontrollimise utiliit mõningate taastamisvõimalustega. Tehnoloogiliselt pakub libmdbx ACID-i, ranget muudatuste seeriat ja mittetakistavat lugemist, millel on lineaarne skaleerimine CPU tuumade vahel. Toetatud on automaatne kompaktimine, andmebaasi suuruse automaatne haldamine ning vahemike põhjal tehtud valimite hindamine.
Peamised muudatused:
- Versioon 0.13.x saavutab stabiilse staatuse. Alanud on 0.14.x haru arendamine.
- C API-sse on lisatud funktsioon mdbx_cursor_count_ex(), mis lubab saada nii vastava praeguse võtme mitme väärtuse arvu kui ka teavet sisemiste puude kohta, mis neid väärtusi salvestavad.
- C++ API-s on lisatud meetod mdbx::txn::make_broken(), mis on sarnane mdbx_txn_break()-le.
- Utiliitides mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat on realiseeritud vigade, hoiatusete ja olulisete sõnumite logimine libmdbx-ist.
- Käitumise muutus:
- Kui prügikogumise profiliseerimine on sisse lülitatud (kompresseerimine valikuga MDBX_ENABLE_PROFGC=ON), loetakse nüüd CPU aja kulud lehtede loendite ühendamiseks, s.t. funktsiooni pnl_merge() töötamiseks.
- Testimise utiliidis on andmemudeli režiimi nimetus muudetud data.dups-ilt data.multi-ks.
- Kursori otsingu sees on täiustatud võtme pikkuse kontrolli.
- Kui kasutaja ei määra mdbx_env_set_option(MDBX_opt_txn_dp_limit) kaudu oma väärtust, siis kohandatakse dirty-pages-limit-i iga mitte-embedditud kirjutava tehingu käivitamisel, lähtuvalt saadaval olevast RAM-ist ja andmebaasi suurusest.
- MDBX_NOSTICKYTHREADS režiimis lubatakse sisemiste tehingute commit/abort mistahes lõimes/töötlevas seadmes.
- Katses, et proovite alustada sisemisi tehinguid MDBX_WRITEMAP režiimis, logitakse ja tagastatakse MDBX_INCOMPATIBLE viga.
- C++ API-s kasutatakse konstruktorites / initsialiseerijates ja meetodites, mis on seotud andmebaasi geomeetria loomisega, vaikimisi ainult default-väärtusi.
- mdbx_env_set_geometry() sees on täiustatud heuristikad, et leida kasutaja poolt nõutud andmebaasi geomeetria vaikeparameetreid.
- Parandused:
- Parandatud regressor, mis takistab muteksist vabastamise katset, kui proovitakse uuesti sulgeda dbi-deskriptorit, sealhulgas siis, kui üritatakse deskriptorit selgelt sulgeda pärast seotud tabeli kustutamist.
- Parandatud olukord, kus sisemised / duplikaatkursorite seisund pärast andmete sisestamist MDBX_APPEND-režiimis ei taastunud õigesti.
- Toetatakse boot_id saamist LXC-konteineris töötamisel.
- Parandatud viga sisemiste lugemis-tehingute käivitamise vale töötlemise osas. Nüüd tagastatakse sellistes olukordades MDBX_EINVAL viga, kuna pesakonna tohi toetada ainult lugemise-salvestamise tehinguid.
- Parandatud SIGSEGV regress, mis tekitab nullaadressile juurdepääsu kasutades ainult lugemisrežiime, näiteks andmebaasi paigutamisel ainult kirjutuskaitstud meediasse.
Allikas: opennet.ru
