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

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

Hozzászólás