Apache Cassandra的高级Java客户端选择

and*_*eas 14 java jpa jdo datanucleus cassandra

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

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

DataNucleus将-卡桑德拉 - 插件

优点:

  • 支持JPA1,JPA2,JDO1 - JDO3 - 我在评论中看到,JDO比使用JPA的Hibernate更好地扩展
  • kundera中提到的所有专业人士?

缺点:

  • 到目前为止对JDO没有任何考验(当然只与我有关;)
  • 找不到文档!

昆德拉

优点:

  • 具有所有优点的JPA 1.0注释(标准符合,没有样板代码,......)
  • 承诺在不久的将来跟随功能:JPA听众,@ Preersers @PostPersist等 - 关系,@ OneToMany,@ ManyToMany等 - 交易支持,@ Transactional

缺点:

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

s7 pelops

优点:

  • 纯java api - >更好地控制持久性?

缺点:

  • 纯java api - >样板代码

hector 0.7

优点:

  • Maven化
  • spring integration - >依赖注入
  • 纯java api - >更好地控制持久性?
  • jmx监控?
  • 管理节点似乎很容易和灵活

缺点:

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

结论到目前为止

由于我对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来说,这仍然是个问题.

pelops为它后来的Datanucleus-Cassandra-Plugin可扩展性,或者hector,它对节点hanldling有更多的支持.

fra*_*ail 9

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

我仍在使用cassandra 0.6.


jbe*_*lis 7

datanucleus插件的作者Todd Nine现在正致力于Hector的下一代JPA支持.