我正在尝试使用 Hive 作为数据库来开发应用程序,然后我还找到了 noSQL 解决方案作为它的替代方案。
现在决定使用 Cassandra 进行开发,我的下一个问题是我应该使用什么客户端?哪个更好,Hector - 纯 Java 解决方案,还是 Kundera 与 JPA 之类的开发?
我更喜欢赫克托,但我对昆德拉很好奇。有人用昆德拉吗?哪个更好?
我对 CQL(Cassandra 查询语言)很好奇。它可以与赫克托整合吗?
Hector 正在慢慢地向 CQL 集成迈进。第一步已经完成,但由于 API 不稳定的经验,开发人员似乎推迟了新版本的发布。CQL API 相当新,因为它应该几乎等同于 SQL 语法。我使用 CRUD 操作做了一些基本步骤,以验证可以通过 CQL 写入和读取数据。
尽管如此,CQL JAR 目前还不能像标准 JDBC 驱动程序那样开箱即用,并且遗漏了一些重要的特性方面。看看或多或少难以理解的 thrift API 和不太简单的 hector API,我相信 CQL 将在 0.8.1 和 1.0 版本中成为 Cassandra 的最先进的访问 API ,thrift 将在一段时间内保持原生的原始访问。
两个 API 之间的竞争与 Hector 的决定无关。Hector 本身提供了额外的服务,比如集群中的故障和连接处理。thrift 和 CQL 都没有解决这些功能。
我真的不相信所有其他的 O/R 映射器,甚至那些声称提供成熟 JPA 的映射器。我无法想象这应该如何工作。
回答您关于客户端的问题 - Hector 本质上提供对 Cassandra 原生 API(列、列族、行等)的访问,而 Kundera 旨在隐藏这些细节并提供对象-数据库映射。
因此,Kundera 可能更容易将一系列 Java 对象快速持久化到 Cassandra 中——但可能无法提供有效的映射,可能会失去一些 noSQL 方法提供的性能。
Hector 希望您适应 Cassandra 数据模型——这将是一项更艰巨的工作,但可能会提供更高的性能。
现在有一个新客户端Astyanax,由 Netflix 于 2012 年 1 月发布。
“Astyanax 是一个 Java Cassandra 客户端。它借鉴了 Hector 的许多概念,但在连接池实现和客户端 API 方面存在分歧。主要的设计考虑之一是在连接池和 Cassandra API 之间提供一个干净的抽象,以便每个可以单独定制和改进。Astyanax 提供了一个流畅的样式 API,它指导调用者将查询从键缩小到列,并为我们遇到的更复杂的用例提供查询。Astyanax 相对于 Hector 的操作优势包括更低的延迟,减少延迟变化和更好的错误处理。”
Astyanax 的源代码托管在 Github:https ://github.com/Netflix/astyanax
有关将 CQL 与 Cassandra 和 Hector 一起使用的详细信息,请参阅: https ://github.com/rantav/hector/wiki/Using-CQL
以下邮件列表线程很好地讨论了我们将 CQL 作为 API 的用途: http ://groups.google.com/group/hector-users/browse_thread/thread/540dc9c3908fbb44/f5ee488f2178e2f4
为了完整起见,我认为也应该提到Pelops库。Hector 似乎是最常用的,但 Pelops 有一个更简单的 API。Pelops 不支持 CQL。
不过,来自 Ruby 的我发现两者都非常冗长和命令式。
Kundera 不再依赖 Solandra 进行索引方法。它现在使您能够使用 Cassandra 提供的二级索引支持,并且它为您提供了一种通过 OPP 运行 jpa 查询的方法(如范围查询等)。我们正在努力启用原生 CQL 支持。
看看: http: //mevivs.wordpress.com/2012/02/13/how-to-crud-and-jpa-association-handling-using-kundera/
更多细节。
-维维克
没有与赫克托同级的java客户端,赫克托是最好的,赫克托方面正在进行工作以支持cql。我本月在 github 上看到了 hector 的 cql 提交,但不知道它的最终状态。您可以向 hector 用户组询问它http://groups.google.com/group/hector-users
hector https://github.com/rantav/hector/wiki/Hector-Object-Mapper-%28HOM%29中还有一个非常简单的对象映射器
我最好的,
塞尔达·伊尔马克
昆德拉2.0.4 发布:
我们测试并在 6 分钟内完成了 100 万次正确索引的插入。
维韦克
我还没有尝试过 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可以帮助你入门。
Astyanax api 生成人类可读的代码,并且确实包含连接池。
对 cassandra 的 CQL 支持已集成在 kundera 2.0.6(尚未发布)中。它现在允许将 CQL 作为 nativequery 执行。
-维维克