3
  1. 我可以知道在“nosql”中存在限制,就像我们应该“非规范化”我们的表/实体的 bigtable 一样?

  2. 任何允许我们编写一次代码并可以用于谷歌应用引擎 bigtable 和 nosql 的 api 包装器?(类似于休眠)

4

2 回答 2

3

是的,例如在 MongoDB 中,您没有连接,因为它是非关系型的,因此它确实改变了我们存储和浏览数据的方式。

由于 MongoDB 是非关系型(无连接),文档之间的引用(“外键”)通常在客户端通过对服务器的附加查询来解析。MongoDB 中的引用有两种常见的约定:第一种是简单的手动引用,第二种是 DBRef 标准,许多驱动程序明确支持该标准。

似乎共识是非规范化和复制以加速读取,以避免将分布式数据连接在一起的成本,在应用程序级别完成连接和合并逻辑。

至于非规范化数据库是否是绝对要求,我不确定(其他 SO 成员可能会启发我们)。但我认为数据库的建模应该考虑到这些“限制”,同时对如何查询数据进行深入研究。这应该给过程带来最小的阻抗。

也可以看看:

Bigtable 数据库设计理论

GAE - 如何在没有连接的情况下生活?


任何允许我们编写一次代码并可以用于谷歌应用引擎 BigTable 和 nosql 的 API 包装器?(类似于休眠)

JDO 与数据存储无关,因此它可能只是在某种程度上提供了您想要的东西。

似乎有很多最近的项目将 JDO 和 JPA 与“NoSQL”产品一起使用。

看:

Datanucleus-Cassandra

Datanucleus-Cassandra-插件

于 2010-07-16T02:37:29.150 回答
2

任何允许我们编写一次代码并可以用于谷歌应用引擎 BigTable 和 nosql 的 API 包装器?(类似于休眠)

虽然抽象库肯定有助于可移植性,但您必须考虑您正在运行的特定平台。如果您打算使用 Google App Engine,您必须了解额外的抽象库所固有的启动成本

您应该权衡使用 JDO 或 JPA 之类的利弊。另请查看Objectify 库,该库提供了更加原生的界面,但缺点是与 App Engine 数据存储区耦合。

于 2010-07-20T19:42:43.270 回答