SQLite ကိုအခြေခံ၍ ဖြန့်ဝေထားသော၊ အမှားအယွင်းခံနိုင်သော DBMS ၏ rqlite 7.0 ကိုထုတ်ဝေခြင်း

ဖြန့်ဝေထားသော DBMS rqlite 7.0 သည် သိုလှောင်မှုအင်ဂျင်အဖြစ် SQLite ကိုအသုံးပြုကာ တစ်ခုနှင့်တစ်ခု ထပ်တူပြုထားသည့် သိုလှောင်မှုမှ အစုအဝေးတစ်ခု၏အလုပ်များကို စုစည်းခွင့်ပြုသည်။ rqlite ၏အင်္ဂါရပ်များထဲမှတစ်ခုမှာ တပ်ဆင်ခြင်း၊ အသုံးချခြင်းနှင့် ပြုပြင်ထိန်းသိမ်းခြင်းမှာ etcd နှင့် Consul တို့နှင့် ခပ်ဆင်ဆင်ဆင်တူသော်လည်း သော့/တန်ဖိုးဖော်မတ်အစား ဆက်စပ်ဒေတာမော်ဒယ်ကို အသုံးပြု၍ ဖြန့်ဝေထားသောအမှား-ခံနိုင်ရည်ရှိသောသိုလှောင်မှုကို ပြုပြင်ထိန်းသိမ်းခြင်းဖြစ်ပါသည်။ ပရောဂျက်ကုဒ်ကို Go ဖြင့်ရေးသားထားပြီး MIT လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

node အားလုံးကို တစ်ပြိုင်တည်းလုပ်ဆောင်သည့်အခြေအနေတွင်ထားရှိရန် Raft consensus algorithm ကိုအသုံးပြုသည်။ Rqlite သည် မူလ SQLite စာကြည့်တိုက်နှင့် go-sqlite3 ဒရိုက်ဘာကို အသုံးပြုသည်၊ ၎င်းအပေါ်တွင် client တောင်းဆိုမှုများကို လုပ်ဆောင်သည့် အလွှာတစ်ခုကို စတင်သည်၊ အခြား node များသို့ ကူးယူဖော်ပြခြင်းနှင့် ဦးဆောင် node ရွေးချယ်မှုအပေါ် သဘောတူညီမှု၏ အောင်မြင်မှုကို စောင့်ကြည့်စစ်ဆေးသည်။

ဒေတာဘေ့စ်သို့ အပြောင်းအလဲများကို ခေါင်းဆောင်အဖြစ် ရွေးချယ်ထားသော node မှသာလျှင် ပြုလုပ်နိုင်သော်လည်း၊ အစုအဝေးရှိ အခြား node များသို့ စာရေးခြင်းဆိုင်ရာ ချိတ်ဆက်မှုများကိုလည်း ပေးပို့နိုင်သည်၊ ၎င်းသည် တောင်းဆိုချက်ကို ထပ်ခါတလဲလဲ လုပ်ဆောင်ရန်အတွက် ခေါင်းဆောင်၏လိပ်စာကို ပြန်ပေးလိမ့်မည် (နောက်ထပ်ဗားရှင်းတွင် ၎င်းတို့၊ ခေါင်းဆောင်ထံ တောင်းဆိုချက်များကို အလိုအလျောက် ထပ်ဆင့်ပို့မည်ဟု ကတိပြုပါသည်။) အဓိက အလေးပေးမှုမှာ အမှားအယွင်းခံနိုင်ရည်ရှိမှုအပေါ်တွင်သာ ဖြစ်သောကြောင့် DBMS စကေးများသည် ဖတ်ရှုခြင်းလုပ်ငန်းဆောင်တာများဖြင့်သာ တိုင်းတာကြပြီး စာရေးခြင်းလုပ်ဆောင်မှုများသည် ပိတ်ဆို့မှုများပင်ဖြစ်သည်။ node တစ်ခုတည်းမှ rqlite အစုအဝေးတစ်ခုကို run နိုင်ပြီး၊ ဤဖြေရှင်းချက်ကို အမှားခံနိုင်ရည်မပြဘဲ HTTP မှတစ်ဆင့် SQLite သို့ ဝင်ရောက်ခွင့်ပေးရန် ဤဖြေရှင်းချက်ကို အသုံးပြုနိုင်သည်။

