2015-09-18 116 views
0

假設我需要設計一個數據模型,用於存儲人員的地址更改。我可以想出兩種方法來實現它:更新人員的文檔,或插入代表更改的新文檔。增長文檔vs插入新文檔

使用更新方法,每個人都有一個包含地址數組的文檔,並且在地址更改時將地址添加到數組中。

使用插入方法,每個人可能會有多個文檔。每份文件都代表有關人員的地址變更。

假設文檔中存儲的唯一人員信息是該人員的唯一標識符和地址。我對其進行了精確化處理,以便與插入方法的數據重複被認爲是微不足道的。

當MongoDB用作數據庫時,推薦使用哪種方法?

+0

哪種方法適合你?實際上,「嵌入」的整個概念主要針對如果你想在大多數情況下使用「大部分數據」,反之則是你想在大多數情況下使用「數據子集」。另一個基本約束是「大小」,因爲將數組增加到不可分配比例(即使在16MB BSON限制下)對性能不利。所以它確實是關於「你如何使用它」,而不是一般性建議或「做事方式」。做什麼最適合你。沒有澄清使用情況,沒有答案可以真正告訴你要選擇什麼。 –

回答

0

您的數據模型的設計應該根據您的應用需求來定型。

有以下幾點需要被照顧的同時更新現有文檔或插入一個新的文檔

更新現有文檔

優點之間進行選擇:

地址
  • 檢索是容易得多

缺點:

  • 文檔大小可能超過16MB。 MongoDB支持文件高達16MB的數據限制。

插入一個新的文檔

優點:

地址
  • 檢索僅僅是基於人的唯一標識符
  • 該文件的大小將永遠16MB

缺點:

  • 我們會爲每一個地址改變創建文檔最終
  • 查詢,以獲得個人信息與地址將是複雜

我會建議去更新現有文檔假設它不會超過數據限制。