2011-08-01 62 views
3

RavenDB(具有查詢功能的.Net JSON存儲存儲分區)在其自身控制下(通過其自己的存儲引擎Munin)提供積極的緩存/內存管理,配置參數用於調整各種緩存大小等...谷歌小組認爲,在未調整參數(具有足夠大小的數據庫/索引)的結果之前(可能不是最新版本的情況)偶然的內存不足異常。RavenDb vs CouchDb在內存管理方法

CouchDB似乎採取了不同的方法,並將緩存留給操作系統。這意味着當我GET/db1/doc-id-1時,它必須在文件讀取操作方面對操作系統由於其自己的緩存而優化掉的文件系統進行編程。同樣,我相信對於視圖和減少結果(b樹的多個部分需要根據範圍從磁盤加載/計算)這是相同的。

後者似乎比我優越,操作系統已經從緩存/尋呼等多年的演變中走出來了,來自其他服務的壓力可以平衡內存。

首先, 我的理解是否正確? CouchDB的方法是基於Unix的操作系統獨特的(儘管我看到他們有一個Windows端口)? 是否有一個.Net DB無法依靠操作系統優化文件讀取等原因。 每種方法的缺點和優勢都會影響構建數據存儲的選擇?

附註:我認爲Redis的是一樣的只是保持該指數在內存中,每個GET KEY是磁盤命中(這要麼不打盤頭或不依賴於操作系統的文件緩存)

回答

2

Jia93, 我們工作的原因之一就是我們在圖層之間有更強的分離。 CouchDB與我們所做的有很多相同的優化(將內容保存在mem中),但是它正在直接暴露給應用程序的BTree結構之上。

緩存結果的另一個原因是爲了避免在每個請求上解析json的成本。

+0

CouchDB大量使用操作系統文件系統緩存來提升性能,同時我看到RavenDB在其自己的進程空間中顯式緩存了一些東西。因此,當系統(來自其他進程,如mysql,apache,IIS等)存在壓力時,OS文件系統緩存會減少,但CouchDB的內存使用量保持不變。 – jia93

+0

我可以看到避免從RavenDB方法解析json的好處 – jia93

+0

.Net/RavenDB提供掛鉤來檢測何時資源緊張以減少緩存,還是使用軟/弱引用系統? – jia93