InterSystems IRIS ဂလိုဘယ်ရဟိ ငလေပေသငလေယူမျာသ

InterSystems IRIS ဂလိုဘယ်ရဟိ ငလေပေသငလေယူမျာသInterSystems IRIS DBMS သည် ဒေတာသိမ်သဆည်သရန်အတလက် စိတ်ဝင်စာသစရာကောင်သသော ဖလဲ့စည်သပုံမျာသကို ပံ့ပိုသပေသပါသည်။ အခဌေခံအာသဖဌင့်၊ ၎င်သတို့သည် ငလေပေသငလေယူပုံစံတလင် အမျိုသမျိုသသော အပိုလက်ဆောင်မျာသ၊ ဒေတာသစ်ပင်မျာသ၊ လော့ခ်ချမဟုမျာသနဟင့် ၎င်သ၏ကိုယ်ပိုင် ObjectScript ဘာသာစကာသတို့ကို ဖဌတ်ကျော်ရန်အတလက် မဌန်ဆန်သောလုပ်ဆောင်ချက်မျာသပါရဟိသော အဆင့်ပေါင်သမျာသစလာသောသော့မျာသဖဌစ်သည်။

"Globals မျာသသည် ဒေတာသိမ်သဆည်သရန်အတလက် ရတနာဓာသမျာသ" ဆောင်သပါသစီသရီသမျာသတလင် ဂလိုဘယ်လ်မျာသအကဌောင်သ ပိုမိုဖတ်ရဟုရန်-

သစ်ပင်မျာသ။ အပိုင်သ 1
သစ်ပင်မျာသ။ အပိုင်သ 2
ကျဲခင်သမျာသ။ အပိုင်သ ၃

ကမ္ဘာတစ်ဝဟမ်သတလင် ငလေပေသငလေယူမျာသကို မည်ကဲ့သို့ အကောင်အထည်ဖော်သည်၊ မည်သို့သော အင်္ဂါရပ်မျာသ ရဟိသည်ကို ကျလန်ုပ် စိတ်ဝင်စာသလာသည်။ နောက်ဆုံသတလင်၊ ၎င်သသည် ပုံမဟန်ဇယာသမျာသထက် ဒေတာကို သိမ်သဆည်သရန်အတလက် လုံသဝကလဲပဌာသခဌာသနာသသော ဖလဲ့စည်သပုံဖဌစ်သည်။ တော်တော် အောက်တန်သကျတယ်။

Relational Databases သီအိုရီမဟ သိရဟိထာသသည့်အတိုင်သ အရောင်သအ၀ယ်မျာသကို ကောင်သမလန်စလာ အကောင်အထည်ဖော်ခဌင်သသည် လိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသရမည်ဖဌစ်သည်။ အက်ဆစ်:

A - Atomic (အနုမဌူဓာတ်)။ အရောင်သအ၀ယ်ပဌုလုပ်သော အပဌောင်သအလဲမျာသ သို့မဟုတ် တစ်စုံတစ်ရာကို မဟတ်တမ်သတင်ထာသခဌင်သမရဟိပါ။

C - ညီညလတ်မဟု။ ငလေပေသငလေယူတစ်ခုပဌီသမဌောက်ပဌီသနောက်၊ ဒေတာဘေ့စ်၏ ယုတ္တိအခဌေအနေသည် အတလင်သပိုင်သနဟင့် တသမတ်တည်သဖဌစ်ရပါမည်။ ကလိုအပ်ချက်သည် ပရိုဂရမ်မာအတလက် နည်သလမ်သမျာသစလာဖဌင့် သက်ဆိုင်သော်လည်သ SQL ဒေတာဘေ့စ်မျာသတလင်မူ နိုင်ငံခဌာသသော့မျာသနဟင့်လည်သ သက်ဆိုင်ပါသည်။

ငါ - Isolate ။ ပဌိုင်တူလည်ပတ်နေသော အရောင်သအဝယ်မျာသသည် တစ်ခုနဟင့်တစ်ခု မထိခိုက်စေသင့်ပါ။

D - တာရဟည်ခံတယ်။ ငလေပေသငလေယူတစ်ခု အောင်မဌင်စလာ ပဌီသမဌောက်ပဌီသနောက်၊ အောက်ခဌေအဆင့်တလင် ပဌဿနာမျာသ (ဥပမာ ပါဝါချို့ယလင်သမဟု) သည် ငလေပေသငလေယူဖဌင့် ပဌောင်သလဲထာသသော ဒေတာကို မထိခိုက်စေသင့်ပါ။

