NoSQL數(shù)據(jù)模型設計和關系型數(shù)據(jù)庫模型設計有很大的不同,在瀏覽MongDB官方文檔時發(fā)現(xiàn)有不少篇幅介紹數(shù)據(jù)模型設計葛家,特翻譯并整理成此系列供參考學習。本系列內容主要來自MongoDB Document - Date Models部分泌类,其設計思想和方式不僅適用于MongoDB癞谒,也可應用到所有的NoSQL數(shù)據(jù)庫上。
NoSQL數(shù)據(jù)模型
NoSQL主要有兩種數(shù)據(jù)模型
嵌入數(shù)據(jù)模型
MongoDB支持嵌套文檔結構刃榨,這允許將相關數(shù)據(jù)都放入一個文檔中保存弹砚。這也被稱為反范式設計。
使用場景
- 1對1關系數(shù)據(jù)合并保存在一起保存枢希。
- 1對多關系數(shù)據(jù)桌吃,多方數(shù)據(jù)以數(shù)組形式保存在1方文檔或者父文檔中。
一般苞轿,嵌套數(shù)據(jù)模型具有更好的讀性能茅诱,并可以在一次讀取中獲得全部數(shù)據(jù)逗物。同時能夠保證寫操作原子性。但要注意單個文檔16MB大小限制瑟俭。
范化數(shù)據(jù)模型(引用模型)
范化數(shù)據(jù)模型符合關系型數(shù)據(jù)設計的范式要求翎卓,文檔中保存其它文檔的引用。
使用場景
- 嵌入數(shù)據(jù)模型導致的數(shù)據(jù)重復影響超過其帶來的讀性能提升
- 針對復雜的多對多關系數(shù)據(jù)
- 針對大型層次化數(shù)據(jù)集