Elérhető az első kiadás a Dragonfly memóriaalapú adatcache rendszerből, amely támogatja a Memcached és Redis protokollokat, de lehetővé teszi a lekérdezések végrehajtását sokkal magasabb teljesítménnyel és alacsonyabb memóriafogyasztással. A rendszer kulcs/érték formátumú adatokat kezel, és alkalmazható könnyű megoldásként a nagy terhelésű webhelyek teljesítményének javítására, a lassú adatbázis-lekérdezések és a köztes adatok cache-elésére a memóriában. A Dragonfly kódját C/C++ nyelveken írták, és BSL (Business Source License) licenc alatt terjesztik.
A BSL licencet a MySQL társalapítói javasolták az Open Core modell alternatívájaként. A BSL lényege, hogy a bővített funkcionalitás kódja kezdetben elérhető a módosításokra, de egy ideig kizárólag további feltételek betartásával használható ingyenesen, amelyek megkerüléséhez kereskedelmi licencek megvásárlására van szükség. A Dragonfly projekt további licencfeltételei előírják, hogy a kód az Apache 2.0 licencre 2027. június 1-jén kell átfordítani. Eddig a licenc csak a saját szolgáltatások és termékek működtetésére engedélyezi a kód használatát, de tiltaná a fizetős felhőszolgáltatások létrehozását, amelyek a Dragonfly-ra épülnek.
A fejlesztők állítása és a bemutatott tesztek szerint a Dragonfly a leggyorsabb memória tárolórendszer címére pályázik. A Redis-hez képest a Dragonfly esetében szokásos terhelési minták mellett 25-szörös teljesítménynövekedést és háromszoros memóriafogyasztás-csökkenést sikerült elérni. Egy szerver A Dragonfly másodpercenként millió lekérdezést képes feldolgozni, például az Amazon EC2 c6gn.16xlarge környezetében 3,8 millió lekérdezés/másodperces teljesítményt sikerült elérni.

Az 5 GB adatok tárolására végzett tesztek során a Dragonfly 30%-kal kevesebb memóriát igényelt, mint a Redis. A 'bgsave' parancs által készített pillanatképek során a memóriafogyasztás megnő, de a csúcsidőszakokban majdnem háromszor kevesebb marad, mint a Redis esetében, míg a pillanatkép írásának művelete jelentősen gyorsabban zajlik (a Dragonfly esetében a pillanatkép 30 másodperc alatt készült el, míg a Redis-nek 42 másodpercre volt szüksége).

A magas teljesítmény a megosztott erőforrások nélküli, több szálas architektúrának köszönhető, amelynek lényege, hogy minden szálhoz külön, elszigetelt kezelő tartozik a saját adathalmozójával, mutexek és spin-lockok nélkül működve. Az atomarítás érdekében több kulccsal való munkavégzésnél könnyű VLL zárolásokat alkalmazunk. Az információ hatékony tárolására a memóriában a dashtable struktúrát használják, amely a szekcionált hash-táblák változatát valósítja meg.
Az első kiadásban elérhető lehetőségek között szerepel a RESP2 protokoll támogatása és 130 Redis parancs, ami körülbelül megfelel a Redis 2.8 kiadásának funkcióinak. Ezenkívül a Dragonfly támogatja az összes memcached parancsot, kivéve a CAS (check-and-set) parancsot, támogatja az aszinkron műveleteket a pillanatfelvételek létrehozásához, biztosítja a kiszámítható memóriahasználatot, beépített Lua 5.4 értelmezőt kínál, és támogatja az összetett adattípusokat, mint például a hasheket, halmazokat és listákat (ZSET, HSET, LIST, SETS és STRING).
Külön rendelkezésre áll egy gyorsítótárazási mód, amely automatikusan biztosítja a régi adatok újakkal való felváltását, miután a szabad memória kimerült. Lehetséges az adatokhoz életciklus-kapcsolás, amely alatt az adatok érvényesnek tekinthetők. A tároló állapota a háttérben lementhető a lemezre a későbbi újraindításhoz. A rendszer kezelésére HTTP konzol áll rendelkezésre (a 6379 TCP portra csatlakozik) és egy Prometheus-kompatibilis metrikakibocsátó API. A következő verziókban a Redis parancsok támogatásának kiterjesztése és a tároló replikációs lehetőségének bevezetése is tervben van a megbízhatóság és a terheléselosztás biztosítása érdekében.
Forrás: opennet.ru
