我們目前有一個非常重要的Web分析應用程序,它從大量網站和商店中收集大量實時事件以供後續分析和報告使用。Cassandra和Couchbase之間的此用例的潛在折衷
我們最初的計劃體系結構涉及一組處理請求的Web服務器,並將所有數據寫入Cassandra集羣,同時更新大量用於實時聚合報告的計數器。我們還計劃直接在CassandraFS上使用hadoop(作爲HDFS的替代品 - 由datastax提供),以便本地運行駐留在Cassandra中的數據的Map Reduce作業以獲取更多涉及的分析。 MapR作業的輸出將會原生地寫回到Cassandra的ColumnFamilies中。 Hadoop map reduce在寫入繁重的主cassandra集羣的只讀副本上運行。這個想法是爲了避免多個數據跳躍,並在一個存儲庫中擁有分析的所有數據。
最近我們聽到並且遇到了管理和增長頻繁節點中斷和響應時間不佳的cassandra集羣的第一手問題。 Couchbase在響應時間和動態增長和管理羣集方面似乎要好得多。所以我們正在考慮用Couchbase替換Cassandra。
但是這帶來了一些問題。
Couchbase在大多數順序書寫沉重的情況下能夠很好地擴展嗎?我沒有看到我們的場景充分利用內存中的緩存,因爲正在編寫的原始數據很少回讀,只有彙總的度量標準。另外,當Couchbase需要非常頻繁地(或者所有時間)點擊磁盤來回寫數據時,會發生什麼情況?它最終會比Cassandra表現糟糕嗎?
Hadoop界面會發生什麼? Couchbase有其自己的縮小地圖功能,但我知道它們的範圍有限。我是否需要在CouchbaseDB和HDFS之間來回傳輸數據,以便能夠支持我的所有分析和報告,從單個數據庫中進行報告?