Dragonfly ပရောဂျက်သည် Redis နှင့် Memcached အတွက် ပိုမိုမြန်ဆန်သော အစားထိုးမှုကို ဖန်တီးနေသည်။

Memcached နှင့် Redis ပရိုတိုကောများအတွက် ပံ့ပိုးမှုပေးသည့် Dragonfly in-memory caching system ၏ ပထမဆုံးထွက်ရှိမှုကို ရရှိနိုင်သော်လည်း queries များကို ပိုမိုမြင့်မားသောစွမ်းဆောင်ရည်နှင့် memory သုံးစွဲမှုနည်းသော queries များဖြင့် လုပ်ဆောင်နိုင်စေပါသည်။ စနစ်သည် ဒေတာကို သော့/တန်ဖိုး ဖော်မတ်ဖြင့် စီမံဆောင်ရွက်ပေးပြီး ဝန်အားများသောဆိုက်များ၏ အလုပ်များကို အရှိန်မြှင့်ရန်၊ နှေးကွေးသော DBMS နှင့် RAM အတွင်းရှိ အလယ်အလတ်ဒေတာများကို သိမ်းဆည်းရန်အတွက် ပေါ့ပါးသောဖြေရှင်းချက်အဖြစ် အသုံးပြုနိုင်သည်။ Dragonfly ကုဒ်ကို C/C++ ဖြင့် ရေးသားထားပြီး BSL (Business Source License) အောက်တွင် ဖြန့်ဝေထားသည်။

BSL လိုင်စင်ကို Open Core မော်ဒယ်အတွက် အစားထိုးအဖြစ် MySQL ၏ ပူးတွဲတည်ထောင်သူများမှ အဆိုပြုခဲ့သည်။ BSL ၏အနှစ်သာရမှာ အဆင့်မြင့်လုပ်ဆောင်နိုင်စွမ်း၏ကုဒ်ကို ပြုပြင်မွမ်းမံရန်အတွက် ကနဦးရနိုင်သော်လည်း၊ ရှောင်တိမ်းရန် ကူးသန်းရောင်းဝယ်ရေးလိုင်စင်ကို ဝယ်ယူရန်လိုအပ်သည့် ထပ်လောင်းအခြေအနေများပြည့်မီမှသာ အချိန်အတော်ကြာ အခမဲ့အသုံးပြုနိုင်ပါသည်။ Dragonfly ပရောဂျက်၏ နောက်ထပ်လိုင်စင်စည်းကမ်းချက်များသည် ကုဒ်ကို Apache 2.0 လိုင်စင်သို့ 1 ခုနှစ် ဇွန်လ 2027 ရက်နေ့တွင်သာ လွှဲပြောင်းရန် လိုအပ်သည်။ ယခုအချိန်အထိ၊ လိုင်စင်သည် ၎င်း၏ဝန်ဆောင်မှုများနှင့် ထုတ်ကုန်များ၏ လည်ပတ်မှုကို သေချာစေရန်အတွက်သာ ကုဒ်ကို အသုံးပြုခွင့်ပြုသော်လည်း Dragonfly ၏ အပိုပရိုဂရမ်အဖြစ် လုပ်ဆောင်သည့် အခပေး cloud ဝန်ဆောင်မှုများ ဖန်တီးခြင်းအတွက် အသုံးပြုခြင်းကို တားမြစ်ထားသည်။

developer များနှင့် သရုပ်ပြစမ်းသပ်မှုများအရ Dragonfly သည် အမြန်ဆုံး memory storage system ဖြစ်သည်ဟု ဆိုထားသည်။ Redis နှင့် နှိုင်းယှဉ်ပါက Dragonfly သည် စွမ်းဆောင်ရည် 25 ဆ တိုးမြင့်လာပြီး ပုံမှန်အလုပ်တာဝန်များအတွက် မှတ်ဉာဏ်သုံးစွဲမှု သုံးဆ လျှော့ချနိုင်ခဲ့သည်။ Dragonfly ဆာဗာတစ်ခုသည် တစ်စက္ကန့်လျှင် တောင်းဆိုချက်သန်းပေါင်းများစွာကို လုပ်ဆောင်နိုင်သည်၊ ဥပမာအားဖြင့်၊ Amazon EC2 c6gn.16xlarge ပတ်ဝန်းကျင်တွင် တစ်စက္ကန့်လျှင် တောင်းဆိုချက်ပေါင်း 3.8 သန်းကို စွမ်းဆောင်နိုင်ခဲ့သည်။

Dragonfly ပရောဂျက်သည် Redis နှင့် Memcached အတွက် ပိုမိုမြန်ဆန်သော အစားထိုးမှုကို ဖန်တီးနေသည်။

