SQLite ကိုအခဌေခံ၍ ဖဌန့်ဝေထာသသော၊ အမဟာသအယလင်သခံနိုင်သော DBMS ၏ rqlite 6.0 ကိုထုတ်ဝေခဌင်သ

SQLite ကို သိုလဟောင်မဟုအင်ဂျင်အဖဌစ် အသုံသပဌုကာ ပေါင်သစပ်ထာသသော သိုလဟောင်မဟုအစုအဝေသ၏ အလုပ်မျာသကို စုစည်သခလင့်ပဌုသည့် ဖဌန့်ဝေထာသသော DBMS rqlite 6.0 ၏ ထုတ်ဝေမဟုကို တင်ပဌထာသသည်။ 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 သိုလဟောင်မဟုကို လျင်မဌန်စလာ ရယူနိုင်စလမ်သ။
  • လုပ်ငန်သခလင် ပရောဂျက်မျာသတလင် အသုံသပဌုရန် အဆင်သင့် (Production-grade)။
  • အသုတ်မုဒ်တလင် ဒေတာကို အပ်ဒိတ်လုပ်ပဌီသ အစုအဝေသ၏ ညသဆောင်လမ်သညလန်ကို ဆုံသဖဌတ်နိုင်စေမည့် HTTP(S) API တစ်ခု ရဟိနေခဌင်သ။ ၎င်သသည် command line interface နဟင့် SQLite အတလက်တည်ဆောက်ထာသသော client libraries အမျိုသမျိုသကိုအသုံသပဌုရန်စလမ်သရည်ကိုလည်သထောက်ပံ့ပေသသည်။
  • အစုအစည်သမျာသကို ဒိုင်နမစ်ကျကျ ဖန်တီသနိုင်စေမည့် အခဌာသ node မျာသကို ခလဲခဌာသသတ်မဟတ်ရန်အတလက် ဝန်ဆောင်မဟုတစ်ခု ရရဟိနိုင်သည်။
  • node မျာသကဌာသ ဒေတာဖလဟယ်ခဌင်သအတလက် ကုဒ်ဝဟက်ခဌင်သအတလက် ပံ့ပိုသမဟု။
  • ဖတ်ရဟုသည့်အခါ ဒေတာ၏ ဆက်စပ်မဟုနဟင့် ညီညလတ်မဟုကို စစ်ဆေသသည့်အဆင့်ကို သတ်မဟတ်နိုင်စလမ်သ။
  • အမျာသဆန္ဒကို ဆုံသဖဌတ်ရာတလင် မပါဝင်ဘဲ ဖတ်ရဟုခဌင်သဆိုင်ရာ လုပ်ဆောင်မဟုမျာသအတလက် အစုအဝေသ၏ အတိုင်သအတာကို တိုသမဌဟင့်ရန်အတလက် ရလေသချယ်နိုင်သော စလမ်သရည်ကို ဖတ်ရဟုရန်မုဒ်တလင် စိတ်ကဌိုက်ရလေသချယ်နိုင်သော စလမ်သရည်ကို အသုံသပဌုပါသည်။
  • တောင်သဆိုချက်တစ်ခုတလင် ညလဟန်ကဌာသချက်မျာသ ပေါင်သစပ်မဟုအပေါ် အခဌေခံ၍ သင့်ကိုယ်ပိုင် ငလေပေသငလေယူပုံစံအတလက် ပံ့ပိုသမဟု (BEGIN၊ COMMIT၊ ROLLBACK၊ SavePOINT နဟင့် RELEASE ပေါ်အခဌေခံ၍ ငလေပေသငလေယူမျာသကို မပံ့ပိုသပါ)။
  • ပူပဌင်သသော အရန်သိမ်သဆည်သမဟုမျာသကို ဖန်တီသရန် ပံ့ပိုသမဟု။

ထုတ်ဝေမဟုအသစ်သည် မဟန်ကန်သော အစုအဝေသမျာသဆီသို့ တောင်သဆိုချက်မျာသကို လမ်သကဌောင်သဖတ်ခဌင်သနဟင့် ရေသခဌင်သလုပ်ငန်သစဉ်ကို ပိုမိုကောင်သမလန်စေခဌင်သဖဌင့် အစုအဖလဲ့၏ယုံကဌည်စိတ်ချရမဟုကို တိုသမဌင့်လာစေရန် ရည်ရလယ်သည့် သိသာထင်ရဟာသသော ဗိသုကာဆိုင်ရာပဌောင်သလဲမဟုမျာသကို မိတ်ဆက်ပေသပါသည်။ rqlite nodes မျာသသည် Raft protocol မဟတည်ဆောက်ထာသသော node မျာသကဌာသရဟိ TCP ချိတ်ဆက်မဟုမျာသကို အသုံသပဌု၍ ၎င်သတို့အချင်သချင်သအကဌာသ ယုတ္တိမျာသစလာချိတ်ဆက်မဟုမျာသကို multiplex ပဌုလုပ်နိုင်ပဌီဖဌစ်သည်။ တောင်သဆိုချက်တစ်ခုသည် ခေါင်သဆောင်အခလင့်အာဏာလိုအပ်သော်လည်သ ဒုတိယ node တစ်ခုသို့ ပေသပို့ပါက၊ ဒုတိယ node သည် ခေါင်သဆောင်၏လိပ်စာကို ဆုံသဖဌတ်ပဌီသ Raft consensus တလက်ချက်မဟုမျာသကို မလုပ်ဆောင်ဘဲ သုံသစလဲသူထံ ပေသပို့နိုင်သည်။

ပဌောင်သလဲမဟုသည် သီသခဌာသ မက်တာဒေတာ ထပ်တူပဌုခဌင်သ အစိတ်အပိုင်သ လိုအပ်မဟုကိုလည်သ ဖယ်ရဟာသခဲ့ပဌီသ Raft ပဌည်နယ်နဟင့် မက်တာဒေတာကို သီသခဌာသ ကိုင်တလယ်မဟုအာသ ဖယ်ရဟာသခဲ့သည်။ ယခု အလယ်တန်သ ဆုံမဟတ်မျာသသည် ခေါင်သဆောင် node ၏ လိပ်စာကို သိရဟိရန် လိုအပ်သောအခါမဟသာ ခေါင်သဆောင် node သို့ တောင်သဆိုမဟုမျာသ ပေသပို့ပါသည်။ API သည် အစုအဝေသရဟိ အခဌာသ node မျာသ၏ အခဌေအနေနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို ရယူနိုင်စလမ်သကို ပေသဆောင်သည်။ ".sysdump" ကလန်မန်သကို command line interface တလင် ထည့်သလင်သထာသသည်။

source: opennet.ru

မဟတ်ချက် Add