2012-06-08 58 views
0

我目前正在通過MongoDB學習noSQL,但我的學習和工作經驗是關係數據庫。您如何決定何時在MongoDB中創建集合與嵌入式文檔?

我目前有一個用戶集合,我需要實現存儲用戶配置文件頁面的網頁點擊量和大約5個以上統計數據的功能。

我應該創建一個新的集合來存儲這些信息,還是我應該創建一個嵌入式文檔來將這6條信息存儲在Users集合中?

謝謝!

+0

我會在應用程序將如何使用它的同時添加一些想法。在生成更具「上下文/場景」特性的文檔時可能會帶來好處,並且每次都需要拉取大量文檔,這只是爲了利用一部分數據,每次看起來都一樣。但是,不知道你的應用程序的外觀。如果我使用事件採購,我會創建更多的視圖特定的讀取模型,然後可能會分裂你的情況。 – Daniel

回答

1

創建嵌入式文檔,直到他們再也無法理解爲包含在一個集合中。與用戶文檔相關的統計信息對於嵌入式存儲具有100%的意義。簡單地說...用戶個人資料有統計資料。統計數據對其他任何收藏都沒有任何意義。

如果最終得到真正需要引用的集合,因爲許多不同的集合可能會引用單個文檔,那麼將它拆分爲集合並使用id引用是有意義的。當您在一個嵌入式文檔中更改某些內容時,如果開始考慮更新許多其他文檔,那麼遷移到獨特的集合可能會很好。這樣每個文檔只能引用一個id,它可以隨時更改其文檔數據。

+0

爲了補充說明,我覺得DDD中的'Aggregate Root'的概念(http://en.wikipedia.org/wiki/Domain-driven_design)非常適合這個討論。如果事情有意義的話,這當然是討論中要考慮的最重要的事情之一。嵌入式文檔的訪問模式,生命週期(即:UML複合與聚合討論)是其他幾種。 –

相關問題