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 ข้อมูลจะแสดงจากคอลเล็กชันเดียวเท่านั้น