2013-03-05 83 views
2

在問題和評論...的情況下,評論本身並不存在,但是作爲嵌套元素存儲在其父問題文檔中......這些評論當然可以建立起來數百和數百條...當我加載一個問題時,我不會招致性能損失嗎?這種加載操作是否會加載所有數百和數百條評論?爲了加載問題,我可以運行哪些查詢(應該),但是隻加載前10個註釋,以便能夠根據需要加載另一個「註釋」頁面?RavenDB嵌套文檔設計和性能

還是RavenDB應用延遲加載,因爲它根本不加載評論,直到我訪問Question實例的Comments屬性?即使如此......我可以控制它「懶惰」以分頁方式加載評論嗎?

此外,如何在不首先加載問題(及其所有評論)的情況下向問題添加新評論?

+0

在您的[其他問題](http://stackoverflow.com/a/15210218/634824)中查看我的意見。如果您有關於理解建模的其他問題,我想請您參考[RavenDB Google Group](https://groups.google.com/forum/?fromgroups#!forum/ravendb)。讓我們繼續爲特定的代碼堆棧溢出。謝謝。 – 2013-03-05 14:04:08

+2

恕我直言,這個問題非常適合SO – jgauffin 2013-03-05 14:08:59

回答

2

加載文檔時,通常需要加載所有內容(即博客中的詳細信息頁面)。

對於索引頁面(列出所有博客文章),您可以創建一個索引號碼map/reduce

至於保存新的評論,你可能會問自己你多久這樣做?在大多數網站中,讀取比寫入要頻繁得多。因此,在查看整個圖片時,加載整個博客的性能損失並不那麼重要。

但是,如果您確實希望獲得大量評論,稍後可能需要重新設計您的應用程序以對根集合進行評論。但是,直到它被證明是一個性能問題時才這樣做。 (由於RavenDB的無模式特性,移動註釋也很容易)。

+0

所以只需要清楚,答案是,如果您存儲具有嵌套集合的文檔,每次加載文檔時,整個嵌套集合都會加載它? – 2013-03-06 02:18:00

+0

是的,除非您已通過索引顯式創建索引和查詢。集合是文檔的一部分,所以它被加載是很自然的。 – jgauffin 2013-03-06 05:36:30