我目前正在启动一个使用Cassandra Apache的项目。所以我对从Java访问我的数据库cassandra很感兴趣。为此,我用赫克托·卡桑德拉。但是,我对通过Hector或JDBC进行访问之间的区别有什么疑问(具体来说是:https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/)。
我相信以下几点(虽然我不确定我是否正确):
如果有人能帮助我,告诉我在前面的行中我是否正确/错误,以及两者之间是否有更多的差异,我将非常感激(Hector和JDBC Cassandra)。
提前感谢!
发布于 2013-09-04 11:17:51
官方的Cassandra驱动程序(https://github.com/datastax/java-driver)可能是一个新项目的最佳选择(IMHO,唯一的选择),原因如下:
新特征
所有其他Cassandra客户端(Hector、Astyanax等)都是基于遗留的Thrift协议的。RPC“每个请求一个响应”模型有严重的限制,例如,它不允许在单个连接或流大ResultSets中同时处理多个请求。
因此,DataStax开发了一种没有RPC限制的新协议。节约API不会获得新的特性,它只为向后兼容性而保留。相反,Java驱动程序是积极开发的,以结合Cassandra2.0的新特性,如条件更新、批处理准备语句等。新特性的概述如下:http://www.datastax.com/dev/blog/cql-in-cassandra-2-0
便利性
在早期的卡桑德拉时代(0.7),在我们的公司,我们已经使用了内部低水平的色拉客户。后来,我们在各种项目中使用了Hector、Pelops和Astyanax。我可以说,基于Java驱动程序的客户端在我看来是最简单和最干净的。
性能
我们对Cassandra Java驱动程序与其他客户端进行了一些性能测试。在大多数情况下,性能大致相同。但是,在某些情况下,Cassandra Java驱动程序由于其异步特性而明显优于其他客户端。
顺便说一句,有几个相关的问题有很好的答案:
编辑:当我写这篇文章时,我不知道在另一个答案中提到的阿基里斯(https://github.com/doanduyhai/Achilles)有通过Java工作的CQL实现。为了同样的完整性,我必须说,在CQL之上的阿喀琉斯的DAO可能(或有一天会成为)可行的替代普通CQL通过Java驱动程序。
发布于 2013-09-03 19:44:27
发布于 2013-09-03 18:13:59
赫克托确实是一个更高级的API。在内部,它将使用Cassandra的Thrift来执行它的功能。它不会将它们转换为等效的CQL调用。但是它的API也提供访问到CQL。在这种情况下,它将把CQL (通过Th深层)传递给Cassandra的CQL API。
Cassandra中的CQL是一种类似SQL的语言,它通过Cassandra工作。因此,它在使用Cassandra方面并没有提供比API更多的功能,但确实使它有时更容易使用。如果您正在考虑使用赫克托,我也会看一看阿斯泰纳,这是一个较新的针对Cassandra的高级Java。
https://stackoverflow.com/questions/18598745
复制相似问题