MongoDB - การสร้างแบบจำลองข้อมูล
ข้อมูลใน MongoDB มี schema.documents ที่ยืดหยุ่นในคอลเล็กชันเดียวกัน พวกเขาไม่จำเป็นต้องมีชุดของเขตข้อมูลหรือโครงสร้างเดียวกันฟิลด์ทั่วไปในเอกสารของคอลเลกชันอาจมีข้อมูลประเภทต่างๆ
การออกแบบโมเดลข้อมูล
MongoDB มีโมเดลข้อมูลสองประเภท: - โมเดลข้อมูลแบบฝังและแบบจำลองข้อมูลปกติ ตามข้อกำหนดคุณสามารถใช้แบบจำลองใดก็ได้ในขณะเตรียมเอกสารของคุณ
แบบจำลองข้อมูลที่ฝังตัว
ในโมเดลนี้คุณสามารถมี (ฝัง) ข้อมูลที่เกี่ยวข้องทั้งหมดในเอกสารเดียวซึ่งเรียกอีกอย่างว่าโมเดลข้อมูลที่ไม่ได้ทำให้เป็นมาตรฐาน
ตัวอย่างเช่นสมมติว่าเราได้รับรายละเอียดของพนักงานในเอกสารสามฉบับ ได้แก่ Personal_details ผู้ติดต่อและที่อยู่คุณสามารถฝังเอกสารทั้งสามไว้ในเอกสารเดียวดังที่แสดงด้านล่าง -
{
_id: ,
Emp_ID: "10025AE336"
Personal_details:{
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
},
Contact: {
e-mail: "[email protected]",
phone: "9848022338"
},
Address: {
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
}
แบบจำลองข้อมูลมาตรฐาน
ในรุ่นนี้คุณสามารถอ้างอิงเอกสารย่อยในเอกสารต้นฉบับโดยใช้การอ้างอิง ตัวอย่างเช่นคุณสามารถเขียนเอกสารด้านบนอีกครั้งในรูปแบบมาตรฐานเป็น:
Employee:
{
_id: <ObjectId101>,
Emp_ID: "10025AE336"
}
Personal_details:
{
_id: <ObjectId102>,
empDocID: " ObjectId101",
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
}
Contact:
{
_id: <ObjectId103>,
empDocID: " ObjectId101",
e-mail: "[email protected]",
phone: "9848022338"
}
Address:
{
_id: <ObjectId104>,
empDocID: " ObjectId101",
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
ข้อควรพิจารณาขณะออกแบบ Schema ใน MongoDB
ออกแบบสคีมาของคุณตามความต้องการของผู้ใช้
รวมวัตถุไว้ในเอกสารเดียวหากคุณจะใช้ร่วมกัน มิฉะนั้นให้แยกออก (แต่ตรวจสอบให้แน่ใจว่าไม่จำเป็นต้องมีการรวม)
ทำซ้ำข้อมูล (แต่มี จำกัด ) เนื่องจากพื้นที่ดิสก์มีราคาถูกเมื่อเทียบกับเวลาในการคำนวณ
เข้าร่วมขณะเขียนไม่ใช่อ่าน
เพิ่มประสิทธิภาพสคีมาของคุณสำหรับกรณีการใช้งานที่พบบ่อยที่สุด
ทำการรวมที่ซับซ้อนในสคีมา
ตัวอย่าง
สมมติว่าลูกค้าต้องการการออกแบบฐานข้อมูลสำหรับบล็อก / เว็บไซต์และดูความแตกต่างระหว่างการออกแบบสคีมา RDBMS และ MongoDB เว็บไซต์มีข้อกำหนดดังต่อไปนี้
ทุกโพสต์มีชื่อเรื่องคำอธิบายและ URL ที่ไม่ซ้ำกัน
ทุกโพสต์สามารถมีแท็กได้ตั้งแต่หนึ่งแท็ก
ทุกโพสต์มีชื่อผู้เผยแพร่และจำนวนการกดไลค์ทั้งหมด
ทุกโพสต์มีความคิดเห็นจากผู้ใช้พร้อมทั้งชื่อข้อความเวลาข้อมูลและไลค์
ในแต่ละโพสต์อาจมีความคิดเห็นเป็นศูนย์หรือมากกว่านั้นก็ได้
ใน RDBMS schema การออกแบบสำหรับข้อกำหนดข้างต้นจะมีตารางขั้นต่ำสามตาราง
ในขณะที่อยู่ใน MongoDB schema การออกแบบจะมีโพสต์คอลเลกชันหนึ่งรายการและโครงสร้างต่อไปนี้ -
{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
ดังนั้นในขณะที่แสดงข้อมูลใน RDBMS คุณต้องเข้าร่วมสามตารางและใน MongoDB ข้อมูลจะแสดงจากคอลเล็กชันเดียวเท่านั้น