2010-12-09 83 views
0

我正在爲目錄系統構建書籤存儲的Web應用程序。 我已經得到了這些集合設置:基礎數據庫(MongoDB)性能問題

  • 路徑(S)
    --->目錄(嵌入文檔)
    --->鏈接(嵌入式文件)

  • 用戶(S)

所以性能明智的,應該我:
- 用戶ID添加到生成的路徑
- 嵌入整個路徑收集到特定的用戶

我要挑選項2,但是,是的,我不知道......

編輯:
我還想着讓Ajax化的整個界面。所以,這意味着我將通過ajax從特定路徑(從登錄用戶)加載目錄和鏈接。這樣,速度更快,我不必觸摸用戶集合。也許這改變了事情?

就像我在評論中所說的,整個數據庫中的1個巨大的收集看起來有點奇怪。對?

回答

1

好MongoDB的主要目的是爲了支持冗餘data.I會建議第二選項是更好,因爲在你的情況是什麼,我覺得,如果你嵌入路徑收集到特定的用戶,然後通過使用只有你一個查詢可以獲取有關用戶的所有數據以及與路徑收集相關的所有數據。

如果你遵循第一個選項,那麼你必須觸發兩個分離查詢來獲取所有數據,這將增加你的工作。

由於mongodb將數據帶入RAM,因此在從一個集合中獲取數據後,您可以將其存儲到光標中,並從該光標數據中您可以從另一個集合中獲取數據。所以如果我們看到性能明智,我不認爲這會影響很多。

+0

感謝您的回答。似乎有點奇怪的壽',只有一個巨大的收集在數據庫中。不是嗎?哦,還有別的..我會編輯這個問題...... – Icid 2010-12-09 15:11:36

+1

@Icid邏輯上,根據你的存儲大小,你的數據庫可以增長到任意大小,所以如果你執行索引,那麼不用擔心這個和大量的集合。得到更快的結果。如果你想做索引,然後使用類似solr的東西,因爲mongodb也提供索引,但這會突然增加你的數據庫的操作負載。如果你仍然對第二種方法有疑問,那麼你可以採用第一種方法,並對光標進行第二次查詢,這是我之前解釋的。 – Rupeshit 2010-12-10 06:22:34

1

RE:編輯。如果您要將所有內容存儲在單個文檔中並使用嵌入式文檔,那麼當您進行查詢時,請確保您只需選擇所需的數據,否則將加載包含嵌入式文檔的整個文檔。