假設您有大量用戶(M)和大量文檔(N),並且您希望每個用戶都能夠將每個文檔標記爲讀或未讀(就像任何電子郵件系統一樣)。在MongoDB中表示這個最好的方法是什麼?或者其他任何文檔數據庫?MongoDB/NOSQL:處理郵件讀取/未讀狀態的最佳方法
有StackOverflow上幾個問題問這個問題,關係數據庫,但我沒有看到任何與建議文檔數據庫:
What's the most efficient way to remember read/unread status across multiple items?
Implementing an efficient system of "unread comments" counters
通常的答案涉及表上市用戶讀過的所有東西:(即用戶標識元組,文檔標識符),以及一些可能的最佳截止日期,允許標記全讀爲擦除數據庫並重新開始,因爲知道該日期之前的任何內容都是「讀取」。
那麼,MongoDB/NOSQL專家,你在實踐中看到了什麼方法來解決這個問題,他們是如何執行的?
謝謝,所以你的推薦基本上和關係案例中的'tuple/join'表是一樣的,對吧?您將這兩個消息和首選項存儲在同一個集合中的任何特定原因? – 2010-11-15 03:11:16
MongoDB的東西通常是讓你的對象更好的平坦。雖然它可以存儲嵌套結構,但在查詢或稍後進入這些結構以改變它們時,它並不是最好的。所以很多東西最終可能會看起來類似於關係,但是由於不使用表格而抽象程度較低。另外,我真的沒有理由將它們存儲在同一個集合中,而不喜歡擁有bazillion集合。如果你計劃擁有數百萬條消息,那麼使用不同的集合可能是明智的,這樣你就可以設置索引來更好地適應每個對象。 – Klinky 2010-11-15 04:46:57