摘要:中集合概念就是關系型數據庫中的表,本文討論的內容主要集中在數據庫庫設計集合時關鍵原則和常見的設計誤區。第一條準則拋棄關系型數據庫設計的范式約束,摒棄關聯查詢。的設計原則建議多種對象以關聯嵌套的方式組織在一個文檔中,方便應用程序一次讀取。
MongoDb中集合概念就是關系型數據庫中的表,本文討論的內容主要集中在MongoDb數據庫庫設計集合時關鍵原則和常見的設計誤區。本文約定讀者對MongoDb的基本概念有一定的了解。
第一條準則
拋棄關系型數據庫設計的范式約束,摒棄關聯查詢。先考慮內嵌形式,再考慮引用,視使用場景而定。內嵌就是充分利用MongoDb的文檔特定,通過嵌套文檔的形式,將一組數據統一保存在一個文檔下。即一條記錄中,這樣在列表類的需求中,就不需要多表查詢,以及外鍵關聯。
MongoDb的設計原則建議多種對象以關聯嵌套的方式組織在一個文檔中,方便應用程序一次讀取。
注意這里說的是建議,不是【必須】,因為有特定場景下,完全嵌套是不能滿足存儲需求的。
第二條準則
文檔中不是每個字段都必須有值,也就是每行的字段可以不一致??刂谱侄伪M量不插入null值和空值,這樣可以節約內存存儲,MongoDb中的稀疏索引類型專門為【不是每個文檔都有的字段】而設計。
這種特性適合Iot數據采集類似的使用場景,每個文檔的字段數目不等,按需插入。
注意這種情況下,切忌文檔過寬。那如何避免這種情況,我的方法是預估最大字段數,以20個字段為節點,多于20則采用嵌套document的設計方式組織document。
第三條準則
時間可以直接定義為格式化的時間,便于識別和查詢。不必特意存儲時間戳,這樣方便可視化的工具查詢核對。
"create_time" : ISODate("2017-05-10T15:39:58.000+08:00"),
當然如果系統涉及到不同時區的國際化,最好把原始時間戳記錄下來,視情況是否記錄源時區。
第四條準則
字段長度盡可能的短,不宜過長。也是考慮到內存優化。MongoDb存儲原則中會把key也存儲到內存中,所以字段因盡可能的短,這樣勢必會減低字段的可讀性,是的,這里需要犧牲字段的可讀性。
新概念
分桶設計原則
我們知道許多傳感器數據都是時間序列數據。例如:風傳感器,潮汐監測以及位置追蹤等采集數據的無非這種類型: Timestamp,采集器名稱/ID,采集值。對于時序類型的數據,我們可以采用一種叫做時間分桶的優化策略。 所謂分桶優化,就是與其對每一條數據創建一個文檔,我們可以把某一個時間段內的測量數據聚合到一起放到一個文檔內,利用MongoDB提供的內嵌式數組或子文檔特性
參考資料
http://www.mongoing.com/mongo...
http://www.tuicool.com/articl...
https://segmentfault.com/q/10...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19038.html
摘要:然后又介紹了基于的公號賬本應用的數據庫設計。歡迎關注公號四月試用。 前兩篇 微信公號DIY 系列: 微信公號DIY:一小時搭建微信聊天機器人 微信公號DIY:訓練聊天機器人&公號變身圖片上傳工具 介紹了如何使用搭建&訓練聊天機器人以及讓公號支持圖片上傳到七牛,把公號變成一個七牛圖片上傳客戶端。這一篇將繼續開發公號,讓公號變成一個更加實用的工具賬本(理財從記賬開始)。 代碼: 項目代...
摘要:然后又介紹了基于的公號賬本應用的數據庫設計。歡迎關注公號四月試用。 前兩篇 微信公號DIY 系列: 微信公號DIY:一小時搭建微信聊天機器人 微信公號DIY:訓練聊天機器人&公號變身圖片上傳工具 介紹了如何使用搭建&訓練聊天機器人以及讓公號支持圖片上傳到七牛,把公號變成一個七牛圖片上傳客戶端。這一篇將繼續開發公號,讓公號變成一個更加實用的工具賬本(理財從記賬開始)。 代碼: 項目代...
摘要:因為他們可能會有許多顧客對相同的商品目錄進行多次請求。然而,對于我們的參考架構,我們想完全在中實現一個多方面搜索。 本文源地址:http://www.mongoing.com/blog/retail-reference-architecture-part-1 如今,產品目錄數據管理對零售商而言是一個非常復雜的問題。經過多年對多個龐大、由供應商提供的系統的依賴之后,零售商目前正在重新考...
閱讀 3064·2021-10-12 10:20
閱讀 2809·2021-09-27 13:56
閱讀 790·2021-09-27 13:36
閱讀 1424·2021-09-26 09:46
閱讀 2417·2019-08-30 14:02
閱讀 2685·2019-08-28 18:14
閱讀 1257·2019-08-26 10:32
閱讀 1700·2019-08-23 18:25