könyvtár libmdbx az LMDB – egy rendkívül nagy teljesítményű, kompakt beágyazott kulcsérték adatbázis – jelentősen újratervezett leszármazottja.
A jelenlegi v0.5-ös verzió egy technikai kiadás, amely az esetleges fejlesztések befejezését és a nyilvános végső tesztelés és stabilizálás fázisába való átmenetet jelzi, a könyvtár első teljes kiadásának ezt követő megalakulásával.
LMDB egy meglehetősen jól ismert tranzakciós beágyazott kulcsérték DBMS, amelyen alapul fa B+ nélkül proaktív naplózás, amely lehetővé teszi a többszálú folyamatok rajának versenyképes és rendkívül hatékony működését egy helyileg megosztott (nem hálózati) adatbázissal. Az MDBX viszont gyorsabb és megbízhatóbb, mint az LMDB, míg a libmdbx megőrzi elődjének összes kulcsfontosságú funkcióját, mint pl. SAV és nem blokkoló olvasást lineáris skálázással a processzormagok között, valamint számos újat is hozzáad.
A libmdbx LMDB-hez viszonyított különbségeinek és fejlesztéseinek leírása külön cikket érdemel (a tervek szerint a Habré és a Medium oldalán fog megjelenni). Itt érdemes megemlíteni a legfontosabbakat és a legfontosabbakat:
- Alapvetően nagyobb figyelmet fordítanak a kódminőségre, a tesztelésre és az automatikus ellenőrzésekre.
- Lényegesen nagyobb kontroll az üzemeltetés során, a paraméterek ellenőrzésétől az adatbázis-struktúrák belső auditjáig.
- Automatikus tömörítés és automatikus adatbázisméret-kezelés.
- Egyetlen adatbázis-formátum 32 bites és 64 bites összeállításokhoz.
- A minta méretének becslése tartományok szerint (tartomány lekérdezés becslése).
- Támogatja a palacsintánál kétszer nagyobb kulcsokat és a felhasználó által választható adatbázis-oldalméretet.
A libmdbx kiadásjelölt annak a döntésnek az eredménye (lásd alább), hogy 2019 augusztusában szétválasztják az MDBX és a MithrilDB projekteket. Ugyanakkor a libmdbx úgy döntött, hogy megszünteti a (racionális) maximális technikai adósságot és stabilizálja a könyvtárat. Valójában 2-3-szor többet tettek meg a kijelölt irányba, mint amennyit eredetileg becsültek és terveztek:
- A Mac OS és a másodlagos platformok támogatása megvalósult: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Igény szerint AIX és HP-UX támogatás is hozzáadható.
- A kódot az Undefined Behaviour Sanitizer és az Address Sanitizer segítségével fertőtlenítettük, a -Wpedantic használatával történő építéskor minden figyelmeztetést, a Coverity Static Analyzer figyelmeztetéseket stb. megszüntettük.
- Frissítés API leírások.
- A forráskód összevonása a beágyazás megkönnyítése érdekében.
- CMake támogatás.
- Beágyazott tranzakciók támogatása.
- Bootid használata annak megállapítására, hogy az operációs rendszer újraindult-e (piszkos adatbázis-leállás).
- A frissített/régi oldalak és a kibővített tranzakciós információk végpontok közötti számlálása.
- MDBX_ACCEDE opció egy már nyitott adatbázishoz való csatlakozáshoz kompatibilis módban.
- Használat OFD blokkolás mikor elérhető.
- Forró tartalék a csőben.
- Speciális optimalizált belső rendezési algoritmus (akár 2-3-szor gyorsabb, mint a qsort() és akár 30%-kal gyorsabb, mint az std::sort()).
- A kulcs maximális hossza megnőtt.
- Az előreolvasás automatikus vezérlése (adatbázisfájl gyorsítótárazási stratégia a memóriában).
- Agresszívabb és gyorsabb automatikus tömörítés.
- Optimálisabb stratégia a B+ faoldalak egyesítésére.
- Nem helyi fájlrendszerek (NFS, Samba stb.) vezérlése az adatbázis károsodásának megelőzése érdekében helytelen használat esetén.
- A tesztek sora bővült.
A libmdbx "következő" verziójának fejlesztése külön projektként folytatódik MithrilDB, míg az MDBX „aktuális” verziójának fejlesztési vektora a szolgáltatáskészlet lefagyasztását és stabilizálását célozza. Ez a döntés három okból született:
- Teljesen inkompatibilis: A MithrilDB más (nem kompatibilis) adatbázis-fájlformátumot és más (nem kompatibilis) API-t igényel az összes tervezett szolgáltatás megvalósításához.
- Új forráskód: A MithrilDB forráskódot az LMDB-től függetlenítették, magát a projektet pedig egy másik licenc alatt tervezik közzétenni (jóváhagyta: OSI engedély Apache 2.0és nem OpenLDAP Foundation).
- A szétválasztás elkerüli az esetleges zűrzavart, nagyobb biztonságot nyújt, és biztosítja, hogy a projektek önállóan haladjanak előre.
A MithrilDB az MDBX-hez hasonlóan szintén ezen alapul fa B+ és rendkívül nagy teljesítményű lesz, miközben kiküszöböli az MDBX és az LMDB számos alapvető hátrányát. Különösen a „hosszú olvasás” problémája, amely az adatbázis „duzzadásában” nyilvánul meg, amiatt, hogy a szemétfeldolgozást a hosszú leolvasási tranzakciók blokkolják. A MithrilDB új szolgáltatásai a következők:
- támogatja az adatbázis elhelyezését több heterogén adathordozón: HDD, SSD és nem felejtő memória.
- optimális stratégiák „értékes” és „alacsony értékű”, „meleg”, „meleg” és „hideg” adatokhoz.
- Merkle fa használata az adatbázis integritásának figyelésére.
- opcionális WAL használata és jelentősen nagyobb teljesítmény írásintenzív forgatókönyvekben és adatintegritási garanciák.
- Az adatok lusta felzárkóztatása lemezeken.
Forrás: linux.org.ru