DEV Community

Arkar Min Tun
Arkar Min Tun

Posted on

Database ACID Compliance

Database တွေမှာ ACID Compliance ဆိုတာရှိတယ်။ သူက database တွေရဲ့ integrity (ယုံကြည်စိတ်ချရမှု)ကို တိုင်းတာတဲ့ standard တခုဖြစ်တယ်။ Data integrity ဆိုတာဟာ အရမ်းကို အရေးပါတဲ့အရာဖြစ်တယ်။ အကယ်၍သာ user တွေအတွက် အရေးကြီးတာတွေ ပျက်သွားတာဖြစ်ဖြစ်၊ မှားသွားတာဖြစ်ဖြစ် ဖြစ်လာခဲ့ရင် လုပ်ငန်းအတွက် အဆုံးအရှုံးအများကြီး ဖြစ်သွားနိုင်တယ်။

Atomicity

Database transaction တခုကို molecule တခုလိုမျိုး atom တွေနဲ့ ဖွဲ့စည်းထားတယ်လို့မြင်ကြည့်တာနဲ့တူမယ်။ atom တခုခု အဆင်မပြေဖြစ်တာနဲ့ molecule တခုလုံး invalid ဖြစ်သွားတာမျိုးပေါ့။ All or Nothing Rule လို့လဲ ခေါ်ကြတယ်။ Transaction ရဲ့ အစိတ်အပိုင်းတခုမှာ Error ဖြစ်တာနဲ့ transaction တခုလုံး Fail ဖြစ်သွားတာမျိုးပေါ့။ Database အနေနဲ့ အဲ့လိုမျိုး လုပ်ဆောင်ချက်ကို support လုပ်ပေးတယ်ဆို အဲ့ဒီ့ database မှာ atomicity ရှိတယ်လို့ ပြောလို့ရတယ်။

Consistency

ဒါကျတော့ database တခုရဲ့ သတ်မှတ်ချက်တွေအတိုင်း လုပ်ဆောင်မှုကို ပြောတာဖြစ်တယ်။ ဥပမာ - database အနေနဲ့ data type မတူတာကို ထည့်ဖို့ကြိုးစားတဲ့အခါ ထည့်ခွင့်ပြုသလား၊ သတ်မှတ်ထားတဲ့ constraints တွေကို အတိအကျလိုက်နာသလား အဲ့ဒါကို တိုင်းတာခြင်း ဖြစ်တယ်။ တကယ်လို့ သတ်မှတ်ချက်မညီတာမျိုး ပါလာရင် ထည့်ခွင့်မပြုပဲ အရင် state အတိုင်း ထားထားပေးနိုင်တယ်ဆို consistency ရှိတယ်လို့ ပြောလို့ရတယ်။

Isolation

ဒါကျတော့ database အနေနဲ့ ဝင်လာတဲ့ transactions တွေကို ခွဲခြားပြီး ဘယ်လောက် တိတိကျကျ ကိုင်တွယ်နိုင်သလဲဆိုတာ တိုင်းတာခြင်း ဖြစ်တယ်။ User အများကြီးက တပြိုင်ထဲ အသုံးပြုတဲ့အခါ database မှာ ပြောင်းလဲတာတွေက အချိန်နဲ့အမျှဖြစ်နေမှာ ဖြစ်တယ်။ အဲ့ပြောင်းလဲမှုတွေကို အမှားအယွင်းမပါပဲ သီးသန့်စီ ဆောင်ရွက်နိုင်နေရမှာ ဖြစ်တယ်။ ဥပမာ - ၅ခုပဲကျန်တဲ့ ပစ္စည်းတခုကို user ၂ယောက်က တစ်ပြိုင်ထဲ ဝယ်ယူဖို့ ကြိုးစားတယ်ဆိုပါစို့။ အဲ့လိုအခြေအနေဆို စက္ကန့်အနည်းငယ်ဖြစ်ဖြစ် စောတဲ့ user က မှာယူလို့ ရသွားပြီး နောက် user ကို ပစ္စည်း မကျန်တော့ဘူးဆိုတာ ပြသနိုင်ရမှာဖြစ်တယ်။ အဲ့လို ဆောင်ရွက်နိုင်တယ်ဆိုရင်တော့ isolation ရှိတယ်လို့ ပြောလို့ရတယ်။

Durability

ဒါကတော့ အောင်မြင်စွာလုပ်ဆောင်ပြီးတဲ့ transactions တွေက database ထဲမှာ လုံးဝရောက်ရှိသွားရမှာဖြစ်တယ်။ အကယ်၍ system က တခုခုဖြစ်လို့ database နဲ့ connection ပြတ်သွားခဲ့ရင်တောင် ပြန်ပြီး system တက်လာချိန်မှာ data state တွေက နဂိုအတိုင်း ရှိနေရမှာဖြစ်တယ်။ transaction success လို့ user ဆီကို အကြောင်းပြန်ပြီးတော့မှ system failure ကြောင့် user ရဲ့ data ပျောက်သွားခဲ့တယ်ဆို ဒါဟာ ပြဿနာအများကြီး ဖြစ်လာနိုင်တယ်။ Database အနေနဲ့ အဲ့လို situation မှာ ကောင်းကောင်း ကိုင်တယ်နိုင်တယ်ဆို durability ရှိတယ်လို့ ပြောလို့ရတယ်။

Discussion (0)