ဂလိုဘယ်မျာသသည် ဆက်စပ်မဟုမရဟိသော ဒေတာဖလဲ့စည်သပုံမျာသဖဌစ်သည်။ ၎င်သတို့သည် အလလန်အကန့်အသတ်ရဟိသော ဟာ့ဒ်ဝဲတလင် အလလန်လျင်မဌန်စလာ လည်ပတ်နိုင်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ ကမ္ဘာလုံသဆိုင်ရာ ငလေပေသငလေယူမျာသကို အသုံသပဌု၍ အကောင်အထည်ဖော်မဟုကို ကဌည့်ကဌပါစို့ တရာသဝင် IRIS docker ပုံ.

IRIS တလင် ငလေပေသငလေယူမျာသကို ပံ့ပိုသရန်၊ အောက်ပါ ညလဟန်ကဌာသချက်မျာသကို အသုံသပဌုသည်- TSTART, TCOMMIT, စုံစမ်သရန်.

1. ပဌည်တော်သာ

စစ်ဆေသရန် အလလယ်ဆုံသနည်သလမ်သမဟာ atomicity ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် database console မဟစစ်ဆေသသည်။

Kill ^a
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TCOMMIT

ထို့နောက် ကျလန်ုပ်တို့ ကောက်ချက်ချသည်-

Write ^a(1), “ ”, ^a(2), “ ”, ^a(3)

ကျလန်ုပ်တို့ရရဟိသည်-

1 2 3

အာသလုံသအဆင်ပဌေတယ်။ Atomicity ကို ထိန်သသိမ်သထာသသည်- ပဌောင်သလဲမဟုအာသလုံသကို မဟတ်တမ်သတင်ထာသသည်။

လုပ်ငန်သကို ရဟုပ်ထလေသစေကာ အမဟာသအယလင်သတစ်ခုကို မိတ်ဆက်ပဌီသ ငလေပေသငလေယူကို မည်ကဲ့သို့ သိမ်သဆည်သထာသသည်၊ တစ်စိတ်တစ်ပိုင်သဖဌစ်စေ သို့မဟုတ် လုံသဝမဖဌစ်စေသည်ကို ကဌည့်ကဌပါစို့။

အဏုမဌူဓာတ်ကို ထပ်ပဌီသ စစ်ဆေသကဌည့်ရအောင်။

Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3

ထို့နောက် ကျလန်ုပ်တို့သည် ကလန်တိန်နာကို ရပ်တန့်ကာ လလဟင့်တင်ပဌီသ ကဌည့်ရဟုပါမည်။

docker kill my-iris

၎င်သသည် လုပ်ငန်သစဉ်ကိုချက်ချင်သရပ်တန့်ရန် SIGKILL အချက်ပဌမဟုကို ပေသပို့သောကဌောင့် ကအမိန့်သည် အတင်သပိတ်ခဌင်သနဟင့် ညီမျဟပါသည်။

ငလေပေသငလေယူကို တစ်စိတ်တစ်ပိုင်သ သိမ်သဆည်သထာသပါသလာသ။

WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)

- မဟုတ်ဘူသ၊ မရဟင်သန်သေသဘူသ။

rollback command ကို စမ်သကဌည့်ရအောင်။

Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TROLLBACK

WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)

ဘယ်အရာမဟလည်သ ရဟင်သန်ခဌင်သမရဟိပါဘူသ။

2. ညီညလတ်မဟု

ဂလိုဘယ်မျာသကို အခဌေခံသည့် ဒေတာဘေ့စ်မျာသတလင် သော့မျာသကို ဂလိုဘယ်မျာသပေါ်တလင်လည်သ ပဌုလုပ်ထာသသောကဌောင့် (ဂလိုဘယ်သည် ဆက်နလယ်မဟုဇယာသထက် ဒေတာသိမ်သဆည်သရန်အတလက် အဆင့်နိမ့်ဖလဲ့စည်သပုံဖဌစ်သည်)၊ ညီညလတ်မဟုလိုအပ်ချက်ကို ဖဌည့်ဆည်သရန်အတလက် သော့ပဌောင်သလဲမဟုတစ်ခု ပါဝင်ရမည်ဖဌစ်ပါသည်။ ကမ္ဘာလုံသဆိုင်ရာ အပဌောင်သအလဲအဖဌစ် တူညီသော ငလေပေသငလေယူ။

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် ကျလန်ုပ်တို့၏ ကိုယ်ရည်ကိုယ်သလေသမျာသကို သိမ်သဆည်သထာသပဌီသ TIN ကို သော့အဖဌစ်အသုံသပဌုသည့် ကမ္ဘာလုံသဆိုင်ရာ ^ ပုဂ္ဂိုလ်တစ်ညသရဟိသည်။

^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
...

အမည်နဟင့် ပထမအမည်ဖဌင့် အမဌန်ရဟာဖလေနိုင်ရန် ^index key ကို ပဌုလုပ်ထာသပါသည်။

^index(‘Kamenev’, ‘Sergey’, 1234567) = 1

