2011-09-09 66 views
2

我正在開發,需要大量的用戶是在相同的「宇宙」,那裏有很多常用的查詢會發生在Web應用程序:即在某一箱區域的客戶Cassandra適合需要頻繁查詢(讀/寫)的系統嗎?

  • 頻繁查找(X1,X2,Y1和Y2之間)的客戶
  • 的位置更新客戶端
  • 頻繁的聊天消息
  • 頻繁的客戶端
  • 頻繁的連接和新的斷開和老客戶
  • 0狀態更新

我相信我的節點可以擁有足夠的內存目前的在線用戶是在RAM中。這就是我最初考慮Redis的原因。不過,我決定Redis的是這裏不適用,因爲:

  • 有故障(一個主服務器)
  • 只有主服務器可以寫,如果一個人有40個節點,然後39名奴隸將不得不單點使一個主寫每個條目

卡桑德拉似乎解決了這些問題。

然而,就是卡桑德拉也適合我頻繁的查詢?

+0

說「頻繁」意味着什麼是有用的。數十秒的更新,還是數千次? –

+0

@Malcolm,每個客戶端,每個節點還是整個集羣? – Tom

+0

對於每種更新類型,它們在系統中的發生頻率如何?每個客戶端和節點值取決於您的設置假設。 –

回答

2

卡桑德拉優化寫入超過讀取(被昂貴相比寫入的讀取),但它仍然可以保持較高的同時讀寫吞吐量。

隨着你應該能夠做你想做的高頻率,這取決於您的集羣有多大右列家庭結構。

個人而言,我會使用Redis的用於緩存的大部分信息,只從卡桑德拉的高速緩存未命中讀取。

+0

Twitter和Facebook使用Casandra。你知道他們是否也使用它來查找推文等,或者他們是否使用了不同的技術,例如將其與redis結合使用? redis組合對我來說似乎非常複雜。 – Tom

+0

我沒有爲任何一方工作,所以不能肯定地說,但如果他們沒有在前面使用緩存,我會驚訝。真的,這就是所有的Redis--一個帶有一些漂亮數據結構的內存緩存。 –

+0

當redis只能有一個寫入的主機時,如何將redis用作可伸縮系統的內存緩存?由於從服務器無法寫入,所以cassandra數據庫中的所有更改都必須由redis主服務器寫入redis。現在我們又回到了一個失敗點以及一個非縮放系統。我不是在這裏跟蹤你嗎? – Tom

2

卡桑德拉絕對是處理寫一個極好的解決方案,但如果你能告訴你的讀取負載話,絕對可以期待一個確切的答案,但一般讀也不錯,只要你有足夠的RAM。

您所描述的用戶案例似乎包括很多連接..

你有足夠的理由從發育階段右側採用的NoSQL解決方案?因爲Cassandra基本上是需要高可擴展性的設置的解決方案,但是以犧牲反規範化和犧牲連接爲代價。換句話說,你需要更高的磁盤空間,但CPU很少。

或者你有沒有完成你的數據庫設計和明顯的方案(雖然卡桑德拉不是模式綁定),它滿足你所有的查詢,特別是讀取查詢要求? (它的v.imp)

+0

「。這與使用Redis或Memcache和Cassandra一起比較起來如何? – Tom