在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB數(shù)據(jù)建模
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點(diǎn)
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動(dòng)遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級(jí)索引
MongoDB數(shù)據(jù)庫的優(yōu)點(diǎn)
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗(yàn)證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB數(shù)據(jù)建模

MongoDB中的數(shù)據(jù)具有靈活的模式。文檔在同一集合,但它們不需要具有相同的字段或結(jié)構(gòu)集合,集合文檔中的公共字段可以包含不同類型的數(shù)據(jù)。

MongoDB中的數(shù)據(jù)具有靈活的模式。與SQL數(shù)據(jù)庫不同,SQL數(shù)據(jù)庫必須在插入數(shù)據(jù)之前確定和聲明表的模式,MongoDB的集合不會(huì)強(qiáng)制執(zhí)行文檔結(jié)構(gòu)。這種靈活性有助于將文檔映射到實(shí)體或?qū)ο蟆?每個(gè)文檔可以匹配表示實(shí)體的數(shù)據(jù)字段,即使數(shù)據(jù)具有實(shí)質(zhì)性的變化。然而,集合中的文檔具有類似的結(jié)構(gòu)。

數(shù)據(jù)建模中的關(guān)鍵挑戰(zhàn)是平衡應(yīng)用程序的需求,數(shù)據(jù)庫引擎的性能特征和數(shù)據(jù)檢索模式。 在設(shè)計(jì)數(shù)據(jù)模型時(shí),請(qǐng)始終考慮數(shù)據(jù)的應(yīng)用程序使用情況(即數(shù)據(jù)的查詢,更新和處理)以及數(shù)據(jù)本身的固有結(jié)構(gòu)。

在MongoDB中設(shè)計(jì)架構(gòu)時(shí)有一些考慮:

  • 根據(jù)用戶要求設(shè)計(jì)架構(gòu)。
  • 將對(duì)象合并到一個(gè)文檔中,否則分開它們(但確保不需要連接)。
  • 復(fù)制數(shù)據(jù)(但有限制),因?yàn)榕c計(jì)算時(shí)間相比,磁盤空間便宜。
  • 在寫入時(shí)加入,而不是讀取時(shí)加入。
  • 為最常用的用例優(yōu)化架構(gòu)。
  • 在模式中執(zhí)行復(fù)雜聚合。

實(shí)例

假設(shè)客戶需要他的博客/網(wǎng)站的數(shù)據(jù)庫設(shè)計(jì),并查看RDBMS和MongoDB架構(gòu)設(shè)計(jì)之間的區(qū)別。網(wǎng)站有以下要求。

  • 每個(gè)帖子都有唯一的標(biāo)題,描述和網(wǎng)址。
  • 每個(gè)帖子都可以有一個(gè)或多個(gè)標(biāo)簽。
  • 每個(gè)帖子都有其發(fā)布者的名稱和總?cè)藬?shù)。
  • 每個(gè)帖子都有用戶給出的評(píng)論以及他們的姓名,消息,數(shù)據(jù)時(shí)間和喜好。
  • 每個(gè)帖子可以有零個(gè)或多個(gè)評(píng)論。

在RDBMS架構(gòu)中,上述要求的設(shè)計(jì)將具有最少的三個(gè)表。表與表之間的關(guān)系如下 -

而在MongoDB模式中,設(shè)計(jì)將有一個(gè)集合post,其結(jié)構(gòu)以下 -

{
   _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
      }
   ]
}

通過上面的示例說明可以知道,在顯示數(shù)據(jù)時(shí),在RDBMS中需要連接三個(gè)表,而在MongoDB中,數(shù)據(jù)將僅顯示在一個(gè)集合中。