关于Java Cassandra Client,哪一个更好? CQL怎么样?

时间:2011-05-27 10:39:10

标签: cassandra kundera

我正在尝试使用Hive作为数据库开发应用程序,然后我也发现noSQL解决方案作为它的替代方案。

现在决定使用Cassandra进行开发,我的下一个问题是我应该使用哪个客户端?哪一个更好,Hector - 一个纯粹的java解决方案,还是带有JPA开发的Kundera?

我更喜欢赫克托,但我对昆德拉很好奇。有没有人使用昆德拉?哪个更好?


我对CQL(Cassandra查询语言)感到好奇。它可以与Hector集成吗?

11 个答案:

答案 0 :(得分:13)

Hector正在慢慢走向CQL集成。已经做了第一步,但由于API不稳定的经验,开发人员似乎推迟了新版本。 CQL API相当新,因为它应该几乎等同于SQL语法。我在CRUD操作中做了一些基本步骤,以验证是否可以通过CQL写入和读取数据。

尽管如此,CQL JAR现在不像标准JDBC驱动程序那样开箱即用,并且错过了一些重要的功能方面。看一下或多或少难以理解的thrift API和不那么简单的hector API,我相信CQL将成为Cassandra 0.8.1和1.0版本中最先进的访问API ,节俭将保留一段时间的本地原始访问。

两种API之间的竞争与Hector的决定无关。 Hector本身提供了群集中的故障和连接处理等附加服务。这些功能既不是节俭也不是CQL。

我真的不相信所有其他O / R地图制作者,甚至那些声称提供完整JPA的人。我无法想象它应该如何运作。

答案 1 :(得分:7)

回答关于客户的问题--Hector本质上提供对Cassandra原生API(列,列族,行等)的访问,而Kundera旨在隐藏这些细节并提供对象 - 数据库映射。

因此,Kundera可能更容易将一系列Java对象快速持久化到Cassandra中 - 但可能无法提供有效的映射,可能会失去一些noSQL所提供的性能。

Hector希望您适应Cassandra数据模型 - 这将是更难的工作,但可能会提供更高的性能。

答案 2 :(得分:6)

现在有一个新客户端Astyanax,由Netflix于2012年1月发布。

  

“Astyanax是Java Cassandra的客户端。它借鉴了许多概念   Hector但在连接池实现方面也存在分歧   客户端API。主要设计考虑因素之一是提供一个   连接池和Cassandra API之间的干净抽象   每个都可以单独定制和改进。 Astyanax提供   一个流畅的样式API,引导调用者缩小查询范围   列的关键以及为更复杂的用例提供查询   我们遇到过的。 Astyanax的运营效益超过了   Hector包括更低的延迟,更短的延迟差异和更好的   错误处理。“

Astyanax的源代码托管在Github:https://github.com/Netflix/astyanax

答案 3 :(得分:4)

有关在Cassandra和Hector中使用CQL的详细信息,请参阅: https://github.com/rantav/hector/wiki/Using-CQL

以下邮件列表线程很好地讨论了我们将CQL作为API的用途: http://groups.google.com/group/hector-users/browse_thread/thread/540dc9c3908fbb44/f5ee488f2178e2f4

答案 4 :(得分:4)

为了完整起见,我认为Pelops库也应该被提及。 Hector似乎是最常用的,但Pelops有一个更简单的API。 Pelops不支持CQL。

来自Ruby我发现两者都非常冗长和必要。

答案 5 :(得分:3)

Kundera不再依赖于Solandra的索引方法。它使您现在可以使用Cassandra提供的二级索引支持,并且它为您提供了一种通过OPP运行jpa查询的方法(如范围查询等)。我们正在努力启用本机CQL支持。

看看: http://mevivs.wordpress.com/2012/02/13/how-to-crud-and-jpa-association-handling-using-kundera/

了解更多详情。

-Vivek

答案 6 :(得分:2)

没有与hector处于同一级别的java客户端,hector是最好的,并且hector端正在进行工作以支持cql。我本月在github上看到了针对hector的cql提交,但不知道它是最终状态。您可以向heector用户组http://groups.google.com/group/hector-users

询问

hector中还有一个非常简单的对象映射器 https://github.com/rantav/hector/wiki/Hector-Object-Mapper-%28HOM%29

我最好,

Serdar Irmak

答案 7 :(得分:2)

Kundera 2.0.4发布:

此版本中的主要更改:

  • 跨数据存储持久性(很容易通过nosql缩小现有的mysql应用程序)
  • 支持关系数据库(例如Mysql等)
  • 用基于lucene的索引替换solandra。
  • 为双向关联添加了支持。
  • 性能改进修复。

我们进行了测试,并在6分钟内完成了100万次插入,并进行了适当的索引。

的Vivek

答案 8 :(得分:1)

我还没有尝试Hector,但我参与了最新的Kundera 2.0.1版本。我建议你试一试。它自成立以来发生了重大变化,您可以看到许多新功能被添加并修复了错误。目前它支持JPA 1.0和Cassandra 0.7.6,但我们计划很快增加对Cassandra 0.8和JPA 2.0的支持。这里有一个很好的例子:https://github.com/impetus-opensource/Kundera/wiki/Getting-started可以帮助你开始。

答案 9 :(得分:1)

Astyanax api生成人类可读的代码,并且包含连接池。

答案 10 :(得分:0)

对cassandra的CQL支持已经集成在kundera 2.0.6中(尚未发布)。它允许现在将CQL作为nativequery执行。

-Vivek