2012-10-04 63 views
3

我瞭解到,Asp.Net的默認會話提供程序對於分佈式應用程序不是一個好的做法。所以我決定把asp.net的sessionprovider改成couchbase。但是當我嘗試選擇數據存儲桶時,我不確定要使用哪一個。我知道Couchbase是一個持久的no-sql數據庫,而memcached是一個緩存服務器。Couchbase Bucket vs Memcached Bucket for SessionProvider

使用couchbase存儲區代替memcached存儲區或反之亦然的優點和缺點是什麼?

我使用couchbase 2.0和https://github.com/couchbaselabs/couchbase-aspnet庫將couchbase轉換爲會話提供程序。

回答

7

無論是使用Couchbase桶或Memcached的桶,你會遇到類似的優勢。即使使用Couchbase存儲桶,文檔也存儲在RAM中。文件也先寫入RAM,然後異步寫入磁盤。所以性能應該是相似的。與其他進程外會話狀態解決方案(例如SQL Server)相比,Couchbase應該表現得更好。

除了性能之外(正如@DB_Chick指出的那樣),由於數據不會隨着服務器(假定啓用複製)而停止,您將能夠在發生節點故障時重新創建會話。

如果您將Couchbase存儲桶與Couchbase Server 2.0一起使用,那麼您將擁有能夠根據會話數據編寫map/reduce視圖(如果存儲JSON數據結構最簡單)的額外優勢。有了意見,你可以很容易地問:「我有多少活動會話?」

最後,您的會話數據仍然會隨着Couchbase存儲桶過期。在會話數據上設置過期時,Couchbase會在定期清理後臺或在過期後檢索項目時標記要刪除的項目。

+0

感謝您的回覆。這是一個很好的信息答案。 –

+0

這是否意味着您無法使用memcached存儲桶寫入視圖? –

+0

你知道什麼是Couchbase的持久性SLA?儘管如此,將數據保存在RAM中對於節點故障並不安全。如果在寫入磁盤之前節點崩潰,我們仍然會丟失數據。 couchbase如何解決這個問題? –

4

Couchbase存儲桶支持Couchbase特有的全部功能,包括聯機重新平衡(用於擴展羣集),持久性和複製以及故障轉移。這是推薦的存儲桶類型。

memcached存儲區設計爲僅支持核心memcached協議作爲內存中的高速緩存。因此,支持和功能僅限於獨立的memcached實現中的相同功能。

點擊此處瞭解詳情:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-architecture-buckets.html

+0

謝謝你的迴應。我瞭解couchbase bucket和memcached bucket之間的區別,但將會話數據存儲在持久存儲中會有什麼優勢。或者有沒有辦法將couchbase bucket配置更改爲僅使用內存? –