ပြီးခဲ့တဲ့ရက်တွေက database အကြောင်းတွေပြောလက်စနဲ့ sql programming ရော nosql programming အကြောင်းကိုရောပါပြောခဲ့ပါတယ်။ ဒီနေ့မှာတော့
Project တစ်ခုရေးပြီဆိုရင် sql ပဲ သုံးရမလား၊ NoSql ပဲသုံးရမလားဆိုပြီး ဝေခွဲရခက်နေသူတွေအတွက် sharing လုပ်ပေးလိုက်ပါတယ်။

Sql နဲ့ Nosql ပို့စ်တွေပြန်ဖတ်ချင်ရင်တော့ ဒီမှာဖတ်လို့ရပါတယ်။

SQL
https://www.facebook.com/permalink.php?story_fbid=802338006788912&id=100010381592688

NoSQL
https://www.facebook.com/permalink.php?story_fbid=804032539952792&id=100010381592688

Relation SQL ပဲဖြစ်ဖြစ် Non Relational SQL ပဲဖြစ်ဖြစ် သူ့ဟာနဲ့သူ ကောင်းကွက်တွေရှိသလို ကွဲပြားခြားနားနေတယ့် အားသာချက် အားနည်းချက်တွေလဲရှိပါတယ်။ အဲ့ဒါလေးတွေသိထားတော့ ဘယ်လို project မျိုးမှာ ဘယ်ဟာသုံးရင် သင့်တော်မလဲဆိုတာ ဆုံးဖြတ်တဲ့နေရာမှာ အဆင်ပြေနိုင်မယ်လို့ ထင်ပါတယ်၊ ဘာတွေကွာလဲဆိုတာကတော့ အောက်မှာ ဆက်ကြည့်လိုက်ရအောင်။

Type

SQL ကတော့ Relational Database Management System (RDBMS) ဆိုတဲ့ relational type ဆိုပေမဲ့ NoSQL ကတော့ Non-relational type ဖြစ်ပြီးတော့ distributed database ဖြစ်ပါတယ်။

Language

SQL က data တွေကို define & manipulate လုပ်တဲ့နေရာမှာ structure query တွေနဲ့လုပ်တယ်၊ powerful ဖြစ်တဲ့ language တစ်ခုလို့လဲပြောလို့ရတယ်၊ သုံးရတဲ့အခါမှာလဲ အလွယ်တကူ သုံးနိုင်တယ်။ အဲ့အတွက်ကြောင့်လည်း အခုအချိန်ထိ sectors တော်တော်များများသုံးကြတယ်။ တစ်ခြားတစ်ဖက်က ကြည့်ရင်တော့ သူ့မှာ ကန့်သတ်ချက်တွေရှိနေတယ်။ data တွေရဲ့ schemas တွေကို predefined လုပ်ဖို့လိုတယ်၊ ပြီးတော့ data တွေအကုန်လုံးကလဲ structure တွေတူနေဖို့လိုတယ်။ ပြောရမယ်ဆိုရင် up-front preparation လုပ်ရတာတွေရှိပြီးတော့ changes တွေလုပ်ချင်လာတဲ့အခါမှာလည်း အခက်အခဲတွေရှိလာနိုင်ပါတယ်။

NoSQL ကတော့ unstructured data , dynamic schema ဖြစ်တယ်။ ပြီးခဲ့တဲ့ article မှာရေးခဲ့တဲ့အတိုင်းပဲ document , column type , graph based, key value type ဆိုပြီးတော့ ပုံစံအမျိုးမျိုးနဲ့ သိမ်းတယ်။ schema တွေ predefined လုပ်စရာမလိုတဲ့အတွက် သုံးရတာ flexible ဖြစ်ပါတယ်။ data တွေအားလုံး same structure ဖြစ်နေစရာမလိုဘူး၊ document တစ်ခုခြင်းဆီတိုင်းဟာသူ့ဟာနဲ့သူ unique ဖြစ်ပိုင်ခွင့်ရှိပါတယ်။ restrictions တွေနည်းတဲ့ အတွက်လည်း သုံးရတာ freedom ဖြစ်ပါတယ်။

Scalability

Sql database တွေက scale up လုပ်တဲ့နေရာမှာ များသောအားဖြင့် vertically (cpu, ram တွေမြှင့်ခြင်း) လုပ်တာများပါတယ်။ အခုအချိန်တွေမှာhorizontally လုပ်နိုင်နေပြီဖြစ်သော်လည်း distributed architecture နဲ့ based လုပ်ထားတဲ့ nosql က horizontally scale up လုပ်ရတယ့် နေရာမှာပိုပြီးတော့ အဆင်ပြေပါတယ်။ horizontally scale up လုပ်တယ်ဆိုတာ server တွေကို replicate လုပ်တာ sharding လုပ်တာတို့ကိုဆိုလိုတာပါ။

Structure

Sql က table form နဲ့ structure လုပ်ထားပြီးတော့ nosql ကတော့ document , column type , graph based, key value type ဆိုတဲ့ form တွေနဲ့ structure လုပ်ထားပါတယ်။ ဒီနေရာမှာတော့ relation ချိတ်ဆက်ဖို့လိုအပ်ပြီး multi-row transactions တွေသွားချင်ရင်တော့ sql ကသာပါတယ်။

Theorem

Sql က acid property theorem ကို follow လုပ်တယ်၊ acid (Atomicity, Consistency, Isolation and Durability).
NoSql က CAP theorem ကို follow လုပ်တယ်၊ (Consistency, Availability and Partition tolerance).

Examples of SQL databases
PostgreSQL, MySQL, Oracle and Microsoft SQL Server

Examples of NoSQL databases
Redis, RavenDB Cassandra, MongoDB, BigTable, HBase, Neo4j and CouchDB.

နောက်ဆုံး နိဂုံးချုပ်အနေနဲ့ summary လုပ်ရမယ်ဆိုရင်

SQL
Relational အတွက်အဆင်ပြေတယ်
Predefined schema တွေ စည်းစနစ်တွေရှိတယ်
hierarchical data storage အတွက်တော့ အဆင်မပြေဘူး
complex ဖြစ်တဲ့ queries တွေအတွက်အဆင်ပြေတယ်
vertically scalable အတွက်ပိုကောင်းတယ်

NoSQL
Non-relational or distributed database system ဖြစ်တယ်
Dynamic schema တွေဖြစ်တယ်
hierarchical data storage အတွက်အဆင်ပြေတယ်
complex ဖြစ်တဲ့ queries တွေအတွက် အဆင်မပြေဘူး
Horizontally scalable အတွက်ပိုကောင်းတယ်

ဒီလောက်ဆိုရင်တော့ တော်တော်လေးသိသွားပြီဖြစ်တဲ့အတွက် ဝေခွဲရတဲ့နေရာမှာ အဆင်ပြေသွားမယ်လို့ထင်ပါတယ်၊ နှစ်ခုလုံးကိုတော့ စမ်းသုံးကြည့်ဖို့အကြံပေးချင်ပါတယ်။