2013-05-21 44 views
0

我必須在MongoDB數據庫中建模數據。 我的數據是文章和評論,所以我已經想好了技術途徑有兩個:MongoDB:嵌入式文檔與多個集合

  1. 1嵌入在每個狀態的狀態

  2. 1集1個集的評論

    評論的狀態採集

想象一下,從用戶體驗的角度來看,用戶看到的是狀態列表,他有時會要求查看給定狀態的評論。 也考慮到用戶可能會要求查看給定用戶的評論:如果評論被嵌入到狀態中,那麼檢索這些信息可能會更加昂貴。

你建議哪種解決方案?

謝謝!

+0

可能的重複[一個簡單的mongodb問題:嵌入?或參考?](http://stackoverflow.com/questions/5373198/a-simple-mongodb-question-embed-or-reference) – WiredPrairie

回答

0

這取決於評論數量和請求的真正頻率。因爲如果你會有一些評論,你不應該考慮它。另外,如果您使用兩個集合,查詢將會更加複雜,並且大量的評論集合將會比一個集合中的一個選擇慢。實際上,非規範化是將數據存儲在MongoDB中的好方法。

0

通過查看解決方案和相關查詢,我認爲,您必須考慮查詢類型發生的頻率。有一點是適用的,一個設計不能解決所有問題而不會引起某些問題。例如,如果實時查看與地位相關的評論的人員比較多,則可以查看來自用戶的所有評論。我認爲將評論嵌入到狀態中將會有更好的用戶體驗。由於MongoDB的允許子文檔的索引,如果你能有這種模式

  Status : " I am good", 
     Comments : [{ Comment : "great" , by : "UserOne" } , [{ Comment : "great" , by : "UserOne" }] 

你可以索引的Comments.by因此用戶搜索的所有評論也將是不錯的。在獲取狀態的同時,您可以添加評論並從緩存中獲取評論,以使用戶體驗更好。