Megjelent a libmdbx 0.13.2 (MDBX) könyvtár, 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 áll rendelkezésre. Támogatottak a legfrissebb operációs rendszerek és architektúrák, beleértve az orosz Elbrus 2000-et is. A libmdbx egy fejlett API-t kínál C++ nyelven, valamint közösségi támogatással elérhető a Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno és Scala nyelvekhez is.
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:
- Felgyorsult a GC frissítése a laplista visszaadásakor/elhelyezésekor bonyolult forgatókönyvekben. A korábban letiltott kísérleti korrekciós visszajelzési mód fejlesztésre került és aktiválva lett. Ennek következtében lényegesen javult a konvergencia (csökkent a próbálkozások száma), valamint megszüntették azt a hibát, amely a tranzakciók rögzítésekor (MDBX_PROBLEM hiba visszaadásával) ritka specifikus feltételek mellett 'ciklusba' juttatta a rendszert.
- A CMake építési szkriptekbe bekerült a C23 szabvány.
- T-makrók kerültek hozzáadásra a char/wchar_t páros függvényekhez.
- A C++ API-hoz hozzáadva a beágyazott írási tranzakciók támogatása.
- Átálltunk a szemantikus verziókezelés második kiadására ('Semantic Versioning 2'), és biztosítottuk a verzióinformációk exportálását a VERSION.json fájlba.
- Egy olyan környezeti változó támogatását is hozzáadtuk, mint a SOURCE_DATE_EPOCH a build reprodukálhatóságának biztosítása érdekében. Az MDBX_BUILD_TIMESTAMP támogatása megmaradt, és ez a változó elsőbbséget élvez.
- Új lehetőség került hozzáadásra a libmdbx összeszerelésének további információinak megadására az MDBX_BUILD_METADATA opció segítségével. A megadott információk most egyszerűen beépülnek a könyvtárba az mdbx_build.metadata értékeként, és később a csomagok és hasonlók létrehozásánál is felhasználásra kerülnek.
- Hibák naplózása került bevezetésre az API-ból. Ehhez mostantól elegendő beállítani a MDBX_LOG_DEBUG naplózási szintet (a hibák naplózásához a MDBX_NOTFOUND kivételével) vagy a MDBX_LOG_TRACE szintet (minden hiba, valamint a MDBX_RESULT_TRUE naplózása).
- A viselkedés megváltozása:
- Hozzáadva a mdbx::cursor::get_multiple_samelength() metódus, és átnevezve a mdbx::txn::put_multiple_samelength() metódus.
- A C++ API egységessége érdekében az MDBX_GET_MULTIPLE művelet végrehajtásakor mostantól a kulcs értéke is visszaadásra kerül.
- A mdbx::env::geometry méretkonstansainak alap típusa megváltozott a nem-pozitív size_t típusból a pozitív intptr_t típusra.
- Az ntdll használatának előnyben részesítése csak akkor történik, ha a C++ API kifejezetten letiltásra kerül.
- Biztosítva van a visszavont/megszakított olvasási tranzakciók memória felszabadítása, amelyeket a mdbx_txn_commit() függvénybe adnak át. Az API megállapodás megköveteli, hogy az ilyen tranzakciókat a mdbx_txn_abort() segítségével szabadítsák fel, ami miatt a mdbx_txn_commit() függvény hibát adott vissza ilyen esetekben anélkül, hogy magukat a tranzakciókat megszüntette volna. Ez memória szivárgásokhoz vezetett a hibás alkalmazásokból, ami viselkedésváltást indokolt.
- Az __deprecated_enum makró használata, ha az definiálva van.
- CMake használata során a C nyelv szabványának kiválasztása ezentúl a CMAKE_C_STANDARD figyelembevételével történik.
Forrás: opennet.ru
