Megjelent a libmdbx 0.13.3 (MDBX) könyvtár kiadása, amely egy nagy teljesítményű, kompakt beágyazott kulcs-érték adatbázist valósít meg. A libmdbx kódja Apache 2.0 licenc alatt terjeszthető. Támogatott minden aktuális operációs rendszer és architektúra, valamint az orosz Elbrus 2000. A libmdbx-hez fejlett API érhető el C++ nyelven, valamint támogatottak a lelkes közreműködők által létrehozott Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno és Scala nyelvi kötődései.
Történelmileg a libmdbx a LMDB adatbázis mélyreható újragondolása, amely megbízhatóságban, képességekben és teljesítményben felülmúlja elődjét. Az LMDB-hez képest a libmdbx nagy hangsúlyt fektet a kód minőségére, az API stabil működésére, a tesztelésre és az automatikus ellenőrzésekre. Egy adatbázis-struktúra integritásának ellenőrzésére szolgáló segédprogram is rendelkezésre áll, amely bizonyos helyreállítási lehetőségeket is biztosít. Technológiailag a libmdbx ACID, szigorú változás-sorozatolás és blokkolás nélküli olvasás támogatását nyújtja, lineáris skálázódással a CPU magok felett. A program automatikus tömörítése és az adatbázis méretének automatikus kezelése, valamint a tartományok szerinti lekérdezések becslésének lehetősége is biztosított.
Főbb változások:
- A 0.13.x ág stabil státuszt kapott. Megkezdődött a 0.14.x ág fejlesztése.
- A C API-hoz hozzáadódott az mdbx_cursor_count_ex() függvény, amely lehetővé teszi a jelenlegi kulcshoz tartozó többértékű elemek számának, valamint a tároló fa információinak lekérdezését, amely ezeket az értékeket tárolja.
- A C++ API-hoz hozzáadódott a mdbx::txn::make_broken() metódus, amely megfelel a mdbx_txn_break() függvénynek.
- A mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat eszközökben megvalósításra került a libmdbx hibáinak, figyelmeztetéseinek és fontos üzeneteinek naplózása.
- A viselkedés megváltozása:
- A szemétgyűjtő profilozásának (MDBX_ENABLE_PROFGC=ON opcióval végzett build) engedélyezésekor most már számítják a CPU időt a lapok összefésülésére, vagyis a pnl_merge() függvény működésére.
- A tesztelési eszközben az adatmód értéke átnevezésre került data.dups-ról data.multi-ra.
- Módosítva lett a kulcs hosszának ellenőrzése a cursor_seek() belsejében.
- Ha a mdbx_env_set_option(MDBX_opt_txn_dp_limit) segítségével a felhasználó nem ad meg konkrét értéket, akkor a dirty-pages-limit beállítása minden nem beágyazott írási tranzakció indításakor a rendelkezésre álló RAM és az adatbázis mérete alapján történik.
- MDBX_NOSTICKYTHREADS módban engedélyezett a beágyazott tranzakciók commit/abortálása bármely szálból.
- Beágyazott tranzakciók indításakor MDBX_WRITEMAP módban naplózás és MDBX_INCOMPATIBLE hibakód visszaadása történik.
- A C++ API konstruktorai/kezdeti beállításai és a DB geometria megformálásához kapcsolódó metódusok alapértelmezés szerint csak alapértelmezett értékeket használnak.
- A mdbx_env_set_geometry() belsejében finomították a felhasználó által „alapértelmezett” módon megadott DB geometriai paraméterek kiválasztására irányuló heurisztikákat.
- Javítások:
- Megszüntették a mutesz nem feloldásával kapcsolatos regressziót az dbi-leíró többszöri bezárásának megkísérlésekor, beleértve a kapcsolódó tábla törlése utáni közvetlen bezárás megkísérlését is.
- Megszüntették a nested/dupsort kurzor állapotának regresszióját adatok MDBX_APPEND módban történő beszúrásakor.
- A boot_id lekérdezésének támogatása LXC konténerben végzett munka során.
- Kijavították a belső olvasási tranzakció indítási kísérleteinek helytelen kezelését. Most ilyen esetekben MDBX_EINVAL hiba tér vissza, mivel a beágyazottság csak írás-olvasás tranzakciók esetén támogatott.
- Kijavították a SIGSEGV regressziót, amely a nullcímre történő hivatkozáskor jelentkezett, amikor csak olvasási módban dolgoztak LCK fájl használata nélkül, például ha az adatbázis csak olvasható médián helyezkedik el.
Forrás: opennet.ru