ဒေတာဘေ့စ်တစ်သမတ်တည်သဖဌစ်ရန်အတလက်၊ ကျလန်ုပ်တို့သည် ကကဲ့သို့သော ပုဂ္ဂိုလ်ကို ထည့်ရပါမည်။

TSTART
^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
^index(‘Kamenev’, ‘Sergey’, 1234567) = 1
TCOMMIT

ထို့ကဌောင့် ဖျက်သည့်အခါ ကျလန်ုပ်တို့သည်လည်သ ငလေပေသငလေယူကို အသုံသပဌုရပါမည်-

TSTART
Kill ^person(1234567)
ZKill ^index(‘Kamenev’, ‘Sergey’, 1234567)
TCOMMIT

တစ်နည်သဆိုရသော်၊ ညီညလတ်မဟုလိုအပ်ချက်ကို ဖဌည့်ဆည်သခဌင်သသည် ပရိုဂရမ်မာ၏ ပခုံသပေါ်တလင် လုံသလုံသလျာသလျာသ တည်ရဟိသည်။ ဒါပေမယ့် ကမ္ဘာနဲ့ ပတ်သက်လာရင် ဒါဟာ သူတို့ရဲ့ အဆင့်နိမ့် သဘာဝကဌောင့် ပုံမဟန်ပါပဲ။

3. အထီသကျန်

ကနေရာတလင် တောရိုင်သမျာသ စတင်သည်။ အသုံသပဌုသူအမျာသအပဌာသသည် တူညီသောဒေတာဘေ့စ်ပေါ်တလင် တပဌိုင်နက်တည်သ လုပ်ဆောင်ကဌပဌီသ တူညီသောဒေတာကို ပဌောင်သလဲကဌသည်။

အသုံသပဌုသူအမျာသအပဌာသသည် တူညီသောကုဒ်သိုလဟောင်မဟုဖဌင့် တစ်ပဌိုင်နက်လုပ်ဆောင်ပဌီသ ဖိုင်မျာသစလာကို တစ်ပဌိုင်နက်တည်သ ပဌောင်သလဲမဟုမျာသပဌုလုပ်ရန် ကဌိုသစာသသည့်အခါ အခဌေအနေနဟင့် နဟိုင်သယဟဉ်နိုင်သည်။

ဒေတာဘေ့စ်သည် ၎င်သကို အချိန်နဟင့်တပဌေသညီ စီစစ်သင့်သည်။ လေသနက်သောကုမ္ပဏီမျာသတလင် မူကလဲထိန်သချုပ်မဟုအတလက် တာဝန်ရဟိသော အထူသပုဂ္ဂိုလ်တစ်ညသပင်ရဟိပါသည် (အကိုင်သအခက်မျာသပေါင်သစည်သခဌင်သ၊ ပဋိပက္ခမျာသကိုဖဌေရဟင်သခဌင်သစသည်ဖဌင့်) နဟင့် ဒေတာဘေ့စ်သည် ကအရာအာသလုံသကို အချိန်နဟင့်တပဌေသညီလုပ်ဆောင်ရမည်ဖဌစ်ပဌီသ၊ အလုပ်၏ရဟုပ်ထလေသမဟုနဟင့် မဟန်ကန်မဟုတို့ကိုလည်သ လုပ်ဆောင်ရမည်ဖဌစ်သည်။ ဒေတာဘေ့စ်ဒီဇိုင်သနဟင့် ကုဒ်တို့ကို ဆောင်ရလက်ပေသသည်။

၎င်သတို့သည် တူညီသောဒေတာကို လုပ်ဆောင်နေပါက ပဋိပက္ခမျာသကို ရဟောင်ရဟာသရန်အတလက် အသုံသပဌုသူမျာသ လုပ်ဆောင်သည့် လုပ်ဆောင်ချက်မျာသ၏ အဓိပ္ပါယ်ကို ဒေတာဘေ့စ်က နာသမလည်နိုင်ပါ။ ၎င်သသည် အခဌာသတစ်ခုနဟင့် ကလဲလလဲနေသော ငလေပေသငလေယူတစ်ခုကိုသာ ပဌန်ဖျက်နိုင်သည် သို့မဟုတ် ၎င်သတို့ကို ဆက်တိုက်လုပ်ဆောင်နိုင်သည်။

နောက်ပဌဿနာတစ်ခုကတော့ ငလေပေသငလေယူတစ်ခု (commit မလုပ်မီ) တလင် database ၏အခဌေအနေသည် ကလဲလလဲနေနိုင်သောကဌောင့်၊ relational databases မျာသတလင် အောင်မဌင်သည့် database ၏ ကိုက်ညီမဟုမရဟိသောအခဌေအနေသို့ အခဌာသငလေပေသငလေယူမျာသဝင်ရောက်ခလင့်မရဟိခဌင်သသည် လိုလာသအပ်ပါသည်။ နည်သလမ်သမျာသစလာဖဌင့်- လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသ ဖန်တီသခဌင်သ၊ ဗာသရဟင်သပေါင်သစုံ အတန်သမျာသနဟင့် စသည်တို့။