ဒေတာ 5 GB သိမ်းဆည်းရန်အတွက် စမ်းသပ်မှုများတွင် Dragonfly သည် Redis ထက် 30% ပိုနည်းသော memory လိုအပ်သည်။ “bgsave” အမိန့်ဖြင့် လျှပ်တစ်ပြက်ရိုက်ချက်များကို ဖန်တီးသောအခါ၊ မှတ်ဉာဏ်သုံးစွဲမှု တိုးလာသော်လည်း အထွတ်အထိပ်အခိုက်အတန့်တွင် ၎င်းသည် Redis ထက် သုံးဆနီးပါးနည်းနေသေးပြီး လျှပ်တစ်ပြက်မှတ်တမ်းတင်ခြင်းလုပ်ဆောင်ချက်ကိုယ်တိုင်က ပိုမိုမြန်ဆန်သည် (စမ်းသပ်မှုတွင်၊ Dragonfly တွင် လျှပ်တစ်ပြက်တစ်ပုံကို 30 တွင် ရေးထားသည်။ စက္ကန့်၊ Redis - 42 စက္ကန့်အတွင်း။

Dragonfly ပရောဂျက်သည် Redis နှင့် Memcached အတွက် ပိုမိုမြန်ဆန်သော အစားထိုးမှုကို ဖန်တီးနေသည်။

အရင်းအမြစ်များကို မျှဝေခြင်းမရှိဘဲ (မျှမမျှဝေဘဲ) အစုံလိုက်တည်ဆောက်မှုဖြင့် မြင့်မားသောစွမ်းဆောင်ရည်ကို ရရှိသည်၊ ဆိုလိုသည်မှာ thread တစ်ခုစီအား ၎င်း၏ကိုယ်ပိုင်အပိုင်းနှင့်အတူ သီးခြားစီစဥ်သည့်ဒေတာခွဲဝေပေးသည့် ပရိုဆက်ဆာတစ်ခုအား ပေးအပ်ထားပြီး၊ mutexes နှင့် spin locks များမပါဘဲ အလုပ်လုပ်ပါသည်။ သော့များစွာဖြင့် အလုပ်လုပ်သောအခါ အနုမြူကို သေချာစေရန်၊ ပေါ့ပါးသော VLL သော့ခလောက်များကို အသုံးပြုသည်။ အချက်အလက်များကို မှတ်ဉာဏ်တွင် ထိရောက်စွာသိမ်းဆည်းနိုင်ရန်၊ အပိုင်းပိုင်းခွဲထားသော hash table အမျိုးအစားကို အကောင်အထည်ဖေါ်သည့် dashtable ဖွဲ့စည်းပုံကို အသုံးပြုပါသည်။

ပထမထုတ်ဝေမှုတွင်ရရှိနိုင်သည့်အင်္ဂါရပ်များထဲတွင်၊ RESP2 ပရိုတိုကောနှင့် 130 Redis အမိန့်ပေးမှုများကို ပံ့ပိုးပေးသည်ကို မှတ်သားထားပြီး၊ ခန့်မှန်းခြေအားဖြင့် Redis 2.8 ထုတ်ဝေမှု၏လုပ်ဆောင်နိုင်စွမ်းနှင့်ကိုက်ညီသည်။ ထို့အပြင် Dragonfly သည် CAS (check-and-set) မှလွဲ၍ memcached commands အားလုံးကို ပံ့ပိုးပေးသည်၊ လျှပ်တစ်ပြက်ရိုက်ချက်များဖန်တီးရန်၊ ကြိုတင်ခန့်မှန်းနိုင်သော မှတ်ဉာဏ်သုံးစွဲမှုကို ပံ့ပိုးပေးကာ၊ Built-in Lua 5.4 စကားပြန်ကို ပံ့ပိုးပေးကာ၊ hashes ကဲ့သို့သော ရှုပ်ထွေးသောဒေတာအမျိုးအစားများကို ပံ့ပိုးပေးပါသည်။ သတ်မှတ်ချက်များ၊ စာရင်းများ (ZSET၊ HSET၊ LIST၊ SETS နှင့် STRING)။

အခမဲ့မှတ်ဉာဏ် ကုန်သွားပြီးနောက် ဒေတာအဟောင်းများကို ဒေတာအသစ်ဖြင့် အလိုအလျောက် အစားထိုးသည့် ကက်ရှ်မုဒ်ကို သီးခြားစီရရှိနိုင်သည်။ ဒေတာနှင့် သက်ဆိုင်သည်ဟု ယူဆသည့်အတောအတွင်း ဒေတာနှင့် တစ်သက်တာတွဲချိတ်နိုင်သည်။ ပြန်လည်စတင်ပြီးနောက် နောက်ပိုင်းတွင် ပြန်လည်ရယူရန်အတွက် သိုလှောင်မှုအခြေအနေကို နောက်ခံရှိဒစ်ထဲသို့ ကူးချနိုင်သည်။ စနစ်အား စီမံခန့်ခွဲရန်၊ HTTP ကွန်ဆိုးလ်တစ်ခု (TCP ပို့တ် 6379 သို့ ချိတ်ဆက်ထားသည်) နှင့် Prometheus နှင့် တွဲဖက်အသုံးပြုနိုင်သော မက်ထရစ်များ ပြန်ပေးရန်အတွက် API တစ်ခု ပေးထားသည်။ အနာဂတ်ဗားရှင်းများတွင်၊ ကျွန်ုပ်တို့သည် Redis အမိန့်များကို ပံ့ပိုးမှုချဲ့ထွင်ရန် စီစဉ်နေပြီး အမှားအယွင်းခံနိုင်ရည်ရှိမှုနှင့် load ချိန်ခွင်လျှာကို ပံ့ပိုးပေးရန်အတွက် သိုလှောင်မှုပုံတူပွားနိုင်သည့်စွမ်းရည်ကို အကောင်အထည်ဖော်ရန် စီစဉ်ထားပါသည်။

source: opennet.ru

မှတ်ချက် Add