Megjelent a libmdbx 0.11.3 (MDBX) könyvtár, amely egy nagy teljesítményű, kompakt beágyazott kulcs-érték adatbázis. A libmdbx kódja az OpenLDAP Public License alatt terjed. Támogatja az összes aktuális operációs rendszert és architektúrát, valamint az orosz Elbrus 2000-et is. A 2021-es év végén a libmdbx a leggyorsabb Ethereum kliensek, az Erigon és az új „Akula” háttértárolójaként működik, amely a rendelkezésre álló információk alapján a legnagyobb teljesítményű Ethereum kliens.
Történelmileg a libmdbx a LMDB adatbázis mélyreható átdolgozása, amely megbízhatóság, funkciókészlet és teljesítmény szempontjából felülmúlja elődjét. A 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. A csomag tartalmaz egy adatbázis-struktúra integritásának ellenőrzésére szolgáló segédeszközt, néhány helyreállítási képességgel.
Technológiailag a libmdbx ACID, szigorú változás-sorozatot és nem blokkoló olvasást kínál, lineárisan skálázható CPU magok szerint. Támogatja az automatikus tömörítést, az adatbázis méretének automatikus kezelését, valamint a tartomány-alapú lekérdezések (range query estimation) volumeneinek becslését. 2016 óta a projektet a Positive Technologies finanszírozza, és 2017 óta a termékeikben használják.
A libmdbx-hez C++ API-t kínálnak, valamint érdeklődő programozók által támogatott kötéseket Rust, Haskell, Python, NodeJS, Ruby, Go és Nim nyelvekhez.
A legújabb újdonságok, fejlesztések és hibajavítások, amelyek a legutóbbi, október 11-i hír óta kerültek hozzáadásra:
- A C++ API készen áll a használatra.
- Jelentősen felgyorsult a GC adatainak frissítése hatalmas tranzakciók rögzítésekor, ami különösen releváns a libmdbx Ethereum ökoszisztémában való használata során.
- Megváltozott az adatbázis formátumának belső aláírása, automatikus frissítéssel, amely teljesen átlátható a felhasználók számára. Ez lehetővé teszi a hamis pozitív adatbázis-hibajelzések elkerülését, amikor elavult könyvtárverziók használatosak az aktuális verziók által rögzített tranzakciók olvasásakor.
- Hozzáadva a következő függvények: mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() és mdbx_env_get_syncbytes(). Támogatás került az MDBX_SET_UPPERBOUND művelethez is.
- Minden figyelmeztetést eltávolítottak a támogatott fordítóprogramok által a C++ 11/14/17/20 módokban történő fordítás során. Biztosítva van a kompatibilitás az elavult fordítóprogramokkal: clang 3.9-től kezdődően, gcc 4.8-től kezdődően, beleértve a sdevtoolset-9 általi fordítást CentOS/RHEL 7-hez.
- Elkerülve a metaoldalak összecsapásának lehetőségét, miután kézi váltással egy adott metaoldalra ugranak az mdbx_chk segédprogram segítségével.
- Javítva lett a váratlan MDBX_PROBLEM hibakód visszaadása, amikor elavult metaoldalak felülírásra kerülnek.
- Javították az MDBX_NOTFOUND visszatérítést, ha a keresési kérés MDBX_GET_BOTH feldolgozása során pontatlan egyezés történt.
- Elhárították a Linux-on fellépő fordítási hibát, amikor hiányoztak a kernelleíró fejlécek.
- Javították a MDBX_SHRINK_ALLOWED belső jelző és a MDBX_ACCEDE opció közötti ütközést.
- Több felesleges assert-ellenőrzés eltávolítva.
- Javítva az mdbx_env_set_option() függvényből váratlanul visszatérő MDBX_RESULT_TRUE.
- Összesen több mint 90 változtatás történt 25 fájlban, ~1300 sor hozzáadva, ~600 sor törölve.
Forrás: opennet.ru