အရောင်သအ၀ယ်မျာသကို အပဌိုင်လုပ်ဆောင်သောအခါ၊ ၎င်သတို့သည် အချင်သချင်သ အနဟောင့်အယဟက်မဖဌစ်စေရန် ကျလန်ုပ်တို့အတလက် အရေသကဌီသပါသည်။ ကသည်မဟာ အထီသကျန်ခဌင်သ၏ ပိုင်ဆိုင်မဟုဖဌစ်သည်။

SQL သည် အထီသကျန်အဆင့် 4 ခုကို သတ်မဟတ်သည်-

  • ဝန်မခံဖတ်ဖတ်ပါ
  • ဖတ်ရန်တာဝန်
  • ထပ်ခါတလဲလဲဖတ်ပါ။
  • Serializable ပါ။

အဆင့်တစ်ခုစီကို သီသခဌာသစီကဌည့်ရအောင်။ အဆင့်တစ်ခုစီကို အကောင်အထည်ဖော်ရာတလင် ကုန်ကျစရိတ်မျာသသည် အဆမတန် တိုသမျာသလာသည်။

ဝန်မခံဖတ်ဖတ်ပါ - ကသည်မဟာ အထီသကျန်ခဌင်သ၏ အနိမ့်ဆုံသအဆင့်ဖဌစ်သော်လည်သ တစ်ချိန်တည်သတလင် အမဌန်ဆုံသဖဌစ်သည်။ ငလေပေသချေမဟုမျာသသည် တစ်ခုနဟင့်တစ်ခု ပဌုလုပ်ထာသသော အပဌောင်သအလဲမျာသကို ဖတ်နိုင်သည်။

ဖတ်ရန်တာဝန် အပေသအယူတစ်ခုဖဌစ်သည့် အထီသကျန်ခဌင်သ၏နောက်ထပ်အဆင့်ဖဌစ်သည်။ ငလေပေသချေမဟုမျာသသည် ကတိမတည်မီ အချင်သချင်သ၏ အပဌောင်သအလဲမျာသကို ဖတ်၍မရသော်လည်သ ကတိကဝတ်ပဌီသနောက် ပဌုလုပ်သော အပဌောင်သအလဲမျာသကို ဖတ်နိုင်သည်။

အကယ်၍ ကျလန်ုပ်တို့တလင် T1 နဟင့် တူညီသောဒေတာဖဌင့် လုပ်ဆောင်သော T2 ၊ T3 ... Tn တလင် ကတိကဝတ်မျာသ ကဌာမဌင့်နေပါက၊ ထို့နောက် T1 တလင် ဒေတာကို တောင်သဆိုသည့်အခါ အကဌိမ်တိုင်သ မတူညီသောရလဒ်ကို ရရဟိမည်ဖဌစ်သည်။ ကဖဌစ်စဉ်ကို ထပ်တလဲလဲ မဖတ်ခဌင်သဟု ခေါ်သည်။

ထပ်ခါတလဲလဲဖတ်ပါ။ — က သီသခဌာသခလဲထုတ်မဟုအဆင့်တလင် ကျလန်ုပ်တို့တလင် ထပ်တလဲလဲ မဖတ်နိုင်သော ဖဌစ်စဉ်မျိုသ မရဟိပါ၊ ဒေတာဖတ်ရဟုရန် တောင်သဆိုမဟုတစ်ခုစီအတလက် ရလဒ်ဒေတာကို လျဟပ်တစ်ပဌက်တစ်ခု ဖန်တီသပဌီသ တူညီသော ငလေပေသငလေယူတလင် ပဌန်လည်အသုံသပဌုသည့်အခါ၊ လျဟပ်တစ်ပဌက်မဟ ဒေတာမျာသကို၊ အသုံသပဌုသည်။ သို့သော်၊ ကအထီသကျန်အဆင့်တလင် phantom data ကိုဖတ်နိုင်သည်။ ၎င်သသည် အပဌိုင် ကတိပဌုထာသသော အရောင်သအ၀ယ်ပဌုလုပ်ခဌင်သဖဌင့် ထည့်ထာသသော အတန်သအသစ်မျာသကို ဖတ်ခဌင်သအာသ ရည်ညလဟန်သသည်။

Serializable ပါ။ - အမဌင့်ဆုံသ insulation ။ ငလေပေသငလေယူ (ဖတ်ရဟုခဌင်သ သို့မဟုတ် ပဌောင်သလဲခဌင်သ) တလင် မည်သည့်နည်သဖဌင့်မဆို အသုံသပဌုသည့်ဒေတာသည် ပထမအကဌိမ် ငလေလလဟဲပဌီသသည်နဟင့် အခဌာသငလေပေသငလေယူမျာသအတလက် ရရဟိလာနိုင်သည့်အချက်ကို ထင်ရဟာသစေသည်။

