谷歌的Bigtable与关系数据库

Dan*_*nos 29 database relational bigtable

重复

我对Google的Bigtable了解不多,但我想知道Google的Bigtable和MySQL之类的关系数据库之间的区别是什么.两者有什么限制?

tyl*_*erl 32

Bigtable是Google的发明,用于处理公司经常处理的大量信息.Bigtable数据集可以扩展到巨大的数量(许多PB),存储分布在大量服务器上.使用Bigtable的系统包括Google的网络索引和Google地球等项目.

根据Google关于此主题的白皮书:

Bigtable是一个稀疏的,分布式的,持久的多维有序映射.地图由行键,列键和时间戳索引; 映射中的每个值都是未解释的字节数组.

与Bigtable相比,Bigtable的内部机制与使比较变得非常不同,预期的目标也不会重叠太多.但你可以认为Bigtable有点像单表数据库.例如,想象一下,如果您尝试使用MySQL数据库实现Google的整个Web搜索系统,您将遇到的困难--Bigtable是围绕解决这些问题而构建的.

可以使用称为GQL("gee-kwal")的语言从AppEngine等服务查询Bigtable数据集,该语言基于SQL的子集.GQL中明显缺少的是任何类型的JOIN命令.由于Bigtable数据库的分布式特性,在两个表之间执行连接将非常低效.相反,程序员必须在他的应用程序中实现这样的逻辑,或者设计他的应用程序以便不需要它.

  • "想象一下,例如,如果你试图用MySQL数据库实现谷歌的整个网络搜索系统会遇到的困难"会有什么困难? (5认同)
  • @Amoeba表大小,索引大小,冗余,大规模并行同时访问等等.MySQL做得很好,但扩展和分割到多台机器成为协调的噩梦. (4认同)

Mig*_*ing 14

Google的BigTable和其他类似项目(例如:CouchDB,HBase)是面向数据库的系统,因此数据主要是非规范化(即重复和分组).

主要优点是: - 由于非规范化,连接操作成本较低 - 由于数据独立性,数据的复制/分发成本较低(即,如果要跨两个节点分发数据,则可能不会出现问题在一个节点中有一个实体,在另一个节点中有另一个相关实体,因为相似的数据被分组

这种系统适用于需要实现最佳扩展的应用程序(即,您向系统添加更多节点并且性能按比例增加).在像MySQL或Oracle这样的RDBMS中,当您连接两个不在同一节点中的表时,如果开始添加更多节点,则连接成本会更高.当您处理大量产品时,这一点变得非常重要.

RDBMS很好,因为存储模型(表,连接,fks)的丰富性.分布式数据库很好,因为它易于扩展.

  • 但是,如果数据未规范化,则更新将更加困难,因为您可能需要在多个位置反映相同的信息,如果它们是不同的节点则更糟.非规范化数据库如何处理? (10认同)
  • 呃......你不是把*ORM*这个词与*RDBMS*混淆了吗? (7认同)

归档时间:

查看次数:

53069 次

最近记录:

7 年 前