Apache Cassandra 的高级 Java Client 选择 [已关闭]
有四个高级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的更充分的支持。