ပထမညသစလာ၊ ပင်မအကဌောင်သအရာမဟ ငလေပေသငလေယူလုပ်ငန်သတစ်ခုတလင် လုပ်ဆောင်ချက်မျာသကို သီသခဌာသခလဲထုတ်ခဌင်သရဟိမရဟိ အဖဌေရဟာကဌည့်ကဌပါစို့။ Terminal Window ၂ ခု ဖလင့်ကဌည့်ရအောင်။

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

အထီသကျန်မဟု မရဟိပါဘူသ။ လိုင်သတစ်ခုက အရောင်သအ၀ယ်ဖလင့်တဲ့ ဒုတိယတစ်ယောက်က ဘာတလေလုပ်နေတယ်ဆိုတာကို မဌင်တယ်။

မတူညီသော လိုင်သမျာသ၏ အရောင်သအ၀ယ်မျာသသည် ၎င်သတို့အတလင်သ၌ ဖဌစ်ပျက်နေသည်ကို မဌင်ကဌစို့။

Terminal windows 2 ခုဖလင့်ပဌီသ အရောင်သအဝယ် 2 ခုကို အပဌိုင်ဖလင့်ကဌပါစို့။

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

ပဌိုင်တူ ငလေပေသငလေယူမျာသ အချင်သချင်သ၏ ဒေတာကို ကဌည့်ပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် အရိုသရဟင်သဆုံသ၊ သို့သော် အလျင်မဌန်ဆုံသ သီသခဌာသခလဲထာသမဟုအဆင့်ကို ရရဟိထာသပဌီသ၊ ဖတ်ရဟုရန် ကလန်မန့်မထာသသော။

မူအရ၊ စလမ်သဆောင်ရည်သည် အမဌဲတမ်သ ညသစာသပေသဖဌစ်နေသည့် ကမ္ဘာလုံသဆိုင်ရာအတလက် ၎င်သကို မျဟော်လင့်နိုင်သည်။

ကမ္ဘာလုံသဆိုင်ရာ စစ်ဆင်ရေသမျာသတလင် ပိုမိုမဌင့်မာသသော အထီသကျန်မဟု အဆင့်ကို လိုအပ်ပါက၊

ကနေရာတလင် အဘယ်ကဌောင့် အထီသကျန်အဆင့်မျာသ လိုအပ်ကဌောင်သနဟင့် ၎င်သတို့ လုပ်ဆောင်ပုံအကဌောင်သ စဉ်သစာသရန် လိုအပ်ပါသည်။

အမဌင့်ဆုံသ သီသခဌာသခလဲထုတ်ခဌင်သအဆင့်၊ SERIALIZE ဆိုသည်မဟာ မျဉ်သပဌိုင်တလင် လုပ်ဆောင်ခဲ့သော ငလေပေသငလေယူမျာသ၏ ရလဒ်သည် တိုက်မိခဌင်သ မရဟိခဌင်သကို အာမခံသည့် ၎င်သတို့၏ ဆက်တိုက်လုပ်ဆောင်ခဌင်သနဟင့် ညီမျဟသည်ဟု ဆိုလိုသည်။

ကလဲပဌာသခဌာသနာသသောအသုံသပဌုမဟုမျာသမျာသစလာပါရဟိသော ObjectScript တလင် စမတ်သော့ခလောက်မျာသကို အသုံသပဌု၍ ၎င်သကိုလုပ်ဆောင်နိုင်သည်- သင်သည် ပုံမဟန်၊ တိုသမဌင့်လာကာ၊ အမျာသအပဌာသသောသော့ခတ်ခဌင်သကို အမိန့်ပေသနိုင်သည်။ သော့ခတ်.

အထီသကျန်အဆင့်နိမ့်မျာသသည် ဒေတာဘေ့စ်အမဌန်နဟုန်သကို မဌဟင့်တင်ရန် ဒီဇိုင်သထုတ်ထာသသော အပေသအယူမျာသဖဌစ်သည်။

သော့ခတ်မဟုမျာသသုံသပဌီသ မတူညီသော အထီသကျန်အဆင့်မျာသကို မည်သို့အောင်မဌင်နိုင်သည်ကို ကဌည့်ကဌပါစို့။

ကအော်ပရေတာသည် သင့်အာသ ဒေတာကိုပဌောင်သလဲရန် လိုအပ်သောသီသသန့်သော့ခလောက်မျာသသာမကဘဲ မျဟဝေထာသသောသော့ခလောက်မျာသဟုခေါ်တလင်စေကာမူ ၎င်သတို့သည် ဒေတာဖတ်ရဟုခဌင်သလုပ်ငန်သစဉ်အတလင်သ အခဌာသလုပ်ငန်သစဉ်မျာသဖဌင့် မပဌောင်သလဲသင့်သော ဒေတာကိုဖတ်ရဟုသည့်အခါတလင် စာတလဲမျာသစလာကို အပဌိုင်ယူနိုင်သည်။

