Pergala cachkirin û hilanînê ya di bîra Dragonfly de hate berdan, ku daneyan di formata sereke/nirxê de manîpule dike û dikare wekî çareseriyek sivik ji bo lezkirina xebata malperên pir barkirî, cachkirina pirsên hêdî li DBMS û daneyên navîn di RAM-ê de were bikar anîn. Dragonfly protokolên Memcached û Redis piştgirî dike, ku dihêle hûn pirtûkxaneyên xerîdar ên heyî bikar bînin û projeyên bi karanîna Memcached û Redis bo Dragonfly veguhezînin bêyî ku kodê ji nû ve bixebitin.
Li gorî Redis, Dragonfly ji bo barkirinên xebatê yên gelemperî di hawîrdora Amazon EC2 c6gn.16xmezin de 25 qat zêdebûnek performansê (3.8 mîlyon daxwaz di çirkekê de) bi dest xist. Li gorî Memcached-ê di hawîrdorek AWS c6gn.16xlarge de, Dragonfly karîbû her çirkekê 4.7 qat zêdetir daxwazên nivîsandinê (3.8 mîlyon li hember 806 hezar) û 1.77 carî bêtir daxwazên xwendinê di çirkeyê de (3.7 mîlyon li hember 2.1 mîlyon) pêk bîne.

Di ceribandinên ji bo hilanîna 5 GB daneyan de, Dragonfly ji Redis% 30 kêmtir bîranîn hewce dike. Dema ku bi fermana "bgsave" wêneyan diafirîne, mezaxtina bîranînê zêde dibe, lê di demên pezê de ew hema hema sê carî ji Redis kêmtir dimîne, û operasyona tomarkirina wêneyê bixwe pir zûtir e (di ceribandinê de, wêneyek di Dragonfly de di 30 de hate nivîsandin çirke, dema ku Redis - di 42 çirkeyan de).

Performansa bilind bi saya mîmariya pir-mijara bêyî parvekirina çavkaniyan (hevbeş-tiştek) tê bidestxistin, ku tê vê wateyê ku her mijarek pêvajoyek cihêreng bi beşa xwe ya daneyê re tê veqetandin, ku bêyî mutexes û qeflên spin dixebite. Ji bo misogerkirina atomê dema ku bi pir bişkokan re dixebitin, kilîdên sivik ên VLL têne bikar anîn. Ji bo hilanîna agahdarî di bîranînê de bi bandor, avahiyek dashtable tête bikar anîn, ku celebek tabloya hash a dabeşkirî bicîh tîne.
Hin taybetmendiyên Dragonfly:
- Moda caching, ku piştî ku bîra belaş xilas dibe bixweber daneyên kevn bi daneyên nû veguherîne.
- Piştgiriya ji bo girêdana daneyan bi jiyanek ku tê de dane têkildar têne hesibandin.
- Piştgiriya şûştina rewşa hilanînê ya li dîskê di paşperdeyê de ji bo paşvebirina paşîn piştî ji nû ve destpêkirinê.
- Hebûna konsolek HTTP (bi porta TCP 6379 ve girêdide) ji bo rêveberiya pergalê û API-yek ji bo vegerandina metrîkan, bi Prometheus re hevaheng e.
- Piştgiriya 185 emrên Redis, ku bi qasî fonksiyona serbestberdana Redis 5 wekhev e.
- Hemî emrên Memcached ji bilî CAS (kontrol-û-set) piştgirî dike.
- Piştgiriya ji bo operasyonên asynchronous ji bo afirandina snapshots.
- Vexwarina bîranîna pêşbînîkirî.
- Wergêr Lua 5.4-ya çêkirî.
- Cûreyên daneya tevlihev ên wekî hashes, set, navnîşan (ZSET, HSET, LIST, SETS û STRING) û daneyên JSON piştgirî dike.
- Piştgiriya hilanînê ji bo tolerasyona xeletiyê û hevsengkirina barkirinê piştgirî dike.
Koda Dragonfly bi C/C++ hatiye nivîsandin û di bin BSL (Lîsansa Çavkaniya Karsaziyê) de tê belavkirin. Lîsansa BSL ji hêla hev-damezrînerên MySQL ve wekî alternatîfek modela Open Core hate pêşniyar kirin. Esasê BSL ev e ku koda fonksiyona pêşkeftî di destpêkê de ji bo guheztinê heye, lê ji bo demekê dikare belaş were bikar anîn tenê heke şert û mercên zêde werin bicîh kirin, ku ji bo dorpêçkirina kirîna destûrnameyek bazirganî hewce dike. Mercên destûrnameyê yên ji bo projeya Dragonfly hewce dike ku kod di 2.0ê Adarê, 15-an de ji lîsansa Apache 2028 re were veguheztin. Heya vê demê, lîsans destûrê dide karanîna kodê tenê ji bo misogerkirina xebata karûbar û hilberên xwe, lê karanîna ji bo afirandina karûbarên cloudê yên dravî yên ku wekî pêvekek Dragonfly tevdigerin qedexe dike.
Dragonfly 1.0 bi pêkanîna piştgiriya ji bo dubarekirina daneyan ji malpera sereke tê zanîn. server bo serverek duyemîn. Dragonfly dikare were mîheng kirin ku wekî depoyek duyemîn tevbigere, daneyan ji serverek sereke ya li ser Dragonfly an jî Redis werbigire. API-ya rêveberiya dubarekirinê bi Redis re hevaheng e û li ser fermanên ROLE û REPLICAOF (SLAVEOF) hatiye damezrandin.
Source: opennet.ru