node တစ်ခုစီရှိ SQLite ဒေတာကို ဖိုင်တစ်ခုတွင် သိမ်းဆည်းမထားသော်လည်း မှတ်ဉာဏ်တွင် ဖြစ်သည်။ Raft ပရိုတိုကောကို အကောင်အထည်ဖော်ခြင်းဖြင့် အလွှာအဆင့်တွင်၊ ဒေတာဘေ့စ်သို့ အပြောင်းအလဲများဆီသို့ ဦးတည်သွားစေမည့် SQLite command အားလုံးကို မှတ်တမ်းတစ်ခု သိမ်းဆည်းထားသည်။ node အသစ်တစ်ခုစတင်သောအခါ သို့မဟုတ် ချိတ်ဆက်မှုဆုံးရှုံးခြင်းမှ ပြန်လည်ရယူရန် (အခြား node များပေါ်ရှိ တောင်းဆိုချက်များကို ပြန်လည်ထုတ်လုပ်သည့်အဆင့်တွင် ပြန်လည်ပုံတူကူးခြင်း) ဤမှတ်တမ်းကို ကူးယူစဉ်တွင် ဤမှတ်တမ်းကို အသုံးပြုပါသည်။ မှတ်တမ်း၏ အရွယ်အစားကို လျှော့ချရန်အတွက် သတ်မှတ်ထားသော ပြောင်းလဲမှုအရေအတွက်တစ်ခုပြီးနောက် စတင်ကာ မှတ်တမ်းအသစ်တစ်ခု စတင်ထိန်းသိမ်းရမည့်အခြေအနေနှင့် ဆက်စပ်၍ လျှပ်တစ်ပြက်ရိုက်ချက်တစ်ခုအား ပြင်ဆင်ခြင်းဆီသို့ ဦးတည်သည့် အလိုအလျောက် ထုပ်ပိုးခြင်းကို အသုံးပြုသည် (မှတ်ဉာဏ်အတွင်းရှိ ဒေတာဘေ့စ်၏ အခြေအနေသည် လျှပ်တစ်ပြက်ရိုက်ချက် + စုဆောင်းထားသော ပြောင်းလဲမှုမှတ်တမ်း) နှင့် တူညီသည်။

rqlite ၏အင်္ဂါရပ်များ

  • သီးခြား SQLite တပ်ဆင်မှုမလိုအပ်ဘဲ အစုအဝေးတစ်ခုကို အသုံးချရန် လွယ်ကူသည်။
  • ထပ်တူပြုထားသော SQL သိုလှောင်မှုကို လျင်မြန်စွာ ရယူနိုင်စွမ်း။
  • ထုတ်လုပ်မှုပရောဂျက်များ (ထုတ်လုပ်မှုအဆင့်) တွင် အသုံးပြုရန် အဆင်သင့်ဖြစ်သည်။
  • အသုတ်မုဒ်တွင် ဒေတာကို အပ်ဒိတ်လုပ်ပြီး အစုအဝေး၏ ဦးဆောင်လမ်းညွန်ကို ဆုံးဖြတ်နိုင်စေမည့် HTTP(S) API တစ်ခု ရှိနေခြင်း။ ပရိုဂရမ်းမင်းဘာသာစကားအမျိုးမျိုးအတွက် command line interface နှင့် client libraries များကိုလည်း ပံ့ပိုးပေးပါသည်။
  • အစုအစည်းများကို ဒိုင်နမစ်ကျကျ ဖန်တီးနိုင်စေမည့် အခြား node များကို ခွဲခြားသတ်မှတ်ရန်အတွက် ဝန်ဆောင်မှုတစ်ခု ရရှိနိုင်သည်။
  • node များကြား ဒေတာဖလှယ်ခြင်းအတွက် ကုဒ်ဝှက်ခြင်းအတွက် ပံ့ပိုးမှု။
  • ဖတ်ရှုသည့်အခါ ဒေတာ၏ ဆက်စပ်မှုနှင့် ညီညွတ်မှုကို စစ်ဆေးသည့်အဆင့်ကို သတ်မှတ်နိုင်စွမ်း။
  • အများဆန္ဒကို ဆုံးဖြတ်ရာတွင် မပါဝင်ဘဲ ဖတ်ရှုခြင်းဆိုင်ရာ လုပ်ဆောင်မှုများအတွက် အစုအဝေး၏ အတိုင်းအတာကို တိုးမြှင့်ရန်အတွက် ရွေးချယ်နိုင်သော စွမ်းရည်ကို ဖတ်ရှုရန်မုဒ်တွင် စိတ်ကြိုက်ရွေးချယ်နိုင်သော စွမ်းရည်ကို အသုံးပြုပါသည်။
  • တောင်းဆိုချက်တစ်ခုတွင် ညွှန်ကြားချက်များ ပေါင်းစပ်မှုအပေါ် အခြေခံ၍ သင့်ကိုယ်ပိုင် ငွေပေးငွေယူပုံစံအတွက် ပံ့ပိုးမှု (BEGIN၊ COMMIT၊ ROLLBACK၊ SavePOINT နှင့် RELEASE ပေါ်အခြေခံ၍ ငွေပေးငွေယူများကို မပံ့ပိုးပါ)။
  • ပူပြင်းသော အရန်သိမ်းဆည်းမှုများကို ဖန်တီးရန် ပံ့ပိုးမှု။

