စမ်းမယ် စမ်းမယ်နဲ့ သေသေချာချာ မစမ်းဖြစ်သေးတဲ့ MongoDB ကို ဒီနေ့မှပဲ စမ်းဖြစ်တော့တယ်။ php အတွက် driver ကိုတော့ စမ်းသွင်းထားတာ ကြာလှပါပြီ။ MongoDB က သွင်းရတာ လွယ်သလို ရေးရတာလည်း လွယ်တယ်။ ပြဿနာ တစ်ခုက PHP Driver သွင်းရတာလေးပဲ။ 32 bit နဲ့ 64 bit ပြဿနာ ကြောင့် driver ကို ကိုယ့်ဘာသာကိုယ် compile ပြန်လုပ်ရတယ်။ အဲဒါကလွဲပြီး ထွေထွေ ထူးထူး ပြဿနာ မရှိပါဘူး။ MongoDB က NoSQL Database တွေထဲက တစ်ခုပါ။
Intro
MongoDB အကြောင်း မပြောခင်မှာတော့ NoSQL (Not Only SQL) ဆိုတာ သိဖို့လိုပါတယ်။ NoSQL ဟာ Relational database လိုမျိုးမဟုတ်ပါဘူး။ Relational Database ဆိုတာက MySQL , MSSQL လိုမျိုး table တစ်ခုနဲ့ တစ်ခုချိတ်ဆက်ထားတာပေါ့။ NoSQL မှာတော့ အဲလိုမျိုး table အချင်းချင်း ချိတ်ဆက်မှုတွေ မပါတော့ဘူးပေါ့။ NoSQL ဆိုတဲ့အတိုင်း table အခြင်းခြင်း ချိတ်ဆက်တဲ့ SQL တွေကို အသုံးမပြုတော့ပါဘူး။ NoSQL ဟာ သာမာန် Relational Database တွေထက်စာရင် ပိုမိုမြန်ဆန်မှုရှိပါတယ်။ ၂ ဆ လောက် ပိုမြန်ပါတယ်။ ဒီမှာ ဖတ်ကြည့်နိုင်ပါတယ်။
NoSQL သိမ်းတဲ့ ပုံစံတွေက အမျိုးအမျိုးရှိပါတယ်။ သိမ်းထားပုံတွေကိုတော့ အောက်မှာ ရေးထားပါတယ်။ ကျွန်တော် ရေးပြထားတဲ့ ၃ နည်းကတော့ လူသုံးအများဆုံး နည်း ၃ ခုပေါ့။ သိမ်းတဲ့ နည်းပေါ်မှာ မူတည်ပြီး Database တွေလည်း ကွဲပြားသွားပါတယ်။
Key Value stores
သူက သိမ်းတဲ့အခါမှာ One Key, One Value ဖြစ်ပြီး Duplicate မရှိပါဘူး။ အရမ်းကို မြန်ဆန်ပါတယ်။ Binary Object အနေနဲ့ သိမ်းပါတယ်။ အဲလိုမျိုး သိမ်းတာကိုတော့ Amazon Dynamo, Memcache DB စတာတွေမှာ အသုံးပြုပါတယ်။
Document Database
နောက်တစ်မျိုး သိမ်းတဲ့ နည်းကတော့ Document Database ပါ။ သူကတော့ သိမ်းတဲ့ ပုံစံက JSON လိုမျိုး ပုံစံနဲ့ သိမ်းပါတယ်။ ဒါကြောင့် Query လုပ်လို့ရပါတယ်။ Amazon Simple DB, CouchDB , MongoDB စတာတွေမှာ အသုံးပြုပါတယ်။ ဘယ်လိုမျိုးလဲဆိုတော့ dog_12 မှာ သိမ်းထားတာက အောက်ကလို ပေါ့။
{ type:"Dog", name: "Ronaldo", mood: "Happy" }
အဲလိုမျိုး သိမ်းထားတာပေါ့။
ပိုပြီး ရှင်းလင်းသွားအောင် dog_12 key မှာ သိမ်းထားတာက
{ type:"Dog", name: "Ronaldo", mood: "Happy", birthdate: 2007-04-05 braks: [ { brak: "I had to wear stupid", comments: [ { dog_id: "dog_4", comment: "You look so cute!" }, { dog_id:"dog_14", comment: "I hate it ,too" } ] } ] }
အဲဒါဆိုရင် break လုပ်တဲ့ အခါမှာ “I had to wear stupid” ဆိုပြီး ပြောမယ်။ တွေ့တဲ့ dog_id က dog_4 ဖြစ်နေရင် You look so cute ဆိုပြီး ပြောမယ်။ dog_14 ဖြစ်နေရင် I hate it , too လို့ ပြောမယ်။ tables တွေကို သွားပြီး ချိတ်နေစရာမလိုတော့ဘူး။ dog_4 ကို ဆွဲထုတ်လိုက်တာနဲ့ သူ့ရဲ့ comment ကို ဖော်ပြပေးလို့ရပါပြီ။ JSON ဖြစ်တဲ့အတွက်ကြောင့် နားလည်လွယ်ပြီး သူ့ကိုတော့ လူသုံးများပါတယ်။
Wide Columns Stores
သူ့ကိုတော့ Big Table Clone လို့ ခေါ်ကြတယ်။ Google Big Table နဲ့ Cassandra (Facebook) တို့မှာ အသုံးပြုထားပါတယ်။ သူ့ရဲ့ သိမ်းထားပုံကတော့
Graph Database
Relational database မှာ tables တွေ ချိတ်ဆက်မှုအားနည်းနေတယ်ထင်ရင် Graph Database ကို အသုံးပြုနိုင်ပါတယ်။ Graph Database ကိုတော့ Neo4j,InfoGraph စတဲ့ database တွေမှာ အသုံးပြုပါတယ်။
Relational database ကို အသုံးပြုတဲ့အခါမှာ table တွေ ဆောက်ရတယ်။ နောက်ပြီး relationship တွေ ချိတ်ရတယ်။ ပြန်ထုတ်ဖို့အတွက် SQL မှာ tables တွေ ချိတ်ဆက်တာတွေ ထည့်ရေးပေးရတယ်။ Graph Database ဟာ များပြားလှတဲ့ Relationship တွေအတွက် အထူးသင့်လျော်ပါတယ်။ key-value stores, document databases and wide column stores တွေမှာတော့ relationship တွေ မရှိပါဘူး။
ဆက်ပါအုံးမည် ..
Leave a Reply