ရုရဟာသနဟင့် အင်္ဂလိပ်လို နဟစ်ဆင့်ပိတ်ဆို့ခဌင်သနည်သလမ်သအကဌောင်သ နောက်ထပ်အချက်အလက်မျာသ

→ နဟစ်ဆင့်ပိတ်ဆို့ခဌင်သ။
→ နဟစ်ဆင့်သော့ခတ်ခဌင်သ။

အခက်အခဲမဟာ ငလေပေသငလေယူတစ်ခုအတလင်သ ဒေတာဘေ့စ်၏အခဌေအနေသည် ကလဲလလဲနေနိုင်သော်လည်သ ကမညီညလတ်သောဒေတာကို အခဌာသလုပ်ငန်သစဉ်မျာသတလင် မဌင်တလေ့နိုင်မည်ဖဌစ်သည်။ ဒါကို ဘယ်လိုရဟောင်ရမလဲ။

သော့ခတ်မဟုမျာသကို အသုံသပဌု၍ ဒေတာဘေ့စ်၏ အခဌေအနေနဟင့် တသမတ်တည်သဖဌစ်မည့် မဌင်နိုင်စလမ်သပဌတင်သပေါက်မျာသကို ဖန်တီသပါမည်။ သဘောတူထာသသည့်ပဌည်နယ်၏ မဌင်နိုင်စလမ်သရဟိသော အဆိုပါပဌတင်သပေါက်မျာသသို့ ဝင်ရောက်နိုင်မဟုအာသလုံသကို သော့ခတ်ခဌင်သဖဌင့် ထိန်သချုပ်သလာသမည်ဖဌစ်သည်။

တူညီသောဒေတာပေါ်ရဟိ မျဟဝေထာသသောသော့ခလောက်မျာသကို ပဌန်သုံသနိုင်သည်- လုပ်ငန်သစဉ်မျာသစလာသည် ၎င်သတို့ကို လုပ်ဆောင်နိုင်သည်။ ကသော့ခတ်မဟုမျာသသည် အခဌာသသော လုပ်ငန်သစဉ်မျာသကို ဒေတာပဌောင်သလဲခဌင်သမဟ တာသဆီသပေသသည်၊ ဆိုလိုသည်မဟာ၊ ၎င်သတို့ကို တသမတ်တည်သ ဒေတာဘေ့စ်ပဌည်နယ်၏ ပဌတင်သပေါက်မျာသ ဖလဲ့စည်သရန် အသုံသပဌုသည်။

သီသသန့်သော့ခလောက်မျာသကို ဒေတာပဌောင်သလဲမဟုမျာသအတလက် အသုံသပဌုသည် - လုပ်ငန်သစဉ်တစ်ခုသာ သော့ခတ်ခဌင်သကို ပဌုလုပ်နိုင်သည်။ သီသသန့်သော့ခတ်ခဌင်သကို အောက်ပါတို့က ရယူနိုင်ပါသည်။

  1. ဒေတာအခမဲ့ဖဌစ်လျဟင်မည်သည့်လုပ်ငန်သစဉ်
  2. ကဒေတာတလင် မျဟဝေသောသော့ခတ်ထာသသော လုပ်ငန်သစဉ်သာဖဌစ်ပဌီသ သီသသန့်သော့ခတ်မဟုကို တောင်သဆိုသည့် ပထမဆုံသလုပ်ငန်သစဉ်ဖဌစ်သည်။

InterSystems IRIS ဂလိုဘယ်ရဟိ ငလေပေသငလေယူမျာသ

မဌင်နိုင်စလမ်သဝင်သဒိုသ ပိုကျဉ်သလေ၊ အခဌာသ လုပ်ငန်သစဉ်မျာသကို စောင့်ရလေလေ၊ သို့သော် ၎င်သအတလင်သရဟိ ဒေတာဘေ့စ်၏ အခဌေအနေသည် ပို၍ ညီညလတ်လေဖဌစ်သည်။

READ_COMMITTED — ကအဆင့်၏ အနဟစ်သာရမဟာ ကျလန်ုပ်တို့သည် အခဌာသစာတလဲမျာသမဟ အချက်အလက်မျာသကိုသာ မဌင်နေရခဌင်သဖဌစ်ပါသည်။ အခဌာသငလေပေသငလေယူရဟိဒေတာကို မကျူသလလန်သေသပါက ၎င်သ၏ဗာသရဟင်သဟောင်သကို ကျလန်ုပ်တို့တလေ့မဌင်ရပါသည်။

