နားလည်ထားရမယ့် အချက်
ဒီ platform မှာ database တစ်ခုနဲ့ တကယ်အလုပ်လုပ်ဖို့ သင်ပေးတဲ့ course တွေ ရှိပြီးသားဖြစ်ပါတယ်: SQL syntax အတွက် SQL course, production-grade relational system အပြည့်အစုံအတွက် PostgreSQL course၊ ထိပ်တန်း document database တစ်ခုအတွက် MongoDB course၊ ပြီးတော့ in-memory data store အတွက် Redis course တို့ဖြစ်ပါတယ်။ အဲဒီ course တွေက real system တစ်ခုအပေါ် real command တွေကို ရိုက်ထည့်ဖို့ သင်ပေးပါတယ်။
How Databases Work က အဲဒီ course လေးခုလုံးရဲ့ အပေါ်ကနေ ရပ်နေတာပါ။ SELECT statement တစ်ကြောင်းမှ မရေးမီ၊ insert command တစ်ခုမှ မလုပ်မီ framework-neutral mental model တစ်ခု လိုအပ်ပါတယ်: database ဆိုတာ တကယ်ဘာလဲ၊ table၊ key၊ relationship၊ transaction ဆိုတဲ့ concept တွေက ဘာကို ဆိုလိုတာလဲ၊ ဘယ် product ကို နောက်ဆုံးရွေးရွေး အစိတ်အပိုင်းတွေက ဘယ်လို ချိတ်ဆက်ကြသလဲ ဆိုတာတွေပါ။
ဒီ course ရဲ့ နောက်ပိုင်းမှာ SQL versus NoSQL landscape ရဲ့ ရိုးသားတဲ့ နှိုင်းယှဉ်မှုတစ်ခုလည်း ရနိုင်ပါလိမ့်မယ် — တစ်ခုက 'ပိုကောင်းတယ်' ဆိုတဲ့ ဆုံးဖြတ်ချက်မဟုတ်ဘဲ၊ family တစ်ခုစီရဲ့ tradeoff တွေကို ရှင်းရှင်းလင်းလင်း တွေ့မြင်စေပါလိမ့်မယ်။
Master Mental Model
User -> Frontend -> Backend/API -> Database -> Data. User က frontend မှာ လုပ်ဆောင်ချက်တစ်ခု လုပ်တယ်၊ frontend က backend/API ကို တောင်းဆိုတယ်၊ backend က database နဲ့ စကားပြောတယ်၊ database က data ကို ပြန်ပေးတယ် (သို့) သိမ်းဆည်းတယ်။
Frontend ကို database credentials မပေးပါနှင့်
Frontend ဟာ privileged database credentials တွေကို တိုက်ရိုက် ကိုင်တွယ်သင့်ခြင်း မရှိပါဘူး — browser (သို့) mobile app ထဲကို ပို့လိုက်တဲ့ ဘာမဆို ထုတ်ယူနိုင်လို့ပါ။ ပိုလုံခြုံတဲ့ alternative က Frontend -> Secure Data Access Layer/BaaS -> Database ဖြစ်ပြီး authorization policies တွေကို အတည်ပြုပေးပါတယ်။
- Database
- Data ကို reliable စွာ storage, organize, retrieve, update လုပ်ပေးနိုင်တဲ့ system တစ်ခု၊ ပုံမှန်အားဖြင့် application တစ်ခုရဲ့ အစိတ်အပိုင်းများစွာက တစ်ပြိုင်နက် share လုပ်ကြပါတယ်။
- DBMS
- Database Management System — PostgreSQL, MongoDB, Redis လိုမျိုး database engine တစ်ခုကို storage, querying, concurrency, reliability guarantee တွေနဲ့ တကယ် implement လုပ်ထားတဲ့ software ဖြစ်ပါတယ်။
THE MASTER MENTAL MODEL
-----------------------
THE MASTER MENTAL MODEL
------------------------
User
|
v
Frontend (web app / mobile app)
|
v
Backend/API (server logic + interface)
|
v
Database (stores + organizes data)
|
v
Data
SAFER ALTERNATIVE (no DB credentials in the frontend)
---------------------------------------------------------
User -> Frontend -> Secure Data Access Layer/BaaS -> DB
(enforces authorization policies)လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
ဒီ course ကို ဖတ်နေတုန်း concept တစ်ခုစီကို သင်ထိတွေ့ဖူးတဲ့ တကယ့်အရာတစ်ခုနဲ့ ပြန်ချိတ်ဆက်ပါ — user profile တစ်ခု၊ shopping cart တစ်ခု၊ chat message တစ်ခုနဲ့ တွေးကြည့်နိုင်ပါတယ်။ ရည်ရွယ်ချက်က SQL, PostgreSQL, MongoDB, Redis ဘယ်ဟာကိုမှ ပြန်မသင်ဘဲ ယူသွားနိုင်တဲ့ common vocabulary တစ်ခု ရဖို့ပါ။
Product တစ်ခုကို ကောင်းကောင်းသိပြီးသားဆိုရင်တောင် ဒီ course ကို မကျော်သင့်ပါဘူး — relational table နဲ့ MongoDB document က idea တူပေမယ့် ဘာကြောင့် ကွဲပြားစွာ ကိုယ်စားပြုကြသလဲ ဆိုတာမျိုးကို ဒီမှာသာ သင်ရပါလိမ့်မယ်။
Self-check code
အောက်က code ကို run ကြည့်ပြီး hands-on course ဘယ်ဟာတွေ ပြီးပြီးသားလဲ ကြည့်ပြီး ဒီ course ရဲ့ chapter ဘယ်ဟာတွေက new material ဖြစ်နေသေးလဲ စစ်ကြည့်ပါ။
အတူတူ စမ်းရေးကြည့်မယ်
function recommendNewChapters(priorCourses = {}) {
const {
completedSQL = false,
completedPostgreSQL = false,
completedMongoDB = false,
completedRedis = false,
} = priorCourses;
const knowsRelational = completedSQL || completedPostgreSQL;
const knowsNonRelational = completedMongoDB || completedRedis;
const knowsAnyProduct = knowsRelational || knowsNonRelational;
const chapters = [
{ name: "Basic", isNew: () => true },
{ name: "SQL vs NoSQL Landscape", isNew: () => !(knowsRelational && knowsNonRelational) },
{ name: "Transactions & Concurrency Concepts", isNew: () => !(completedPostgreSQL && completedRedis) },
{ name: "Scaling & Performance Concepts", isNew: () => !knowsAnyProduct || !(knowsRelational && knowsNonRelational) },
];
return chapters.filter((chapter) => chapter.isNew()).map((chapter) => chapter.name);
}
console.log("Brand-new learner:", recommendNewChapters({}));
console.log("Finished SQL only:", recommendNewChapters({ completedSQL: true }));
console.log(
"Finished all four:",
recommendNewChapters({
completedSQL: true,
completedPostgreSQL: true,
completedMongoDB: true,
completedRedis: true,
})
);Brand-new learner: [ 'Basic', 'SQL vs NoSQL Landscape', 'Transactions & Concurrency Concepts', 'Scaling & Performance Concepts' ]
Finished SQL only: [ 'Basic', 'SQL vs NoSQL Landscape', 'Transactions & Concurrency Concepts', 'Scaling & Performance Concepts' ]
Finished all four: [ 'Basic' ]၅ မိနစ် စမ်းကြည့်
recommendNewChapters function ရဲ့ logic ကို ပုံစံအနေနဲ့ ယူပြီး၊ SQL နဲ့ MongoDB course ကို ပြီးပြီးသား ဒါပေမယ့် PostgreSQL နဲ့ Redis ကို မပြီးသေးဘူးဆိုရင် ဘယ် chapter တွေကို တကယ် ဆက်လေ့လာသင့်သေးလဲ စဉ်းစားရေးချပါ။
သတိလေးတစ်ချက်
ဒီ course ကို SQL/PostgreSQL/MongoDB/Redis ကို ကျော်တဲ့ shortcut အနေနဲ့ ထင်ခြင်း — ဒါက production မှာ run လို့ရတဲ့ syntax မဟုတ်ဘဲ concept ကိုသာ သင်ပါတယ်
NoSQL vs SQL ကို 'အနိုင်ရသူ' ရှိတဲ့ debate တစ်ခုအနေနဲ့ ထင်ခြင်း၊ ပြဿနာအမျိုးမျိုးအတွက် guarantee မတူညီတဲ့ tradeoff တစ်ခုအစား
Wikipedia: Database — How Databases Work