Doli i parë i sistemit të caching të të dhënave në memorje Dragonfly është në dispozicion, duke ofruar mbështetje për protokollet Memcached dhe Redis, por duke lejuar ekzekutimin e kërkesave me një performancë shumë më të lartë dhe me konsum më të ulët të memories. Sistemi manipulon të dhënat në formatin çelës/vlerë dhe mund të përdoret si një zgjidhje e lehtë për të acceleruar funksionimin e faqeve të ngarkuara, duke ruajtur kërkesat e ngadalta ndaj DBMS dhe të dhënat ndërmjetëse në memorje. Kodi Dragonfly është shkruar në gjuhët C/C++ dhe shpërndahet nën licencën BSL (Licenca e Burimeve të Biznesit).
Licenca BSL u propozua nga bashkëthemeluesit e MySQL si një alternativë ndaj modelit Open Core. Thelbi i BSL është se kodi i funksionalitetit të avancuar është fillimisht i disponueshëm për modifikime, por për një periudhë të caktuar mund të përdoret falas vetëm në përputhje me kushte shtesë, për të anashkaluar të cilat kërkohet blerja e një licence komerciale. Kushtet e tjera të licencës për projektin Dragonfly parashtrojnë se kodi do të kalojë në licencën Apache 2.0 vetëm më 1 qershor 2027. Deri në atë kohë, licenca lejon përdorimin e kodit vetëm për të siguruar funksionimin e shërbimeve dhe produkteve të veta, por ndalon aplikimin për krijimin e shërbimeve të paguara cloud që veprojnë si shtresa mbi Dragonfly.
Sipas deklaratave të zhvilluesve dhe testeve të demonstruara, Dragonfly pretendon të jetë sistemi më i shpejtë i ruajtjes në memorje. Krahasuar me Redis, në Dragonfly gjatë llojeve standarde të ngarkesave është arrijtur një rritje prej 25 herësh në performancë dhe një ulje prej tre herësh në përdorimin e memories. Një server Dragonfly mund të procesojë miliona kërkesa në sekondë, për shembull, në ambientin Amazon EC2 c6gn.16xlarge është arritur një performancë prej 3.8 milion kërkesash në sekondë.

Në testet me ruajtjen e 5 GB të dhënash, Dragonfly kërkoi 30% më pak memorie se Redis. Gjatë krijimit të snapshot-eve nga ekipi "bgsave", konsumimi i memories rritet, por në momentet e kulmit mbetet gati tri herë më i ulët se në Redis, ndërsa vetë operacioni i shkruarjes së snapshot-it realizohet ndjeshëm më shpejt (në testin, snapshot-i në Dragonfly u regjistrua brenda 30 sekondash, ndërsa në Redis brenda 42 sekondash).

Performanca e lartë arrihet falë arkitekturës shumëfijore pa ndarje burimesh (shared-nothing), që nënkupton se çdo fije lidhet me një handler të veçantë, të izoluar, me pjesën e vet të të dhënave, i cili punon pa mutex dhe spin-lock. Për të garantuar atomizmin gjatë punës me disa çelësa përdoren bllokime të lehta VLL. Për ruajtje efikase të informacionit në memorie përdoret struktura dashtable, e cila zbaton një variant të hash-tables të segmentuara.
Në mundësitë e disponueshme në versionin e parë, përmendet mbështetja për protokollin RESP2 dhe 130 komandat e Redis, që përputhet përafërsisht me funksionalitetin e versionit të Redis 2.8. Për më tepër, Dragonfly mbështet të gjitha komandat e memcached, përveç CAS (check-and-set), ofron mbështetje për operacione asinkrone për krijimin e snapshotëve, siguron konsum të parashikueshëm të memorjes, ofron një interpreter të integruar Lua 5.4 dhe mbështet lloje të komplikuara të të dhënave, siç janë hesh, grupet dhe listat (ZSET, HSET, LIST, SETS dhe STRING).
Disponohet veçmas një mod i cache-it, ku sigurohet automatikisht zëvendësimi i të dhënave të vjetra me të rejat pasi të shpenzohet memorja e lirë. E mundur lidhja me të dhënat për periudhën e jetës, gjatë së cilës të dhënat konsiderohen të vlefshme. Gjendja e depozitës mund të rikthehet në disk në mënyrë në prapavijë për rikuperim pas rishikimit. Për menaxhimin e sistemit ofrohet një konsolë HTTP (e lidhur me portin TCP 6379) dhe një API për ndarjen e metricave, e cila është e pajtueshme me Prometheus. Në versionet e ardhshme planifikohet zgjerimi i mbështetjes për komandat e Redis dhe implementimi i mundësisë për replikimin e depozitës për të siguruar qëndrueshmërinë dhe balancimin e ngarkesës.
Burimi: opennet.ru
