MongoDB教學
MongoDB快速入門
MongoDB歷史
MongoDB特點
MongoDB數據庫的優點
MongoDB安裝配置(Windows)
MongoDB安裝配置(Ubuntu)
MongoDB安裝配置(RedHat/CentOS)
MongoDB數據建模
MongoDB創建數據庫
MongoDB刪除數據庫
MongoDB創建集合
MongoDB刪除集合
MongoDB數據類型
MongoDB插入文檔
MongoDB查詢文檔
MongoDB更新文檔
MongoDB刪除文檔
MongoDB投影(選擇字段)
MongoDB限制記錄數
MongoDB排序記錄
MongoDB索引
MongoDB聚合
MongoDB複製
MongoDB分片
MongoDB備份與恢復
MongoDB部署
Java連接MongoDB操作
Python連接MongoDB操作
PHP連接MongoDB操作
Ruby連接MongoDB操作
MongoDB數據建模
MongoDB中的數據具有靈活的模式。文檔在同一集合,但它們不需要具有相同的字段或結構集合,集合文檔中的公共字段可以包含不同類型的數據。
MongoDB中的數據具有靈活的模式。與SQL數據庫不同,SQL數據庫必須在插入數據之前確定和聲明表的模式,MongoDB的集合不會強制執行文檔結構。這種靈活性有助於將文檔映射到實體或對象。 每個文檔可以匹配表示實體的數據字段,即使數據具有實質性的變化。然而,集合中的文檔具有類似的結構。
數據建模中的關鍵挑戰是平衡應用程序的需求,數據庫引擎的性能特徵和數據檢索模式。 在設計數據模型時,請始終考慮數據的應用程序使用情況(即數據的查詢,更新和處理)以及數據本身的固有結構。
在MongoDB中設計架構時有一些考慮:
- 根據用戶要求設計架構。
- 將對象合併到一個文檔中,否則分開它們(但確保不需要連接)。
- 複製數據(但有限制),因爲與計算時間相比,磁盤空間便宜。
- 在寫入時加入,而不是讀取時加入。
- 爲最常用的用例優化架構。
- 在模式中執行復雜聚合。
實例
假設客戶需要他的博客/網站的數據庫設計,並查看RDBMS和MongoDB架構設計之間的區別。網站有以下要求。
- 每個帖子都有唯一的標題,描述和網址。
- 每個帖子都可以有一個或多個標籤。
- 每個帖子都有其發佈者的名稱和總人數。
- 每個帖子都有用戶給出的評論以及他們的姓名,消息,數據時間和喜好。
- 每個帖子可以有零個或多個評論。
在RDBMS架構中,上述要求的設計將具有最少的三個表。表與表之間的關係如下 -
而在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中,數據將僅顯示在一個集合中。