1. 程式人生 > >MongoDB 資料模型設計

MongoDB 資料模型設計

一個高效的資料模型能夠很好的滿足你應用程式的需求。設計一個文件資料結構最關鍵的考量就是決定是否使用嵌入式還是引用。
1. 內嵌式資料模型
在MongoDB裡面,你可以把相關的資料包括在一個單個的結構或者文件下面。這樣的資料模式也叫做 “非規範化” 模式,它充分利用了MongoDB的靈活文件格式的功能。以下圖為例:
嵌入式文件

內嵌資料可以讓應用程式把相關的資料儲存在同一條資料庫記錄裡面。這樣一來,應用程式就可以傳送較少的請求給MongoDB資料庫來完成常用的查詢及更新請求。
一般來說,下述情況建議使用內嵌資料:
- 資料物件之間有 “contains” (包含) 關係。
- 資料物件之間有一對多的關係。 這些情況下 “多個”或者子文件會經常和父文件一起被顯示和檢視。
通常情況下,內嵌資料會對讀操作有比較好的效能提高,也可以使應用程式在一個單個操作就可以完成對資料的讀取。 同時,內嵌資料也對更新相關資料提供了一個原子性寫操作。
然而, 內嵌相關資料到同一個文件內會很容易導致文件的增長。 文件增長會影響寫效能並導致資料碎片問題。更多資訊請參見 文件增長性。另外, MongoDB的文件大小必須小於16M。 超過這個大小的話,你可以考慮使用 GridFS。
當需要訪問內嵌的資料時,你可以使用 dot notation 。 欲瞭解如何訪問陣列內資料或內嵌文件資料,參見 陣列內資料查詢 以及 內嵌文件資料查詢 。
2. 規範化資料模型
規範化資料模型指的是通過使用 引用 來表達物件之間的關係。
這裡寫圖片描述


一般來說,在下述情況下可以使用規範化模型:
- 當內嵌資料會導致很多資料的重複,並且讀效能的優勢又不足於蓋過資料重複的弊端時候。
- 需要表達比較複雜的多對多關係的時候。
- 大型多層次結構資料集。
引用比內嵌要更加靈活一些。 但客戶端應用必須使用二次查詢來解析文件內包含的引用。換句話說,對同樣的操作來說,規範化模式會導致更多的網路請求傳送到資料庫伺服器端。

相關推薦

MongoDB 資料模型設計

一個高效的資料模型能夠很好的滿足你應用程式的需求。設計一個文件資料結構最關鍵的考量就是決定是否使用嵌入式還是引用。 1. 內嵌式資料模型 在MongoDB裡面,你可以把相關的資料包括在一個單個的結構或者文件下面。這樣的資料模式也叫做 “非規範化” 模式,它

MongoDB資料模型設計學習

近來需要設計使用MongoDB,想簡要學習一下。 MongoDB的資料模式是一種靈活模式,其集合並不限制文件結構。這種靈活性讓物件和資料庫文件之間的對映變得很容易,及時資料記錄之間有很大的變化,每個文件也可以很好的對映到各條不同的記錄。但在實際使用中,同一個集

mongodb模式模型設計及編碼-Mongoose

刪除 現在 fun ons dmi pan erro 操作 他能 走到這一步,我們的網站還不能稱為動態的網站,因為所要的數據都是偽造的,所以現在要對數據庫的模型進行設計 Mongoose 我們用到的工具模塊是Mongoose,他能對Mongodb進行建模的這樣一個

SaaS系統中的資料模型設計思路

共享資料庫 單獨模式(Schema)第二種方式則是所有客戶使用同一資料庫,但各自擁有一套不同的資料表組合存在於其單獨的模式之內。 圖3. 獨立模式(Schema)在這種資料模型下,當客戶嘗試第一次使用該SaaS系統時,系統在建立使用者環境時會建立一整套預設的表結構,同時將其關聯到該客戶的獨立模式。此時一般

理論篇~第三章 資料模型設計

常見資料模型介紹  1 ER模型     資料倉庫之父Bill Inmon提出的建模方法,是從全企業的高度設計一個3NF模型,用實體關係(Entity Relationship,ER)模型描述企業業務。其具有以下幾個特點:    需要全面瞭解企業業務和資料   實施週期非

Cassandra NoSQL資料模型設計指南

摘要:本文通過一個簡單的例項詳細介紹了Cassandra資料建模的五個步驟。以下是譯文。 我們最近在Instaclustr發表了一篇有關在Cassandra中經常出現的資料建模錯誤的文章。這篇文章非常受歡迎,並促使我思考如何設計出高質量的Cassandra

Cassandra資料模型設計最佳實踐(上)

本文是Cassandra資料模型設計第一篇(全兩篇),該系列文章包含了eBay使用Cassandra資料模型設計的一些實踐。其中一些最佳實踐我們是通過社群學到的,有些對我們來說也是新知識,還有一些仍然具有爭議性,可能在要通過進一步的實踐才能從中獲益。 本文中,我將會講解一些

