Modeling with MongoDB
ดีทุกคนสำหรับวันนี้ ขอมาทำความเข้าใจกันก่อนนะครับ ว่านานมาเเล้วเคยเขียน mongodb เมื่อนานมาเเล้ว เเล้วก็เคยเขียนบทความมาเเล้วด้วยกัน เเต่วันนี้ยังไม่ได้ลองเขียนเกี่ยวการ ออกแบบ model หรือ schema เดี๋ยวมาลองเขียนก็เเล้วกันนะครับ
แนวคิดในการออกแบบ mongo ต้องลืมความเป็น sql ก่อนเลย
เราจะเขียน document database หรือ nosql คือชื่อของมันก็บอกอยู่เเล้วว่า มันไม่ได้เกิดมาเพื่อทำ relation กันอยู่เเล้วอะ ฉะนั้นสิ่งที่มันทำได้ดีกว่าแน่นอนก็คือ การ scale นั้นเอง ยังไงก็เลือกให้เหมาะกับงานเเล้วกันนะครับ เรามาดู โครงสร้างตัวอย่างกันก่อนนะครับ
การยกตัวอย่างของผมคือ สมมุติว่าเรามีบริษัทที่ต้องการเก็บข้อมูลของลูกค้าว่าเค้าซื้อแพ็คเกจอะไรบ้าง เราจะออกแบบ mongo เราอย่างไร ยกตัวอย่างเคศนี้เเล้วกันนะครับ เราอาจจะลองเก็บข้อมูลแบบนี้เลยก็ได้นะครับ
{
"id": "ObjectId()",
"account_name": "Sting",
"account_surname": "String",
"plan_name": "String",
"plan_price": "Number"
}เก็บที่ตัว sehema ได้เลยแบบนี้ หรือเราจะเรียกแยกกันโดยใช้งานวิธี reference ตารางเอาก็ได้ สมมุติผมแยก schema ออกเป็น 3 ตารางได้แก่ accounts , plans, accountPlans ก็จะได้ดังนี้
// accounts schema
{
"id": "ObjectId()",
"account_name": "Sting",
"account_surname": "String"
}// plans schema
{
"id": "ObjectId()",
"plan_name": "String",
"plan_price": "Number"
}
// accountPlans schema{
"id": "ObjectId()",
"accounts": "Schema.Object",
"plans": "Schema.Object",
}
ที่นี้เวลาเราดึงค่าเราก็จะดึงค่าที่ตาราง accountPlans ที่เดียวได้เลยล่ะครับ
มันเป็นสองวิธีที่ผมไปเจอมานะครับ เราสามารถที่จะลองทำดูก้ได้ว่าวิธีไหนดี ตามคลิปนี้เลยครับ
สำหรับวันนี้ไปเเล้ว บ๊ายบาย ๆ
