我在一個Asp.net MVC 4應用程序中使用Nhibernet和SysCache提供程序的二級緩存。在某處我發現SysCache使用ASP.Net默認緩存系統來存儲緩存項目。爲了減少使用我有限的RAM,我實現了自定義緩存提供程序,它將數據存儲在MongoDB中。NHibernate的SysCache存儲
現在我的問題是,因爲我正在使用我的自定義緩存提供程序使用mongodb,將存儲nhibernet二級緩存數據在哪裏?是由我的自定義緩存提供程序在mongodb中,還是在RAM中?順便說一下,我的最終目標是,我想使用SysCache或任何其他免費緩存提供程序的NHibernet二級緩存,但不想將緩存項存儲在RAM而不是mongodb中。請給出一個更好的建議來實現它。
方面
哈比卜
嗨,馬丁,謝謝你的回答。順便說一下,我已經爲Asp.Net實現了自定義緩存提供程序,以將我的站點緩存數據存儲在MongoDb中,而不是Nhibernet二級緩存提供程序。但是我有興趣知道,因爲Nhibernet SysCache 2 Provider使用Asp.net Cache系統緩存nhibernet數據,它會將數據存儲在我的mongodb中,因爲我的站點將緩存數據存儲在mongodb中? –
其實我對錶演不太確定。但有些人建議將緩存和會話狀態數據存儲在NoSql類型數據庫(如mongodb)中以獲得更好的性能,而不是像sqlserver那樣存儲在昂貴的RDBMS數據庫中。我知道InProc是最佳性能的最佳選擇,但RAM內存對我來說很貴。另一方面,它可以幫助基於webfarm的主機在服務器實例更改時丟失緩存或sessionstate數據。請糾正我,如果我錯了,或者建議我一個更好的解決方案,如果你有。 –
我不能回答你的第一個問題,但恕我直言,是的:-)有關SQL與NoSQL的問題取決於你的數據結構和你的查詢目的。 SQL使用關係分解,並且一旦你想執行查詢,比如'SELECT something FROM ... JOIN ...'等,最好的方法就是使用像MySQL這樣的RDBMS。另一方面,當你想存儲一個文件時,例如JSON,最好的選擇是使用Mongo,因爲它支持簡單的查詢到特定的文檔。但我不得不說,你可以完美地使用MySQL來存儲blob數據。我做了一些性能測試,數字 –