17

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

现在决定使用 Cassandra 进行开发,我的下一个问题是我应该使用什么客户端?哪个更好,Hector - 纯 Java 解决方案,还是 Kundera 与 JPA 之类的开发?

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


我对 CQL(Cassandra 查询语言)很好奇。它可以与赫克托整合吗?

4

11 回答 11

13

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 的映射器。我无法想象这应该如何工作。

于 2011-05-30T20:14:33.863 回答
7

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

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

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

于 2011-05-27T19:38:16.130 回答
6

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

“Astyanax 是一个 Java Cassandra 客户端。它借鉴了 Hector 的许多概念,但在连接池实现和客户端 API 方面存在分歧。主要的设计考虑之一是在连接池和 Cassandra API 之间提供一个干净的抽象,以便每个可以单独定制和改进。Astyanax 提供了一个流畅的样式 API,它指导调用者将查询从键缩小到列,并为我们遇到的更复杂的用例提供查询。Astyanax 相对于 Hector 的操作优势包括更低的延迟,减少延迟变化和更好的错误处理。”

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

于 2012-02-09T14:06:51.667 回答
4

有关将 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

于 2011-06-14T18:07:26.373 回答
4

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

不过,来自 Ruby 的我发现两者都非常冗长和命令式。

于 2011-07-02T19:14:57.107 回答
3

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

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

更多细节。

-维维克

于 2012-02-20T06:08:45.370 回答
2

没有与赫克托同级的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中还有一个非常简单的对象映射器

我最好的,

塞尔达·伊尔马克

于 2011-05-28T17:39:20.030 回答
2

昆德拉2.0.4 发布:

此版本的主要变化:

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

我们测试并在 6 分钟内完成了 100 万次正确索引的插入。

维韦克

于 2011-12-12T07:52:27.460 回答
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可以帮助你入门。

于 2011-07-17T19:15:57.497 回答
1

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

于 2012-05-03T18:40:05.150 回答
0

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

-维维克

于 2012-03-29T12:42:07.210 回答