Cassandra Client Java API

ars*_*nal 48 java cassandra hector pelops astyanax

我最近开始使用Cassandra数据库.现在我正在评估Cassandra client我们应该推进哪些方面.

我已经在stackoverflow上看到关于哪个客户端用于Cassandra的各种帖子,但没有一个有非常确定的答案.

我的团队已经让我对此进行一些研究,并pros and consCassandra Client API’sJava中的每一个做出一定的研究.

正如我所提到的,我最近参与其中,Cassandra所以没有那么多想法为什么某些人选择Pelops client以及为什么某些人和Astyanax其他客户一起去.

我知道每个Cassandra客户的简短介绍,我的意思是我能够完成这项工作并开始阅读和写入Cassandra数据库.

以下是我到目前为止的信息.

CASSANDRA APIS

  • Hector(Production-Ready)
    最稳定的Java API,为黄金时段做好准备.

  • Astyanax(The Up and Comer)
    来自Netflix的干净Java API.它没有Hector广泛使用,但它是坚实的.


  • 符合JPA标准的Kundera(NoSQL ORM),当您想通过对象与Cassandra进行交互时,这很方便.
    这在一定程度上限制了您将无法拥有动态数量的列/名称等.但它确实允许您移植到ORM,或将存储集中到Cassandra以获得更多传统用途.

  • Pelops
    我只是简单地使用了Pelops.这是一个直接的API,但似乎没有它背后的动力.

  • PlayORM(没有约束的ORM?)
    我刚才听说过这个.看起来它试图通过引入JQL来解决传统的基于JPA的ORM和NoSQL之间的阻抗不匹配问题.看起来很有希望.

  • 节俭(避免我!)
    这是"低级"API.

以下是我们决定的优先事项Cassandra Client-

  • 首要任务是:低延迟开销,Asynch API以及生产环境的可靠性/稳定性.
    (例如,包含客户端的DAL中可以使用的用户友好的API).
  • 连接池和分区感知是其他一些很好的功能.
  • 能够检测到添加的任何新节点.
  • 良好的支持(如下院长指出)

任何人都可以对此提出一些想法吗?此外,每个Cassandra Client客户都可以满足我的要求的任何利弊也将有很大的帮助.

我相信,主要是我将围绕着Astyanax client or New Datastax client that uses Binary protocol我的研究基础到目前为止.但是没有某些信息可以支持我的研究并将其呈现给我的团队.

Astyanax客户端和New Datastax客户端(使用新的二进制协议)之间的任何比较都将有很大帮助.

这对我的研究有很大的帮助,并且会从过去使用不同客户的不同人那里获得很多相关知识.

Lyu*_*rov 23

Thrift正在成为一个传统的API:

首先,您应该知道Thrift API不会获得新功能; 它是为了向后兼容,而不是推荐用于新项目.
- 保罗

所以我会避免使用基于Thrift的API(只保留thrift以实现向后兼容).

在说如果你确实需要使用基于节俭的API我会去Astyanax.Astyanax非常易于使用(与其他节俭API相比,但我个人的经验是Datastax的驱动程序更容易).

那你应该看看Datastax的 API(和GitHub repo)?我不确定是否有任何已编译的API版本可供下载,但您可以使用Maven轻松构建它.此外,如果您查看GitHub repo的提交日志,它会经常进行更新.

该驱动程序专门使用CQL3并且是异步的,但要注意Cassandra 1.2是最早支持的版本.

性能
Astyanax基于节俭,Datastax的驱动器是二进制协议.以下是我在thrift和CQL之间可以找到的最新基准测试(注意这些基准测试肯定是过时的).但公平地说,这些基准测试中显示的性能差异很小.

Asynch支持
Datastax的异步支持是Astyanax的一个明显优势(Netflix 试图实施它但决定不这样做).

文档
我不能反对Netflix的wiki.文档非常好,并且经常更新.他们的wiki包含代码示例,如果需要查看代码,可以在源代码中找到测试.我努力寻找Datastax驱动程序的任何文档,但是在GitHub存储库中提供了测试,因此这是一个起点.

另外看看这个答案(好吧..不管我的那个)它研究了Thrift和CQL的一些优点/缺点.


Val*_*kou 8

我建议Cassandra http://www.datastax.com使用Datastax java驱动程序.

对于JPA之类的支持,请尝试我的映射工具. http://valchkou.com/cassandra-driver-mapping.html

注释驱动没有映射文件,没有脚本,没有配置文件.不需要DDL脚本.模式自动与实体定义同步.

使用范例:

   Entity entity = new Entity();
   mappingSession.save(entity);
   entity = mappingSession.get(Entity.class, id);
   mappingSession.delete(entity); 
Run Code Online (Sandbox Code Playgroud)

在maven中心可用

   <dependency>
      <groupId>com.valchkou.datastax</groupId>
      <artifactId>cassandra-driver-mapping</artifactId>          
    </dependency>
Run Code Online (Sandbox Code Playgroud)