MongoDB - 資料建模



MongoDB 中的資料具有靈活的模式。同一個集合中的文件不必具有相同的欄位集或結構。集合文件中的公共欄位可以儲存不同型別的資料。

資料模型設計

MongoDB 提供兩種型別的資料模型:嵌入式資料模型和規範化資料模型。根據需求,您可以在準備文件時使用任一模型。

嵌入式資料模型

在此模型中,您可以將所有相關資料(嵌入)到單個文件中,這也被稱為非規範化資料模型。

例如,假設我們正在獲取三個不同文件中員工的詳細資訊,即 Personal_details、Contact 和 Address,您可以將這三個文件嵌入到單個文件中,如下所示:

{
	_id: ,
	Emp_ID: "10025AE336"
	Personal_details:{
		First_Name: "Radhika",
		Last_Name: "Sharma",
		Date_Of_Birth: "1995-09-26"
	},
	Contact: {
		e-mail: "radhika_sharma.123@gmail.com",
		phone: "9848022338"
	},
	Address: {
		city: "Hyderabad",
		Area: "Madapur",
		State: "Telangana"
	}
}

規範化資料模型

在此模型中,您可以使用引用來引用原始文件中的子文件。例如,您可以使用規範化模型重寫上述文件為

員工

{
	_id: <ObjectId101>,
	Emp_ID: "10025AE336"
}

個人詳細資訊

{
	_id: <ObjectId102>,
	empDocID: " ObjectId101",
	First_Name: "Radhika",
	Last_Name: "Sharma",
	Date_Of_Birth: "1995-09-26"
}

聯絡方式

{
	_id: <ObjectId103>,
	empDocID: " ObjectId101",
	e-mail: "radhika_sharma.123@gmail.com",
	phone: "9848022338"
}

地址

{
	_id: <ObjectId104>,
	empDocID: " ObjectId101",
	city: "Hyderabad",
	Area: "Madapur",
	State: "Telangana"
}

在 MongoDB 中設計模式時的注意事項

  • 根據使用者需求設計模式。

  • 如果您將一起使用物件,請將它們組合到一個文件中。否則將它們分開(但請確保不需要連線)。

  • 複製資料(但要有限制),因為磁碟空間比計算時間便宜。

  • 在寫入時進行連線,而不是在讀取時進行連線。

  • 針對最頻繁的用例最佳化模式。

  • 在模式中進行復雜的聚合。

示例

假設客戶需要為其部落格/網站設計資料庫,並檢視 RDBMS 和 MongoDB 模式設計之間的差異。網站具有以下要求。

  • 每篇文章都有唯一的標題、描述和 URL。

  • 每篇文章可以有一個或多個標籤。

  • 每篇文章都有其釋出者的名稱和點贊總數。

  • 每篇文章都有使用者提供的評論,以及他們的姓名、訊息、日期時間和點贊。

  • 每篇文章可以有零個或多個評論。

在 RDBMS 模式中,上述要求的設計至少需要三個表。

RDBMS Schema Design

而在 MongoDB 模式中,設計將擁有一個名為 post 的集合,以及以下結構:

{
   _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 中,資料將僅從一個集合中顯示。

廣告
© . All rights reserved.