Ilmus andmete vahemĂ€lustamise ja salvestamise sĂŒsteem Dragonfly, mis manipuleerib andmetega vĂ”tme/vÀÀrtuse formaadis ja mida saab kasutada kerge lahendusena kĂ”rge koormusega veebisaitide toimimise kiirendamiseks, vahemĂ€lustades aeglased pĂ€ringud andmebaasile ja vahepealsed andmed mĂ€lus. Dragonfly toetab protokolle Memcached ja Redis, mis vĂ”imaldab kasutada juba olemasolevaid kliendiraamatukogusid ja koode muundada Dragonfly-ks, ilma et peaksite olemasolevaid projekte ĂŒmber tegema, mis kasutavad Memcached ja Redis.
Dragonfly suutis Amazon EC2 c6gn.16xlarge keskkonnas harilikul koormusel saavutada 25-kordse jÔudluse suurenemise (3,8 miljonit pÀringut sekundis) vÔrreldes Redis'iga. AWS keskkonnas c6gn.16xlarge tÀitis Dragonfly kirjutamise osas 4,7 korda rohkem pÀringuid sekundis (3,8 miljonit versus 806 tuhat) ja lugemise osas 1,77 korda rohkem pÀringuid sekundis (3,7 miljonit versus 2,1 miljonit) vÔrreldes Memcached'iga.

5 GB andmete salvestamise testides nÔudis Dragonfly 30% vÀhem mÀlu kui Redis. Snapshot-ide loomise ajal kÀsuga 'bgsave' suureneb mÀlu tarbimine, kuid haripunktides jÀi see peaaegu kolm korda madalamaks kui Redis'is, ja kogu snapshoti kirjutamisoperatsioon toimus mÀrgatavalt kiiremini (Dragonfly snapshoot kirjutati 30 sekundiga, Redis'i oma 42 sekundiga).

Korke jÔudlus saavutatakse tÀnu multitehnoloogilisele arhitektuurile ilma ressursside jagamiseta (shared-nothing), mis eeldab, et iga teema seondub eraldi eraldi töötleja juurde koos oma andmepakiga, töötades ilma lukustuste ja spin-lockideta. Aatomilisuse tagamiseks mitme vÔtmega töötamisel kasutatakse kergeid VLL lukustusi. Teabe tÔhusaks salvestamiseks mÀlus kasutatakse struktuuri dashtable, mis rakendab sektsioonitud rÀsimistabeli varianti.
MÔned Dragonfly vÔimalused:
- VahemĂ€lureĆŸiim, kus vana teave asendatakse automaatselt uuega, kui mĂ€lu on tĂ€is.
- Andmete eluea sidumise tugi, mille jooksul andmeid peetakse kehtivateks.
- Hoiustamise oleku taustsĂŒsteemi taastamise tugi pĂ€rast taaskĂ€ivitamist.
- HTTP-konsoli olemasolu (seotuna TCP-pordiga 6379) sĂŒsteemi haldamiseks ja API mÔÔdikute edastamiseks, mis on ĂŒhilduv Prometheusega.
- Toetatakse 185 Redis'i kÀsku, mis vastab umbes Redis 5 vÀljaande funktsionaalsusele.
- Toetatakse kÔiki Memcached'i kÀsku, vÀlja arvatud CAS (check-and-set).
- AsĂŒnkroonsete toimingute tugi hetkepiltide loomiseks.
- Ettearvatav mÀlutarbimine.
- Sisseehitatud Lua 5.4 tÔlk.
- Toetatakse keerulisi andmetĂŒĂŒpe, nagu rĂ€sid, kogud, loendid (ZSET, HSET, LIST, SETS ja STRING) ning JSON-formaadis andmeid.
- Toetatakse salvestusreplikatsiooni, et tagada tÔrkeotsing ja koormuse tasakaalustamine.
Dragonfly kood on kirjutatud keeltes C/C++ ja levitatakse BSL (Business Source License) litsentsi alusel. BSL litsentsi pakkusid MySQL'i kaasasutajad alternatiivina Open Core mudelile. BSL-i olemus on see, et laiendatud funktsionaalsuse kood on algselt muudatuste tegemiseks saadaval, kuid mingil ajal saab seda tasuta kasutada ainult tĂ€iendavate tingimuste tĂ€itmise korral, mille vĂ€ltimiseks on vajalik osta kommertsialitsents. Dragonfly projekti tĂ€iendavad litsentsitingimused ette nĂ€evad koodi ĂŒlemineku Apache 2.0 litsentsile 15. mĂ€rtsil 2028. Enne seda aega lubab litsents koodi kasutada ainult oma teenuste ja toodete töö tagamiseks, kuid keelab selle rakendamise tasuliste pilveteenuste loomiseks, mis on Dragonfly peal.
Dragonfly 1.0 versioon on mĂ€rkimisvÀÀrne, kuna see toetab andmete replikatsiooni peamiseks. serverilt teiseks. Dragonfly't saab konfigureerida kasutada teise salvestusena, mis vĂ”tab andmeid peamiselt nii Dragonfly kui Redis serverilt. Replikatsiooni juhtimise API on ĂŒhilduv Redis'iga ja pĂ”hineb kĂ€skudel ROLE ja REPLICAOF (SLAVEOF).
Allikas: opennet.ru
