Hector Cassandra和JDBC之间的差异

mol*_*mol 5 cassandra hector

我目前正在开始一个使用Cassandra Apache的项目.所以我很有兴趣从Java访问我的数据库cassandra.为此,我正在使用Hector Cassandra.但是,我对通过Hector或JDBC Cassandra(特别是https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/)访问之间的差异有些怀疑.

我相信以下(虽然我不确定我是否正确):

  • 双方之间的一个差异可能是不同级别(我认为赫克托Cassandra是更高层次的比JDBC卡桑德拉的API)的API?

  • 在JDBC卡桑德拉用于CQL用于访问/修改数据库,而赫卡桑德拉不使用CQL(仅使用提供了一种用于该方法).

我应该心存感激,如果有人能帮助我,并告诉我,如果我对/错在此前线和两个(赫克托和JDBC卡桑德拉)之间的较大差异.

预先感谢!

Wil*_*ire 11

官方Cassandra Java驱动程序(https://github.com/datastax/java-driver)可能是新项目的最佳选择(恕我直言,唯一),原因如下:

新功能

所有其他Cassandra客户端(Hector,Astyanax等)都基于传统的Thrift RPC协议.RPC"每个请求一个响应"模型具有严重的限制,例如,它不允许在单个连接或流式大型ResultSet中同时处理多个请求.

因此,DataStax开发了一种没有RPC限制的新协议.Thrift API不会获得新功能,它只是为了向后兼容而保留.相比之下,Java Driver正在积极开发,以结合Cassandra 2.0的新功能,如条件更新,批处理预处理语句等.新功能概述如下:http://www.datastax.com/dev/blog/cql -in-卡桑德拉-2-0

方便

在我们公司的Cassandra早期(0.7),我们使用了内部的低级Thrift客户端.后来我们在各种项目中使用了Hector,Pelops和Astyanax.我可以说基于Java Driver的客户端看起来最简单,最干净.

性能

我们对Cassandra Java Driver与其他客户端进行了一些性能测试.在大多数情况下,性能大致相同.但是,在某些情况下,Cassandra Java Driver由于其异步性质而明显优于其他客户端.

顺便说一下,有几个相关的问题,答案很好:

编辑:当我写这篇文章时,我不知道在另一个答案中提到的Achilles(https://github.com/doanduyhai/Achilles)具有通过Java Driver工作的CQL实现.为了完整性,我必须说Achilles在CQL之上的DAO可能(或者可能成为一天)通过Java Driver可以替代普通的CQL.


Mar*_*ano 2

Hector确实是一个更高级别的API。在内部,它将使用 Cassandra 的 Thrift API 来执行其功能。它不会将它们转换为等效的 CQL 调用。但它的 API 还提供对 CQL 的访问。在这种情况下,它将把 CQL(通过 Thrift)传递给 Cassandra 的 CQL API。

Cassandra 中的 CQL 是一种类似 SQL 的语言,通过 Cassandra API 运行。因此,在使用 Cassandra 时,除了 API 之外,它没有提供任何其他功能,但有时确实使其更易于使用。如果您正在考虑使用 Hector,我还会考虑Astyanax,它是 Cassandra 高级 Java API 的更新版本。