我目前正在启动一个使用 Cassandra Apache 的项目。所以我对从 Java 访问我的数据库 cassandra 很感兴趣。为此,我使用的是 Hector Cassandra。但是,我对通过 Hector 或 JDBC Cassandra 访问之间的区别有一些疑问(特别是: https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/ )。
我相信以下内容(尽管我不确定我是否正确):
如果有人可以帮助我并告诉我我在前面几行中是否正确/错误以及两者(Hector 和 JDBC Cassandra)之间的更多差异,我将不胜感激。
预先感谢!
最佳答案
官方 Cassandra Java 驱动程序(https://github.com/datastax/java-driver)可能是新项目的最佳(恕我直言,唯一的)选择,原因如下:
新功能
所有其他 Cassandra 客户端(Hector、Astyanax 等)都基于旧的 Thrift RPC 协议(protocol)。 RPC“一个请求一个响应”模型有严重的限制,例如它不允许在单个连接中同时处理多个请求或流式传输大型结果集。
因此,DataStax 开发了一种没有 RPC 限制的新协议(protocol)。 Thrift API 不会获得新功能,它只是为了向后兼容而保留的。相比之下,Java 驱动程序正在积极开发以结合 Cassandra 2.0 的新特性,如条件更新、批处理准备语句等。新特性的概述在这里:http://www.datastax.com/dev/blog/cql-in-cassandra-2-0
方便
在我们公司的早期 Cassandra 时代(0.7),我们使用了内部低级 Thrift 客户端。后来我们在各种项目中使用了 Hector、Pelops 和 Astyanax。我可以说基于 Java Driver 的客户端在我看来是最简单和干净的。
表现
我们对 Cassandra Java Driver 与其他客户端进行了一些性能测试。在大多数情况下,性能大致相同。但是,在某些情况下,Cassandra Java 驱动程序由于其异步特性而明显优于其他客户端。
顺便说一句,有几个相关问题的答案很好:
编辑:当我写这篇文章时,我不知道另一个答案中提到的 Achilles ( https://github.com/doanduyhai/Achilles ) 具有通过 Java 驱动程序工作的 CQL 实现。出于同样的完整性,我必须说,基于 CQL 的 Achilles 的 DAO 可能(或可能有一天成为)通过 Java 驱动程序替代纯 CQL 的可行方案。
关于cassandra - Hector Cassandra 和 JDBC 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598745/