Könyvtár libmdbx lényegesen átdolgozott utódja az LMDB-nek — rendkívül magas teljesítményű, kompakt beágyazott kulcs-érték adatbázisnak.
A jelenlegi v0.5-ös verzió technikai kiadás, amely a finomhangolások befejezését és az állami végső tesztelés és stabilizálás fázisába való átmenetet jelzi, majd az első teljes kiadásának kialakulásához vezet.
LMDB elegendően ismert tranzakcionális beágyazott DBMS kulcs-érték alapon B+ fának nélkül előzetes naplózás, amely lehetővé teszi egy csoport párhuzamos folyamatainak versenyszerű és rendkívül hatékony munkáját helyi megosztott (nem hálózati) adatbázisokkal. Ezzel szemben az MDBX gyorsabb és megbízhatóbb az LMDB-nél, miközben a libmdbx megőrzi elődének minden kulcsfontosságú lehetőségét, mint például ACID és blokkolás nélküli olvasás lineáris skálázhatósággal a CPU magok között, és néhány új funkciót is hozzáad.
A libmdbx és LMDB közötti különbségek és fejlesztések leírása külön cikket érdemel (tervbe van véve publikáció a „Habr” és a „Medium” platformokon). Itt érdemes említeni a legfontosabb és legfigyelemreméltóbbakat:
- Elvileg több figyelmet fordítanak a kód minőségére, tesztelésre és automatikus ellenőrzésekre.
- Jelentősen nagyobb kontroll a munka során, az paraméterek ellenőrzésétől kezdve a belső adatbázis struktúrák auditálásáig.
- Automatikus tömörítés és az adatbázis méretének automatikus kezelése.
- Egységes adatbázis formátum 32 bites és 64 bites build-ekhez.
- A tartományok (range query) alapján a lekérdezések mennyiségének becslése.
- A felhasználó által választható adatbázis méret kétszeres kulcs támogatása.
A kiadott libmdbx kiadás-jelölt annak a döntésnek az eredménye (lásd később), amely az MDBX és MithrilDB projektek szétválasztásáról szól 2019 augusztusában. Ennek során a libmdbx-ben eltávolításra került (racionalizált) a technikai adósságok maximuma és a könyvtár stabilizálása. A megcélzott irányvonalban a tények szerint 2-3-szor többet tettek, mint amennyit kezdetben értékeltek és terveztek:
- Mac OS és a „második vonal” platformok, mint a FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD támogatása valósult meg. Az AIX és HP-UX támogatása szükség esetén hozzáadható.
- A kód karbantartását az Undefined Behavior Sanitizer és az Address Sanitizer segítségével hajtották végre, a -Wpedantic opcióval végzett fordítás során minden figyelmeztetést megszüntettek, a Coverity Static Analyzer és egyéb figyelmeztetéseket is.
- Frissítés API leírása.
- A forráskód amalgámációja a beágyazás megkönnyítése érdekében.
- CMake támogatás.
- Beágyazott tranzakciók támogatása.
- A bootid használata az operációs rendszer újraindításának (az adatbázis piszkos leállítása) észlelésére.
- Frissített/öreg oldalakat felölelő számlálás és kibővített információ a tranzakciókról.
- MDBX_ACCEDE opció az már megnyitott adatbázishoz való csatlakozáshoz kompatibilis módban.
- Használat OFD zárolások azok elérhetősége esetén.
- Forró biztonsági mentés pipe-on keresztül.
- Specializált optimalizált belső rendezési algoritmus (2-3x gyorsabb a qsort()-nál és akár 30%-kal gyorsabb a std::sort()-nál).
- Növelt kulcshossz maximum.
- Automatikus read ahead vezérlés (a DB fájlok memóriában való gyorsítótárazási stratégiája).
- Aggresszívebb és gyorsabb automatikus tömörítés.
- Optimálisabb B+ fa lapok egyesítési stratégiája.
- Nem helyi fájlrendszerek (NFS, Samba stb.) ellenőrzése, hogy megakadályozza az adatbázis sérülését helytelen használat esetén.
- Kibővített tesztkészlet.
A "következő" libmdbx verzió fejlesztése egy külön projekt keretein belül folytatódik MithrilDB, míg a "jelenlegi" MDBX verzió fejlesztési iránya a képességek leállítására és stabilizálására összpontosít. E döntés három okból született:
- Teljes inkompatibilitás: a MithrilDB összes tervezett képességének megvalósításához külön (nem kompatibilis) DB fájlformátumra és más (nem kompatibilis) API-ra van szükség.
- Új forráskód: a MithrilDB forráskódja biztosítja a LMDB függetlenséget, és magát a projektet más (jóváhagyott) licencek alatt tervezik közzétenni. OSI licenc Apache 2.0, nem pedig OpenLDAP Foundation).
- A szétválasztás lehetővé teszi a potenciális zűrzavar elkerülését, a nagyobb világosságot és a projektek fejlődési útjának függetlenségét.
A MithrilDB, akárcsak az MDBX, szintén a B+ fára épül, miközben rendkívül magas teljesítményt biztosít, megszüntetve az MDBX és LMDB számos alapvető hátrányát. Különösen megszűnik a "hosszú olvasások" problémája, amely az adatbázis "megnövekedését" okozza, mivel a szemét újrafeldolgozása hosszú olvasó tranzakciók miatt blokkolva van. A MithrilDB új lehetőségei közé tartozik:
- támogatás többféle tárolón történő adatbázis elhelyezésére: HDD, SSD és nem volatilis memória.
- optimális stratégiák a "értékes" és "kevésbé értékes", a "forró", "meleg" és "hideg" adatok számára.
- Merkle fa használata az adatbázis integritásának ellenőrzésére.
- opcionális WAL használata és jelentősen magasabb teljesítmény az intenzív írási forgatókönyvekben és az adatintegritás garanciáival.
- lusta utólagos adatmentés a lemezeken.
Forrás: linux.org.ru
