2012-01-26 45 views
3

我想測試幾個Cassandra驅動程序(如節儉和avro)?如何測試Cassandra的性能?

什麼測試應該最好定義最性能連接方案?

(大多數表現可能意味着 - 最快的寫入/讀取)。

預先感謝您。

回答

8

首先,對於驅動程序,我不擔心像「Thrift」或「Avro」這樣的事情,因爲底層RPC機制是實現細節。也就是說,值得注意的是Avro RPC是一個短暫的實驗,並且不再出現在Cassandra的任何現代版本中。

您選擇的Cassandra> = 0.8.0版本的接口歸結爲RPC接口(Thrift)或CQL的第三方封裝器。

CQL是一種SQL類似的查詢語言,可以使寫入應用程序變得更加簡單。如果你剛剛開始,我肯定會建議看看它。

對於RPC包裝,選項的電流(ISH)列表可以卡桑德拉wiki的ClientOptions頁面上找到,並CQL驅動程序可以在谷歌代碼/ Apache的額外主辦,(標記卡桑德拉)。

至於這兩個接口中哪一個速度最快,簡短的答案是:Thrift RPC更快。 但是,差異很小(〜10%),並且限於非索引插入(所有其他操作在性能上都相當)。此外,隨着Cassandra 1.1(3月份發佈)的發佈,CQL將支持準備好的語句,使得CQL在整個板上的速度更快,達到,速度提高了16%。

對於與當前cassandra版本相關的某些CQL/Thrift性能結果,請參見this post。對於適用於即將發佈的1.1版本的結果,請參閱附加到此Cassandra JIRA issue的結果(向下滾動)。

這就是說,您應該始終在儘可能接近您的生產環境的環境中進行自己的測試,使用與您期望從應用程序中看到的結果極其相似的操作混合。

+0

謝謝你的回答!實際上,我們遇到了這個問題 - 我們得到了幾個Ruby應用程序<-> ruby​​ gem'thrift'< - thrift rpc-> cassandra,我們正在爲'節儉'gem而煩惱,因爲它並不總是提供我們需要的性能,所以我們正在尋找可能的替代方法,以從ruby或(可能的解決方案)從java中使用cassandra(因爲如果需要的話,我們可以使用jruby)。 – Sergey

+0

因此,目前所有針對ruby的cql實現都使用節儉gem,這使得在Cassandra 1.1中引入的cql特性對我們來說是不必要的。 – Sergey

+0

另外,我發現所有CQL驅動程序當前都使用Thrift作爲RPC堆棧,所以,我很好奇 - 爲什麼CQL在1.1之後擊敗Thrift? – Sergey