A második jelölt a libmdbx v1.0 kiadásra öt év fejlesztés után.

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster