2012-01-06 102 views
0

我有兩個實體。具有多對多關係的用戶和項目。我會讀/查詢在mongodb中建立多對多關係的最佳方法是什麼?

  1. 項目通過用戶ID - 時間
  2. 用戶以產品編號50% - 的時間

書寫性能此事不到風度50%。

我應該如何存儲這些數據以獲得最佳性能?

  1. user:{id:1, items:[1,2,3,4,5]}和指數的項目
  2. 類似的項目即item:{id:1, users:[1,2,3,4,5]}
  3. 只有ID即重複數據和索引üser:{id:1, items:[1,2,3,4,5]} and item:{id:1, users:[1,2,3,4,5]}
+0

不知道你的應用程序如何工作,這是很難做出最好的區別;你最喜歡什麼?你的應用程序如何工作?你的閱讀在哪裏?你的寫作在哪裏? – Petrogad 2012-01-06 22:51:13

+0

正如我寫的,我將同時使用user_id和item_id進行讀取(查詢)。寫作表現不會改變 - 這是非常罕見的操作。 – yura 2012-01-06 23:31:25

回答

0

在你的情況,關係應同樣存放於如何你可以在關係數據庫中完成。您將擁有3個集合:一個用於用戶,一個用於項目,一個關係集合,每個文檔只有一個用戶 - 項目關係。

因此,任何查詢以獲取項目的用戶或反之亦然需要兩個查詢,其中一個到關係集合,一個到「目標」集合。這絕對是RDBMS更好的情況之一,但對大多數人來說這是一個公平的權衡,如果你正確地安裝了MongoDB,那麼這兩個查詢應該仍然是非常快的。

我不會推薦複製數據,除了增加的存儲需求,在一個理想的世界裏它可以工作,但是你很可能會遇到一致性問題。

相關問題