Apache Cassandra 的高级 Java Client 选择 [已关闭]

2022-09-04 00:40:43

有四个高级API可以访问Cassandra,我没有时间尝试所有这些。所以我希望找到一个可以帮助我选择合适的人。

我会试着写下我对他们的发现:

Datanucleus-Cassandra-Plugin

优点:

  • 支持 JPA1、JPA2、JDO1 - JDO3 - 正如我在评论中读到的,JDO 比使用 JPA 的 Hibernate 扩展性更好
  • 昆德拉提到的所有优点?

缺点:

  • 到目前为止,JDO没有执行(当然只与我相关;)
  • 未找到文档!

昆德拉

优点:

  • JPA 1.0 注释具有所有优点(符合标准,无样板代码等)
  • 承诺在不久的将来提供以下功能:JPA侦听器,@PrePersist @PostPersist等 - 关系,@OneToMany,@ManyToMany等 - 事务支持,@Transactional

缺点:

  • 插件的早期开发阶段?
  • 错误?
  • 没有可能性修复JDO / JPA框架中的问题?

s7 pelops

优点:

  • 纯java api -->对持久性的更精细的控制?

缺点:

  • 纯 java api -->样板代码

赫克托耳 0.7

优点:

  • 已熟练
  • 弹簧集成-->依赖注入
  • 纯java api -->对持久性的更精细的控制?
  • jmx 监控?
  • 节点管理似乎简单灵活

缺点:

  • 纯java api(无注释) -->样板代码

到目前为止的结论

由于我对RDMS,Hibernate,JPA,Spring以及不再与EJB保持同步充满信心,我的第一印象是,选择kundera将是正确的选择。但是在阅读了一些关于JPO,DataNucleus的帖子之后,我不再确定了。由于DataNucleus的学习曲线应该是陡峭的(对于经验丰富的JPA开发人员也是如此?),我不确定我是否应该这样做。

我主要关心的是插件的状态。此外,论坛对JDO和Datanucleus-Cassandra-Plugin的支持/帮助,据我所知,它并没有那么广泛。

有没有人在那里,谁有经验,已经与一些框架工作,可以给我一个提示?也许混合策略也是有意义的。在JDO不灵活/足够/足以满足我的需求的情况下(如果它们存在),回退到一个更容易的api之一的pelops或hector?这可能吗?有没有像JPA那样的方法来获得sql连接并获取/放置数据?


在阅读了一会儿后,我发现了以下附加信息:

Datanucleus-Cassandra-Plugin基于pelops,也可以访问它以获得更大的灵活性,更高的性能(?),这应该用于具有大量数据的列系列,JDO / JPA访问应该仅用于“管理”数据,其中性能不是那么重要,数据量也不是压倒性的。

这仍然使问题从hector或pelops开始。

pelops对于它后来的Datanucleus-Cassandra-Plugin可扩展性,或者hector因为它对node hanldling的更充分的支持。


答案 1

我尝试了大多数这些解决方案,并找到了最好的解决方案。即使你遇到一些问题,你也总是可以联系到那些在#cassandra freenode中写赫克托的人。就我而言,代码更加成熟。在cassandra客户端中,最关键的部分是连接池管理(因为所有客户端都通过节俭执行几乎相同的操作,但连接池是高级客户端滚动的原因)。在这种情况下,我会投票给hector,因为我在生产中使用它已经超过一年了,没有明显的问题(一旦我发现并发送有关它的电子邮件,就修复了1个重新连接问题)。

我仍然使用cassandra 0.6。


答案 2

datanucleus插件的作者Todd Nine现在正在Hector中研究下一代JPA支持。


推荐