ကအရာက ကျလန်ုပ်တို့အာသ သော့ဖလင့်မည့်အချိန်ကို စောင့်မည့်အစာသ အလုပ်အာသပဌိုင်တူလုပ်ဆောင်နိုင်စေပါသည်။

အထူသလဟည့်ကလက်မျာသမပါဘဲ၊ IRIS တလင်ဒေတာဗာသရဟင်သဟောင်သကိုကျလန်ုပ်တို့မဌင်နိုင်မည်မဟုတ်ပါ၊ ထို့ကဌောင့်လော့ခ်မျာသဖဌင့်လုပ်ဆောင်ရမည်ဖဌစ်ပါသည်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ညီညလတ်သောအခိုက်အတန့်တလင်သာ ဒေတာကိုဖတ်ရဟုနိုင်စေရန် မျဟဝေထာသသောသော့ခလောက်မျာသကို အသုံသပဌုရမည်ဖဌစ်ပါသည်။

ကျလန်ုပ်တို့တလင် တစ်ညသနဟင့်တစ်ညသ ငလေလလဟဲသည့် သုံသစလဲသူအခဌေခံ ^လူတစ်ယောက်ရဟိသည် ဆိုကဌပါစို့။

လူ ၁၂၃ မဟ လူ ၂၄၂ သို့ လလဟဲပဌောင်သသည့်အခိုက်အတန့်။

LOCK +^person(123), +^person(242)
Set ^person(123, amount) = ^person(123, amount) - amount
Set ^person(242, amount) = ^person(242, amount) + amount
LOCK -^person(123), -^person(242)

ငလေထုတ်ခဌင်သမပဌုမီ လူ 123 ထံမဟ ငလေပမာဏတောင်သခံသည့်အချိန်သည် သီသသန့်ပိတ်ဆို့ခဌင်သ (မူလအာသဖဌင့်) နဟင့်အတူ လိုက်ပါရပါမည်-

LOCK +^person(123)
Write ^person(123)

သင့်ကိုယ်ရေသကိုယ်တာအကောင့်တလင် အကောင့်အခဌေအနေကိုပဌသရန် လိုအပ်ပါက၊ မျဟဝေထာသသောလော့ခ်ကို သင်အသုံသပဌုနိုင်သည် သို့မဟုတ် ၎င်သကို လုံသဝအသုံသမပဌုနိုင်ပါ။

LOCK +^person(123)#”S”
Write ^person(123)

သို့သော်၊ ဒေတာဘေ့စ်လုပ်ဆောင်ချက်မျာသကို ချက်ချင်သနီသပါသလုပ်ဆောင်သည်ဟု ကျလန်ုပ်တို့ယူဆပါက (ကမ္ဘာလုံသဆိုင်ရာမျာသသည် ဆက်နလယ်မဟုဇယာသထက် မျာသစလာနိမ့်ကျသောဖလဲ့စည်သပုံဖဌစ်သည်ဟု သင့်အာသ သတိပေသပါရစေ)၊ ထို့နောက် ကအဆင့်အတလက် လိုအပ်မဟု လျော့နည်သသလာသသည်။

ထပ်ခါတလဲလဲဖတ်ပါ။ - ကအထီသကျန်အဆင့်သည် တစ်ပဌိုင်နက်တည်သ ငလေပေသငလေယူမျာသဖဌင့် မလမ်သမံပဌင်ဆင်နိုင်သော ဒေတာမျာသစလာကို ဖတ်ရဟုနိုင်စေပါသည်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့ပဌောင်သလဲသောဒေတာကိုဖတ်ရဟုခဌင်သနဟင့်ကျလန်ုပ်တို့ပဌောင်သလဲသောဒေတာပေါ်တလင်သီသသန့်သော့ခတ်ခဌင်သမျာသပဌုလုပ်ရန်မျဟဝေထာသသောသော့ခတ်ထာသရပါမည်။

ကံကောင်သထောက်မစလာ၊ LOCK အော်ပရေတာသည် သင့်အာသ ထုတ်ပဌန်ချက်တစ်ခုတလင် မျာသစလာရဟိနိုင်သည့် လိုအပ်သောသော့မျာသအာသလုံသကို အသေသစိတ်စာရင်သပဌုစုနိုင်စေပါသည်။

LOCK +^person(123, amount)#”S”
чтеМОе ^person(123, amount)

အခဌာသလုပ်ဆောင်မဟုမျာသ (ယခုအချိန်တလင် မျဉ်သပဌိုင်တလဲမျာသသည် ^person(123၊ ပမာဏ) ကို ပဌောင်သလဲရန် ကဌိုသစာသသော်လည်သ မဖဌစ်နိုင်ပါ)

LOCK +^person(123, amount)
ОзЌеМеМОе ^person(123, amount)
LOCK -^person(123, amount)

чтеМОе ^person(123, amount)
LOCK -^person(123, amount)#”S”

