【问题标题】:BigTable vs noSQLBigTable 与 noSQL
【发布时间】:2011-03-16 17:56:25
【问题描述】:
  1. 我可以知道在“nosql”中存在限制,就像我们应该“非规范化”我们的表/实体的 bigtable 一样?

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

【问题讨论】:

  • bigtable nosql 数据库的一个例子。当然,“nosql”无论如何都没有一个精确的定义:)

标签: java hibernate google-app-engine nosql bigtable


【解决方案1】:

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

由于 MongoDB 是非关系型的(没有 连接),引用(“外键”) 文件之间一般是 通过附加解决客户端 向服务器查询。两个约定 在 MongoDB 中的引用很常见: 第一个简单的手动参考,以及 第二,DBRef 标准,其中很多 驱动程序明确支持。

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

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

另请参阅:

Bigtable database design theory

GAE - How to live with no joins?


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

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

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

参见:

Datanucleus-Cassandra

Datanucleus-Cassandra-Plugin

【讨论】:

【解决方案2】:

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

虽然抽象库肯定有助于可移植性,但您必须考虑您运行的特定平台。如果您要使用 Google App Engine,则必须注意 incurred startup costs inherent with additional abstraction libraries

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

【讨论】:

  • 我不知道存在任何抽象包装库
猜你喜欢
  • 2012-10-17
  • 2013-03-19
  • 1970-01-01
  • 2011-05-14
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多