关于Java Cassandra客户端,哪个更好?CQL如何?

17

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

现在决定使用Cassandra进行开发,我的下一个问题是选择哪个客户端? Hector——一个纯Java解决方案,还是像JPA一样开发的Kundera?

我更喜欢Hector,但我很想了解Kundera。有人使用过Kundera吗?哪个更好?


我对CQL(Cassandra查询语言)很感兴趣。它能与Hector集成吗?

11个回答

13

Hector正在慢慢地朝着CQL集成迈进。已经迈出了第一步,但由于经验不佳的API不稳定性,开发人员似乎推迟了新版本的发布。CQL API相当新,应该与SQL语法几乎等效。我进行了一些基本的CRUD操作,以验证数据是否可以通过CQL编写和读取。

然而,目前CQL JAR不能像标准JDBC驱动程序那样直接使用,缺少一些重要的功能方面。看着难以理解的thrift API和不太简单的hector API,我相信CQL将在Cassandra的0.8.1和1.0版本中作为最先进的访问API得到确认,而thrift将在一段时间内仍然是原生的、原始的访问方式。

这两个API之间的竞争与Hector的决策无关。Hector本身提供额外的服务,如故障和连接处理。这些功能既不是thrift也不是CQL所涉及的。

我并不真正相信其他所有O/R映射器,甚至那些声称提供全面的JPA。我无法想象这应该如何工作。


7
回答关于客户端的问题 - Hector基本上提供了访问Cassandra本地API(列、列族、行等)的方法,而Kundera旨在隐藏这些细节并提供对象-数据库映射。
因此,Kundera可能更容易快速将各种Java对象持久化到Cassandra中 - 但可能不提供有效的映射,可能会损失一些NoSQL方法提供的性能。
Hector希望您适应Cassandra数据模型 - 这将是更加艰苦的工作,但很可能会提供更好的性能。

1
谢谢您的回复,它真正开启了我的眼界。我想我会尝试深入了解Hector,并在我的应用程序中使用它。顺便问一下,CQL怎么样?它是另一个客户端API吗?它能与Hector集成吗?谢谢..:D - fahmi
5
请注意,Kundera 使用 Solandra 实现索引,这对于除全文搜索以外的任何内容都是错误的方法。 - jbellis

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

Astyanax是Java Cassandra客户端。它借鉴了许多Hector的概念,但在连接池实现以及客户端API方面有所偏差。其中一个主要的设计考虑是在连接池和Cassandra API之间提供清晰的抽象,以便可以分别定制和改进每个部分。Astyanax提供了流畅的样式API,引导调用者将查询从键缩小到列,并为我们遇到的更复杂的用例提供查询。与Hector相比,Astyanax的操作优势包括较低的延迟、降低的延迟方差和更好的错误处理。

源代码可在Github上托管: https://github.com/Netflix/astyanax

4
为了完整起见,我认为应该提到Pelops库。Hector似乎是最常用的,但Pelops具有更简单的API。Pelops不支持CQL。
作为来自Ruby的人,我发现两者都非常冗长和命令式。

4

3

2

1
谢谢您的回答,非常清晰并解答了我的问题。谢谢。 - fahmi

2

Kundera 2.0.4发布:

此版本的主要更改:

  • 跨数据存储持久性(易于将现有的mysql应用程序迁移到nosql)
  • 支持关系型数据库(如Mysql等)
  • 用基于lucene的索引替换solandra。
  • 添加了双向关联的支持。
  • 性能改进修复。

我们测试了100万个插入,正确使用索引只需要6分钟。

Vivek


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,可能会帮助你入门。


1
Astyanax API 生成易于阅读的代码,并包含连接池功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接