有四个高级API可以访问Cassandra,我没有时间尝试全部。所以我希望找到一个可以帮我选择合适人选的人。
我会写下我对他们的发现:
的优点:
缺点:
的优点:
缺点:
的优点:
缺点:
的优点:
缺点:
由于我对RDMS,Hibernate,JPA,Spring以及对EJB不再那么了解有信心,我的第一印象是,去kundera本来是正确的选择。但在阅读了一些有关JPO,DataNucleus的帖子后,我不再确定了。由于DataNucleus的学习曲线应该是陡峭的(对于经验丰富的JPA开发人员来说?),我不确定,我是否应该去实现它。
我主要担心的是插件的状态。还有JDO和Datanucleus-Cassandra-Plugin的论坛支持/帮助,因为据我所知,它并没有广泛传播。
是否有人在那里,谁有经验,有一些framworks已经可以给我一个提示?也许混合策略也是有意义的。如果(如果存在的话)JDO不灵活/足够/不足以满足我的需求,那么回归到一个更容易的pelops或hector的API?这可能吗?是否有类似于JPA的方法来获取SQL连接和获取/放置数据?
在阅读了一下后,我发现了以下附加信息:
Datanucleus-Cassandra-Plugin基于pelops,也可以访问以获得更大的灵活性,更高的性能(?),这应该用于具有大量数据的列族,JDO / JPA访问应该只是用于“管理”数据,其中性能不是那么重要,数据量不是很大。
这仍然让问题开始于hector或pelops。
以后的Datanucleus-Cassandra-Plugin扩展性,或者 hector for it对节点hanldling的支持更充分。
答案 0 :(得分:9)
我尝试了大多数这些解决方案并找到了最好的解决方案。即使你有一些问题,你总能找到在freenode的#cassandra中编写hector的人。就我而言,代码更加成熟。在cassandra客户端中,最关键的部分是连接池管理(因为所有客户端通过thrift执行大多数相同的操作,但连接池是使高级客户端滚动的原因)。在那种情况下,我会投票给hector,因为我现在在生产中使用它超过一年没有明显的问题(我发现并发送一封电子邮件后立即修复了1个重新连接问题)。
我仍在使用cassandra 0.6。
答案 1 :(得分:7)
datanucleus插件的作者Todd Nine现在正致力于Hector的下一代JPA支持。
答案 2 :(得分:3)
Hector客户端是我们选择的API,因为它具有以下功能:
赫克托耳的下行:
另外,我尝试使用kundera但收效甚微。使用或尝试的示例不多,很少有论坛支持。它似乎由一个人维护,这使得选择这样的工具变得更加困难。它似乎基于SVN活动而转移到使用Hadoop或支持它。
答案 3 :(得分:2)
我建议你试试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-in-5-minutes
答案 4 :(得分:2)
昆德拉2.0.4发布。
答案 5 :(得分:2)
我也会提议Astyanax,我正在努力,我很高兴。只有文档不是很好。
Astyanax API
Astyanax实现了一个流畅的API,可以指导调用者缩小或缩小 通过一组定义良好的接口自定义查询。我们也是 包括一些将有效执行和近距离执行的食谱 到尽可能低级别的RPC层。客户也很沉重 使用泛型和重载几乎消除了需要 指定序列化程序。 API的一些主要功能包括:
- 键和列类型在ColumnFamily类中定义 无需指定序列化程序。
- 同一键空间中的多列族键类型。基于注释的复合列名称。
- 自动分页。
- 可识别令牌的并行化查询。
- 每个操作的可配置一致性级别。
- 每个操作的可配置重试策略。
- 将操作固定到特定节点。
- 使用Futures进行单次超时的异步操作。
- 基于简单注释的对象映射。
- 操作结果返回主机,延迟,尝试次数。
- 跟踪记录自定义事件的接口,以确定操作失败和成功。
- 优化批量突变。
- 完全隐藏来电者的时钟,但提供挂钩以进行自定义。
- 简单的CQL支持。
- RangeBuilders,用于简化构建简单列和复合列范围。
- 复合构建器,用于简化复合列名称的创建。
食谱一些常见用例的食谱:
- CSV导入器。
- JSON导出器,可将任何查询结果转换为广泛的JSON 自定义。
- 并行反向索引搜索。
- 密钥唯一约束验证。
http://techblog.netflix.com/2012/01/announcing-astyanax.html
答案 6 :(得分:2)