2012-01-26 46 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