ထုတ်ဝေမှုအသစ်တွင်-

  • Consul နှင့် etcd ဖြန့်ဝေသိုလှောင်မှုအပေါ် အခြေခံ၍ အလုပ်လုပ်နိုင်သော node detection service အသစ်ကို အသုံးပြု၍ အလိုအလျောက် rqlite အစုအဝေးပြုလုပ်ခြင်းအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားပါသည်။ ဝန်ဆောင်မှုသည် rqlite node များကို အချင်းချင်း အလိုအလျောက်ရှာဖွေရန် ခွင့်ပြုသည် - အက်ဒမင်သည် မတူညီသောဆာဗာများတွင် node အများအပြားကိုဖွင့်ရန် လိုအပ်ပြီး ဘုံကောင်စစ်ဝန် သို့မဟုတ် etcd အစုအဝေးလိပ်စာကို သတ်မှတ်ပေးခြင်း (ဥပမာ၊ “example.com:8500”) နှင့် nodes များသည် အလိုအလျောက်ဖြစ်လိမ့်မည်။ အစုအဝေးတစ်ခုအဖြစ် ပေါင်းစပ်ထားသည်။ ဦးဆောင် Node သည် ကောင်စစ်ဝန် သို့မဟုတ် etcd သိုလှောင်မှုတွင် ၎င်း၏လိပ်စာနှင့်ပတ်သက်သည့် အချက်အလက်များကို အခါအားလျော်စွာ အပ်ဒိတ်လုပ်မည်ဖြစ်ပြီး၊ ၎င်းသည် အခြား node များကို ပြန်လည်ပြင်ဆင်ရန်မလိုအပ်ဘဲ ခေါင်းဆောင်ကို ပြောင်းလဲနိုင်သည့်အပြင် ခေါင်းဆောင်ကို ပြောင်းပြီးသည့်တိုင် node အသစ်များကိုလည်း ထည့်သွင်းနိုင်သည်။ AWS Lambda တွင် လုပ်ဆောင်နေသည့် အမွေအနှစ် Discovery မုဒ် ဝန်ဆောင်မှုကို ရပ်ဆိုင်းလိုက်ပါပြီ။
  • CLI interface သည် host အများအပြားကိုတစ်ပြိုင်နက်သတ်မှတ်ခွင့်ပြုသည် - ပထမ node ကိုမရရှိနိုင်ပါကနောက်ထပ် host များကိုဆက်သွယ်လိမ့်မည်။
  • rqlited command line arguments များကို ခွဲခြမ်းစိတ်ဖြာရန် ကုဒ်ကို ပြန်လည်လုပ်ဆောင်ပြီးဖြစ်သည်။
  • ကန့်ကွက်ထားသော ပရိုတိုဘူးအထုပ်ကို ဆက်မလုပ်တော့ပါ။
  • Raft ပရိုတိုကောကို အကောင်အထည်ဖော်ရာတွင် အသုံးပြုသည့် BoltDB သိုလှောင်မှုကို etcd ပရောဂျက်မှ ခက်ရင်းဖြစ်သည့် bbolt ဖြင့် အစားထိုးထားသည်။

source: opennet.ru

မှတ်ချက် Add