2013-08-25 16 views
1

我在一個Asp.net MVC 4應用程序中使用Nhibernet和SysCache提供程序的二級緩存。在某處我發現SysCache使用ASP.Net默認緩存系統來存儲緩存項目。爲了減少使用我有限的RAM,我實現了自定義緩存提供程序,它將數據存儲在MongoDB中。NHibernate的SysCache存儲

現在我的問題是,因爲我正在使用我的自定義緩存提供程序使用mongodb,將存儲nhibernet二級緩存數據在哪裏?是由我的自定義緩存提供程序在mongodb中,還是在RAM中?順便說一下,我的最終目標是,我想使用SysCache或任何其他免費緩存提供程序的NHibernet二級緩存,但不想將緩存項存儲在RAM而不是mongodb中。請給出一個更好的建議來實現它。

方面

哈比卜

回答

1

現在的問題是,因爲我用我的自定義緩存提供商使用MongoDB的,哪裏會是存儲在nhibernet二級緩存的數據?

由於您已經開發了mongo的SLC,並且如果您更改了設置,數據可能會是mongo ...?

緩存的目的是提供比原始數據庫更快的獲取/獲取頻繁數據的方式。

您的方法對於正確使用有限內存非常有意義,但我不確定它是否會提高應用程序的性能,SLC的要求如何。

您將緩存的數據作爲文檔/ blob存儲在mongo中?您是否將性能與原始緩存和無緩存進行比較?

如果您的解決方案會成功,它需要開發mongo的緩存比您對RDBMS的原始查詢更好。這不一定是真實的默認情況下。取決於你使用的目的和查詢。

+0

嗨,馬丁,謝謝你的回答。順便說一下,我已經爲Asp.Net實現了自定義緩存提供程序,以將我的站點緩存數據存儲在MongoDb中,而不是Nhibernet二級緩存提供程序。但是我有興趣知道,因爲Nhibernet SysCache 2 Provider使用Asp.net Cache系統緩存nhibernet數據,它會將數據存儲在我的mongodb中,因爲我的站點將緩存數據存儲在mongodb中? –

+0

其實我對錶演不太確定。但有些人建議將緩存和會話狀態數據存儲在NoSql類型數據庫(如mongodb)中以獲得更好的性能,而不是像sqlserver那樣存儲在昂貴的RDBMS數據庫中。我知道InProc是最佳性能的最佳選擇,但RAM內存對我來說很貴。另一方面,它可以幫助基於webfarm的主機在服務器實例更改時丟失緩存或sessionstate數據。請糾正我,如果我錯了,或者建議我一個更好的解決方案,如果你有。 –

+0

我不能回答你的第一個問題,但恕我直言,是的:-)有關SQL與NoSQL的問題取決於你的數據結構和你的查詢目的。 SQL使用關係分解,並且一旦你想執行查詢,比如'SELECT something FROM ... JOIN ...'等,最好的方法就是使用像MySQL這樣的RDBMS。另一方面,當你想存儲一個文件時,例如JSON,最好的選擇是使用Mongo,因爲它支持簡單的查詢到特定的文檔。但我不得不說,你可以完美地使用MySQL來存儲blob數據。我做了一些性能測試,數字 –