2012-01-25 89 views
6

假設我有誰都有一個ID的用戶,我想存儲的歷史記錄(文件),該用戶的每一天,什麼是更好的:MongoDB歷史數據存儲 - 最佳實踐?

  • 創建一個新文檔的每個記錄和搜索用戶ID;或
  • 不斷更新並將該數據嵌入到隨時間不斷增長的單個用戶文檔中?

大多數情況下,我只想爲用戶檢索當前文檔,但所有記錄都應該可以隨時訪問,而不需要超長的搜索/查詢。

+0

GivEn大多數時候你想要的只是當前的文件,你應該更有興趣能夠檢索* that *「沒有超長的搜索/查詢」 – APC

+0

是的,這是我的想法,但只是想確保這實際上是正確的方法(也感謝編輯) –

回答

3

有很多變數可以影響這樣的決定。一個大文件似乎最明顯,只要它不會增長到不切實際的大或甚至不允許的大小(請注意,一個文檔最多可以有16MB大小)。

爲每個條目使用文檔也是完全可行的,並且提供了創建適當的索引不應導致查詢緩慢。

4

文檔的大小是有限制的。它是(從v1.8開始)16 MB。所以,如果你更新&嵌入,你可以簡單地用完房間。另外,mongo根據集合中的平均文檔大小分配文檔空間。如果您不斷調整/調整大小,可能會對性能產生負面影響。

我認爲爲每個記錄創建新文檔要更安全,並且如果/當您想整理這些數據時,請在地圖/縮減作業中進行。

+3

1.8的大小限制是16MB;) –

+0

已更新。謝謝。 – z5h

+0

謝謝你的回答。由於兩個回覆質量都相同(恕我直言),我會將Remons標記爲正確,因爲截至目前您還有一個贊成票,而且他的積分也較少,希望您不要介意。你的回答仍然非常感謝。 –