【发布时间】:2011-07-11 01:37:15
【问题描述】:
有四个高级 API 可以访问 Cassandra,我没有时间全部尝试。所以我希望能找到可以帮助我选择合适的人。
我会试着写下我对他们的发现:
Datanucleus-Cassandra-插件
优点:
- 支持 JPA1、JPA2、JDO1 - JDO3 - 正如我在评论中看到的那样,JDO 的扩展性优于使用 JPA 的 Hibernate
- kundera 中提到的所有专业人士?
缺点:
- 到目前为止没有使用 JDO 的经验(当然只与我相关;)
- 找不到文档!
昆德拉
优点:
- JPA 1.0 注释具有所有优点(符合标准、无样板代码……)
- 承诺在不久的将来提供以下功能:JPA 侦听器、@PrePersist @PostPersist 等 - 关系、@OneToMany、@ManyToMany 等 - 事务支持、@Transactional
缺点:
- 插件的早期开发阶段?
- 错误?
- 无法修复 JDO/JPA 框架中的问题?
s7 佩洛普
优点:
- 纯 java api --> 更好地控制持久性?
缺点:
- 纯 java api --> 样板代码
赫克托0.7
优点:
- 成熟的
- spring 集成 --> 依赖注入
- 纯 java api --> 更好地控制持久性?
- jmx 监控?
- 节点管理似乎既简单又灵活
缺点:
- 纯java api(无注释)-->样板代码
到目前为止的结论
由于我对 RDMS、Hibernate、JPA、Spring 很有信心,而对 EJB 的更新并不那么先进,所以我的第一印象是,选择 kundera 将是正确的选择。但是在阅读了一些关于 JPO、DataNucleus 的帖子后,我不再确定了。由于 DataNucleus 的学习曲线应该很陡峭(对于经验丰富的 JPA 开发人员来说也是如此?),我不确定是否应该这样做。
我主要关心的是插件的状态。还有对 JDO 和 Datanucleus-Cassandra-Plugin 的论坛支持/帮助,因为据我所知,它的传播范围并不广。
有没有人有经验,已经使用了一些框架并且可以给我一个提示?也许混合策略也有意义。在某些情况下(如果存在)JDO 不够灵活/不够/无法满足我的需求,要退回到 pelops 或 hector 的更简单的 API 之一?这可能吗?是否有类似 JPA 的方法来获取 sql 连接并获取/放置数据?
阅读了一下之后,我发现了以下附加信息:
Datanucleus-Cassandra-Plugin 是基于 pelops 的,它也可以访问以获得更大的灵活性,更高的性能(?),应该用于具有大量数据的列族,JDO/JPA 访问应该只用于“管理”数据,其中性能不那么重要,数据量也不是很大。
这仍然让问题从 hector 或 pelops 开始。
因为它是后来的 Datanucleus-Cassandra-Plugin 可扩展性,或者 hector,因为它对节点处理的支持更充分。
【问题讨论】:
-
坚持使用 Hector,您不会失望(pelops 看起来也很有希望,不过还没有时间自己测试)
-
Hector....与 Cassandra 一起工作就像一个魅力....或者,使用 Avro。
-
您对 DN Cassandra 插件说“找不到文档”,但文档是 JDO 或 JPA,因此请参阅 DataNucleus 文档 (v2.2)。 Todd Nine 的插件和 Pedro Gomez 的插件应该针对 DN 2.2 构建/工作(您使用的是哪一个?我认为 Todd 的更完整)。 Cassandra 的唯一特定位是您传入的 URL(以及支持哪些功能)。
-
感谢您的提示。首先,我会坚持使用 hector,然后继续使用 DataNucleus,当我更好地理解时,我在做什么......
-
DataNucleus JDO/JPA 从 2 年前(2013 年)开始提供他们自己的 Cassandra 插件。它不是基于 pelops,而是使用较新的 CQL,因此跟踪最近的 Cassandra 开发
标签: java jpa cassandra jdo datanucleus