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
