2013-07-29 65 views
0

我想使用MongoDB在我們的服務中記錄所有用戶的活動日誌。嵌入不斷增長的文檔

目前,我們有一個結構如下:

{ 
    '_id' : 'user_id', 
    'activites' : [ 
     {time : blah blah, action : blah blah, ...}, 
     {time : blah blah, action : blah blah, ...}, 
     {time : blah blah, action : blah blah, ...}, 
    ] 
} 

但我們發現嵌入式文件業績增長在更新性能放緩。

現在我們正在考慮更改數據模式,即將嵌入式文檔遷移到單獨的集合以及使用參考模型。

如果我們改變結構,但是,仍然存在問題。

(1)#的引用仍在增長。我們可以避免性能問題嗎? (2)如果我們停止使用參考,選擇性能會降低。

有什麼好主意?

回答

0

由於文檔的大小(16MB)有限制,因此將數據存儲在單個文檔中的情況一直很嚴重。

我會建議你剛纔提到USER_ID在activites收集,如:

{ 
    '_id': 'activity_id', 
    'user_id': 'user_id', 
    'time': ..., 
    'action: ..., 
    ... 
} 

確保指數增加了對「USER_ID」,如果你總是查詢在多​​個領域裏,如{USER_ID:USER_ID ,時間:{$ gt:blah blah}},在查詢順序後的所有字段上創建索引,在這種情況下:(user_id:1,time:-1)(如果您總是對time DESCENDING排序)