BigTable与noSQL的比较

3
  1. 我想知道在“NoSQL”中是否存在限制,就像Bigtable一样,我们应该“非正规化”我们的表/实体?

  2. 有没有API包装器可以让我们编写一次代码,就可以在Google App Engine Bigtable和NoSQL中使用?(类似于Hibernate)


1
bigtable是nosql数据库的一个例子。当然,“nosql”本身并没有精确的定义 :) - Peter Recore
2个回答

3
例如,在MongoDB中,由于它是非关系型的,所以没有联接操作,因此它会改变我们存储和浏览数据的方式。
由于MongoDB是非关系型的(没有联接操作),因此文档之间的引用(“外键”)通常通过向服务器发出附加查询来在客户端解决。在MongoDB中,有两种引用惯例:第一种是简单手动引用,第二种是DBRef标准,许多驱动程序都明确支持。
似乎达成共识的方法是去规范化并复制以加速读取,避免将分布式数据合并到一起的联接成本,联接和合并逻辑在应用程序层面完成。
至于是否绝对需要对数据库进行去规范化,我不确定(其他SO成员可能可以启迪我们)。但我认为应该考虑这些“限制”来建模数据库,并对数据查询的方式进行深入研究。这应该能够使过程的阻力最小化。
另请参见:相关链接:

Bigtable database design theory

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


任何API包装器,都可以让我们编写一次代码,并可用于Google应用引擎BigTable和NoSQL吗?(类似Hibernate的东西)
JDO是数据存储无关的,所以它可能在某种程度上提供了您想要的内容。
似乎有很多最近的项目使用JDO和JPA与“NoSQL”产品。
参见: Datanucleus-Cassandra Datanucleus-Cassandra-Plugin

你还可以添加一个DataNucleus Cassandra插件 http://github.com/tnine/Datanucleus-Cassandra-Plugin 这个想法是它们将在未来某个阶段合并(我引用的版本包括Pedro Gomes版本的一些内容)。 - DataNucleus

2
任何API包装器可以让我们编写一次代码,然后可以用于Google应用引擎BigTable和NoSQL吗?(类似于Hibernate)
尽管抽象库确实有助于可移植性,但您必须考虑运行的特定平台。如果您要使用Google App Engine,则必须注意附加抽象库所固有的启动成本。
您应该权衡使用JDO或JPA之类的东西的利弊。还可以查看Objectify library,它提供了更本地的接口,缺点是与App Engine Datastore耦合。

我不知道是否存在任何抽象包装库。 - cometta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接