新的Cassandra项目 - Astyanax还是Java Driver?

su-*_*su- 16 java cassandra astyanax datastax-java-driver

我正在与Cassandra开始一个新项目(并计划使用最新的稳定版(1.2.x)).我尝试了几种不同的Java库,比如Hector,Astyanax,Cassandra-jdbc ......

其中,(简而言之)我的选择是Astyanax.但后来我也发现并尝试了DataStax的Java驱动程序,它支持新的CQL二进制协议,如果你只使用CQL则更加清晰.似乎版本1.0.0 GA即将发布.

你会推荐哪一个?谢谢.

Lyu*_*rov 19

我建议你使用基于cql3的驱动程序.有些选择是JDBC驱动程序,甚至是更好的Datastax驱动程序,它支持异步连接.您可能必须自己构建datastax的驱动程序,但这可以通过使用maven轻松完成.

Thrift不会在Cassandra中获得任何新功能,它被保留用于向后兼容性,并且大多数C*社区成员建议使用基于cql的驱动程序用于新项目:

如上所述,我们认为CQL3是一个比thrift API更简单,整体更好的Cassandra API.因此,鼓励新项目/应用程序使用CQL3

- 来源

此外,CQL的性能也在迅速提升.以下是一些过时的基准测试.
UPDATE

由于答案是写的,因此为驱动程序创建了一个maven中央存储库,所以现在使用它只需将依赖项添加到maven:

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-parent</artifactId>
    <version>1.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


abh*_*bhi 9

我个人使用了Hector,Astyanax,Pelops,Fluent Cassandra,Datastax的Driver和Pycassa,在使用了这么多API之后我终于意识到Astyanax最适合我(我个人考虑).

我在astyanax中找到的功能与联盟中的其他功能区别开来

  • 易于使用API
  • 复合柱支持
  • 连接池
  • 潜伏
  • 文档
  • 更新

  • Astyanax +1.CQL并不容易 - 它只是接口:您可以简单地编写未执行的查询并遇到麻烦,因为它会使您成为关系数据库并且不会强迫您真正理解nosql存储的语义. (9认同)
  • Hector和datastax的驱动程序支持复合列(不确定其他列),我会说CQL比Astyanax更容易使用.还有节俭,因此CQL3应该用于新项目. (8认同)
  • 我知道伙伴,实际上我的考虑是易于访问.是的CQL始终是一个更容易的选择,并将保持这样(众所周知的事实RDBMS背景),我可以保证,即使最大百分比的Astyanax用户使用他们的API的CQL语句. (2认同)

小智 6

我用过Astyanax.它具有良好的文档和易于使用,前提是您编写的代码比CQL多5倍.

现在我正在使用CQL,因为我曾与之合作的人还没有完全掌握Astyanax代码 - 为什么他们必须为列名编写类.如果你不使用Astyanax或Hector,我想你永远不会理解Cassandra的内部结构.