我正在尝试使用Hive作为数据库开发应用程序,然后我也将NoSQL解决方案作为其替代方案。
现在决定使用Cassandra进行开发,我的下一个问题是选择哪个客户端? Hector——一个纯Java解决方案,还是像JPA一样开发的Kundera?
我更喜欢Hector,但我很想了解Kundera。有人使用过Kundera吗?哪个更好?
我对CQL(Cassandra查询语言)很感兴趣。它能与Hector集成吗?
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。我无法想象这应该如何工作。
源代码可在Github上托管: https://github.com/Netflix/astyanaxAstyanax是Java Cassandra客户端。它借鉴了许多Hector的概念,但在连接池实现以及客户端API方面有所偏差。其中一个主要的设计考虑是在连接池和Cassandra API之间提供清晰的抽象,以便可以分别定制和改进每个部分。Astyanax提供了流畅的样式API,引导调用者将查询从键缩小到列,并为我们遇到的更复杂的用例提供查询。与Hector相比,Astyanax的操作优势包括较低的延迟、降低的延迟方差和更好的错误处理。
Kundera 2.0.4发布:
我们测试了100万个插入,正确使用索引只需要6分钟。
Vivek
我还没试过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,可能会帮助你入门。