2017-10-17 29 views
0

我有一個MongoDB數據庫,它有兩個主要集合。數據庫存儲不時到達的原始數據以及Web應用程序使用的已處理數據。有關MongoDB中主索引的良好做法

  • RAW:這裏我存儲了永遠不應該被修改的原始數據。只有當新的原始數據到達時,纔可以插入新的文檔。爲了舉例,我們可以假定這個集合中的每個文檔都對應一個產品。
  • PRODUCTS:這裏我存儲了也對應於產品的文檔(我在RAW中存儲的同一組產品,但是這裏的產品有一些額外的字段)。一般的想法是,一旦新的原始數據到達,新的文檔也被插入到這個集合中,但是首先我計算一些額外的度量標準並向新文檔添加額外的字段。這個集合還與Web應用程序通信,用戶不僅可以瀏覽數據,還可以修改某些字段(這是我希望RAW與Web應用程序完全分離的原因之一)。

因此,這裏的問題:我應該在兩個集合單獨ObjectId主索引(所以他們_id字段之間沒有關係),或者是好於兩個集合使用相同的_id

這在我看來,第二種方法可能會更好,因爲它節省了我的PRODUCTS集合中建立一個索引(否則我將不得不維持兩個_id和其他一些領域的指標,通過它我就可以將文檔從地圖PRODUCTSRAW)。

但是,我也相信這個策略可能存在問題,我沒有看到。

所以,我將不勝感激這個問題的任何提示。

回答

0

根據我的理解,PRODUCTS集合將包含來自RAW集合的條目。在這種情況下,我看不到在PRODUCT集合中重複使用RAW集合的_id字段的任何問題。

話雖如此,最好用您的應用程序和您的預期使用模式來測試此設計。從MongoDB方面來說,_id只需要在一個集合中唯一,因此跨兩個不同集合的重複_id條目不會造成問題。如果對_id值有任何疑惑,它可能發生在應用層而不是數據庫層。

+0

謝謝!我想我會堅持在兩個集合中重複使用相同的'_id',因爲我需要維護它們之間的映射,所以我可以很容易地判斷'RAW'的哪個產品尚未移動到'PRODUCTS'。 – sztal