我正在尝试使用Hive作为数据库开发应用程序,然后我也发现noSQL解决方案作为它的替代方案。
现在决定使用Cassandra进行开发,我的下一个问题是我应该使用哪个客户端?哪一个更好,Hector - 一个纯粹的java解决方案,还是带有JPA开发的Kundera?
我更喜欢赫克托,但我对昆德拉很好奇。有没有人使用昆德拉?哪个更好?
我对CQL(Cassandra查询语言)感到好奇。它可以与Hector集成吗?
答案 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发布:
我们进行了测试,并在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