MongoDB一對多模式的三種設計方案

今天讀了篇文章,關於mongodb裏,一對多模式下的schema設計方案,感覺說的挺清晰,所以分享一下。原鏈接:

https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1

問題:

數據庫設計中,數據之間的引用不可避免,其中常見的模式就是一對多。舉個例子:

Person和Addresses

Person是一個對象,地址是一個對象,一個Person可以有若干個地址。

方案:

原文作者提到了三種設計方案,以及設計原則:

1,One-to-Few(一對有限數量的多)

例如上例中的Person和Address,一個Person基本只有少數量的居住地址,並且在很大程度上,沒有單獨讀取Address對象的需求(也就是說是否有必要單獨建立一個adress的表格),這種情況下采用嵌入式模式(embedding):


2,One-to-Many(一對千量級的多)

例如Product(產品)和Part(配件),一個產品,例如汽車,可以有數百個配件,而且配件通用性,也導致有需求單獨對於配件進行查詢,所以考慮到數量和應用,這種情況下適合採用child reference(在Product中添加引用數組)

Part:

Product:

3,One-to-Squillions(一對無數)

例如分佈式系統的日誌,每個機器(Host)會產生大量的日誌記錄(record),這種情況不適合child reference,也就是說,引用數組的長度無法控制,很可能越界,所以這種情況下適合採用parent reference(在每條record中,添加一個反向引用,指向Host)

Host

Record


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章