2011-03-28 73 views
0

我有一個應用程序,客戶可以通過向我們擁有的各種域對象添加自定義字段來部分定義他們的模式。我們正在尋找這些自定義字段的趨勢數據。我一直在考慮以對象上列出的變化格式存儲數據。MongoDB For Trending Data

{ 
    _id: "id", 
    custom1: 2, 
    changes: { 
      '2011-3-25': { custom1: 1 } 
      } 
} 

這顯然必須小於最大文檔大小(16mb),我認爲這在我們所擁有的變化量範圍內。

另一種方法是對每一個對象變化的多個記錄:

{ 
    _id: "id", 
    custom1: 1, 
    changeTime: '2011-3-25' 
} 

這沒有文件限制,但會有更多的記錄,需要更多的工作,以獲得富於變化的一組記錄。

你會選擇哪一個?

回答

1

我想如果它將保持在16MB的限制內,我會尋找單個文檔路徑。這樣,加載記錄只需一次讀取,而且所有更改都應該相當快。在文檔中列出的更改感覺是模擬數據的自然方式。

在這種情況下,特別是如果它不是我以前做過的事情,我會嘗試敲一個基準來測試方法 - 這樣,每種方法的優缺點/性能都會呈現給您並且(希望)能讓你對你選擇的方法充滿信心。