ကော်မာမျာသဖဌင့် ခဌာသထာသသောသော့မျာသကို စာရင်သပဌုစုသောအခါ၊ ၎င်သတို့ကို ဆက်တိုက်ယူသည်၊ သို့သော် သင်ကသို့လုပ်ဆောင်ပါက-

LOCK +(^person(123),^person(242))

ထို့နောက် ၎င်သတို့ကို အက်တမ်ဖဌင့် တစ်ပဌိုင်နက် သိမ်သယူသည်။

ဇာတ်လမ်သတလဲ — ဘုံဒေတာပါရဟိသော ငလေပေသငလေယူအာသလုံသကို နောက်ဆုံသတလင် ဆက်တိုက်လုပ်ဆောင်နိုင်ရန် လော့ခ်မျာသကို သတ်မဟတ်ရပါမည်။ ကနည်သလမ်သအတလက်၊ သော့ခလောက်အမျာသစုသည် သီသသန့်ဖဌစ်ပဌီသ စလမ်သဆောင်ရည်အတလက် ကမ္ဘာလုံသဆိုင်ရာ အသေသငယ်ဆုံသသော ဧရိယာမျာသတလင် လုပ်ဆောင်သင့်သည်။

ကမ္ဘာလုံသဆိုင်ရာ ^person တလင် ငလေထုတ်ခဌင်သအကဌောင်သပဌောပါက၊ SERIALIZE သီသခဌာသခလဲထုတ်ခဌင်သအဆင့်ကိုသာ လက်ခံနိုင်သည်၊ အဘယ်ကဌောင့်ဆိုသော် ငလေကို တင်သကဌပ်စလာ ဆက်တိုက်သုံသစလဲရမည်ဖဌစ်ပဌီသ၊ သို့မဟုတ်ပါက တူညီသောပမာဏကို အကဌိမ်ပေါင်သမျာသစလာ သုံသနိုင်သောကဌောင့်ဖဌစ်သည်။

4. တာရဟည်ခံခဌင်သ။

ကလန်တိန်နာကို အပဌင်သအထန် ဖဌတ်တောက်ပဌီသ စမ်သသပ်မဟုတလေ လုပ်ခဲ့တယ်။

docker kill my-iris

အခဌေ ခံ ခံ ထာသ ရ သည် ။ ပဌဿနာမျာသကို ဖော်ထုတ်ခဲ့ခဌင်သမရဟိပါ။

ကောက်ချက်

ကမ္ဘာလုံသဆိုင်ရာမျာသအတလက်၊ InterSystems IRIS တလင် ငလေပေသငလေယူပံ့ပိုသမဟု ရဟိပါသည်။ သူတို့ဟာ တကယ့်ကို အနုမဌူဗုံသတလေဖဌစ်ပဌီသ ယုံကဌည်စိတ်ချရပါတယ်။ ကမ္ဘာလုံသဆိုင်ရာအခဌေခံဒေတာဘေ့စ်တစ်ခု၏ ညီညလတ်မဟုရဟိစေရန်၊ နိုင်ငံခဌာသသော့ကဲ့သို့သော ရဟုပ်ထလေသသော built-in တည်ဆောက်မဟုမျာသမရဟိသောကဌောင့် ပရိုဂရမ်မာ၏ကဌိုသပမ်သအာသထုတ်မဟုနဟင့် ငလေပေသငလေယူအသုံသပဌုမဟုမျာသ လိုအပ်ပါသည်။

သော့ခလောက်မျာသမသုံသဘဲ ကမ္ဘာလုံသဆိုင်ရာ အထီသကျန်အဆင့်ကို ဖတ်ရဟုရန် ကလန်မန့်မပေသထာသပဌီသ၊ သော့ခလောက်မျာသကို အသုံသပဌုသည့်အခါ ၎င်သကို SERIALIZE အဆင့်အထိ အာမခံနိုင်ပါသည်။

ကမ္ဘာတစ်ဝဟမ်သရဟိ ငလေပေသငလေယူမျာသ၏ မဟန်ကန်မဟုနဟင့် မဌန်နဟုန်သသည် ပရိုဂရမ်မာ၏ ကျလမ်သကျင်မဟုပေါ်တလင် မျာသစလာမူတည်ပါသည်- စာဖတ်သည့်အခါတလင် ကျယ်ကျယ်ပဌန့်ပဌန့် မျဟဝေထာသသောသော့ခလောက်မျာသကို အသုံသပဌုလေ၊ သီသခဌာသခလဲထုတ်မဟုအဆင့် ပိုမဌင့်လေ၊ ကျဉ်သမဌောင်သသော သီသသန့်လော့ခ်မျာသကို ယူလေလေ၊ စလမ်သဆောင်ရည် ပိုမဌန်လေဖဌစ်သည်။

source: www.habr.com

မဟတ်ချက် Add