8

我们正在与 Cassandra 合作。我们都没有使用这个特定平台的任何经验,但都是经验丰富的 JavaEE、JPA 等开发人员。我遇到了 Kundera 库,它提供了与多个 NoSQL 数据存储(包括 Cassandra)兼容的 JPA 实现。

沿着这条路线走很诱人,因为我们将能够更快地启动和运行。然而,这是正确的想法吗?使用这样的库的权衡是什么?它如何影响性能?有很大的不同吗?

我很想知道其他人使用这个库有什么经验。而且,如果还有其他我们应该看的东西,我很想听听。

4

3 回答 3

10

将 Jonathan 的 (jbellis) 提升到一个新的水平,恕我直言,像 hibernate 或 JPA 规范这样的 ORM 的目的是隐藏 SQL 的复杂性,因为应用程序开发人员最擅长处理对象而不是 SQL。同样,kundera 隐藏了 NoSQL 的复杂性,但以一种智能的方式允许它使用 NoSQL 的强大功能,但仍然使开发人员可以轻松地使用传统的 RDBMS 范例。但是,正如 Jonathan 所提到的,您仍然应该了解 Cassandra 数据建模的概念,否则,您最终会创建另一个 SQL,就像在 Cassandra 之上的怪物一样。Kundera 通过使用优化技术(例如自动转换为多个列的嵌入式或一对多关系)而不是创建新的列族(RDBMS 表等价物)来帮助这种 NoSQL 建模,从而避免创建物理关系模型。“工具的好坏取决于使用它的工匠/女人的技能!”

于 2013-05-02T15:59:25.710 回答
8

使用本机 CQL 驱动程序并阅读有关数据建模的文档。像昆德拉那样假装 Cassandra 是一个关系数据库,这是一种很好的方式,可以将自己描绘成一个角落,而无需完全了解您是如何到达那里的。

于 2013-05-02T03:14:08.033 回答
2

PlayOrm 是一个 noSql 映射层,并且故意遵循许多 noSQL 模式而不符合 JPA。noSQL 不是关系型的。事实上,它可能不应该在 PlayORM 中包含 R,因为它也不是真正完全相关的。不过,您在 noSQL 中仍然有关系。它不仅仅是一个 RDBMS。

于 2013-05-02T14:41:20.070 回答