淺談BI領域的資料模型設計(二)

/**********************************/目錄:第一部分:基礎概念第二部分:設計方式第三部分:銀行業資料模型基本概念介紹第四部分:銀行業資料模型分主題介紹第五部分:ODS和EDW/**********************************/第三部分:銀行業資料模型基本

Cassandra 資料模型設計總結

結合前段時間使用Cassandra使用過程,團隊簡單總結了Cassandra  資料模型設計,請大家斧正。 1、相關概念 Column:Cassandra中的最基本的儲存單元,用於儲存某一行的資訊;

Cassandra資料模型設計最佳實踐(上部)

本文是Cassandra資料模型設計第一篇(全兩篇),該系列文章包含了eBay使用Cassandra資料模型設計的一些實踐。其中一些最佳實踐我們是通過社群學到的,有些對我們來說也是新知識,還有一些仍然具有爭議性,可能在要通過進一步的實踐才能從中獲益。 本文中,我將會講解

RGW 資料模型設計

ceph是一個開源的統一分散式儲存系統,RADOS是提供了底層基礎物件儲存服務,它由mon和osd組成。RADOS主要操作的物件有pool,object和object的xattr、omap。 rados gateway是基於RADOS的一個物件儲存服務,對外提

asp.net core高階EF Core2.0資料模型設計建立

在我當前開源的Zop框架中,網站的底層資料模型被設計為利用EF Core,並通過反射來進行批量建立模型資料上下文。 1、建立資料模型 /// <summary> /// 群組 /// </summary> publi

時序資料庫技術體系(一):時序資料儲存模型設計

時序資料庫技術體系中一個非常重要的技術點是時序資料模型設計,不同的時序系統有不同的設計模式,而不同的設計模式對時序資料的讀寫效能、資料壓縮效率等各個方面都有非常重要的影響。這篇文章筆者將會分別針對OpenTSDB、Druid、InfluxDB以及Beringei這四個時序系統中的時序資料模型設計進行

資料密集型應用系統設計》第二章 資料模型與查詢語言

概述 本章從資料庫之初的資料模型開始介紹(20世紀60年代),從使用者使用的角度分析了每種資料模型的優缺點。就目前國內網際網路儲存來看實際用處並不大,對於網際網路分散式儲存開發工程師更多的意義是提供了一個全面(發展歷程)、籠統的瞭解資料庫的發展。 在資料模型部分介紹了,關係

三個例子,讓你看懂資料倉庫多維資料模型設計

一、概述   多維資料模型是最流行的資料倉庫的資料模型,多維資料模型最典型的資料模式包括星型模式、雪花模式和事實星座模式,本文以例項方式展示三者的模式和區別。 二、星型模式(star schema)   星型模式的核心是一個大的中心表(事實表),一組小的附屬表(維表)。

PowerDesigner設計邏輯資料模型的做法

轉自:深藍居 http://www.cnblogs.com/studyzy/archive/2009/12/15/1624899.html   在PD中建立物理模型由以下幾種辦法: 直接新建物理模型。 設計好概念模型,然後由概念模型生成物理模型。 設

MongoDB學習筆記~資料模型屬性為集合時應該為它初始化

回到目錄 今天要說一下技術點,我們在設計mongodb的資料模型時,如果屬性是陣列或者集合型別,我們在模型初始化時,需要為它們初始化一下,否則在資料庫裡將會被儲存為NULL,當被儲存為NULL時,我們將無法進行元件的push,pull等操作。 之間在設計模型時沒有注意這點,然後產生的問題就是,沒有被集合賦

資料倉庫物理模型設計規範整理

1.背景日常資料功能開發過程中,會經常要開發人員自己設計物理儲存模型(底層模型),在設計過程中往往會遇到一些設計共性問題,比如:物理模型需要的主鍵採用自然鍵還是業務鍵、相關時間戳欄位(業務相關表和非業務相關表)、冗餘欄位是否需要、是否要保留 “歷史臺賬資訊”、在使用Power

資料倉庫專題20-案例篇:電商領域資料主題域模型設計v0.1(改進意見徵集中)

一、電商分類(平臺+自營+複合)  (1)平臺型電商:淘寶+天貓+百度Mall等;  (2)自營型電商:         2.1 綜合型:京東(早期)+噹噹(早期);         2.2 垂直型:好像這種型別越來越少了;  (3)複合型電商(平臺+自營):京東+噹噹+

MongoDB Data Models 資料結構設計

1 資料建模介紹 MongoDB的資料結構很靈活,不強制要求資料結構.但是通常一個集合內部使用相同的結構. 資料建模的關鍵是平衡應用的需求和資料庫執行和資料檢索模型的效能.設計資料模型時,要考慮資料的使用情況和資料自身的結構 1.1 文件結構 設計MongoDB應用的資料模