提问



是Oracle还是MySQL或者他们自己构建的东西?

最佳参考


Bigtable的



结构化数据的分布式存储系统[6]



  Bigtable是一个分布式存储
  系统(由Google构建),用于管理结构化数据
  旨在扩展到非常
  大尺寸:数PB的数据
  数千种商品服务器。

  
  谷歌的许多项目存储数据
  Bigtable,包括网络索引,
  Google地球和Google财经。
  这些应用非常适合
  对Bigtable的不同要求,都在
  数据大小(从URL到Web)
  页面到卫星图像)和
  延迟要求(来自后端
  批量处理到实时数据
  服务)。

  
  尽管各种各样
  要求,Bigtable已成功
  提供灵活,高性能
  所有这些Google的解决方案
  产品。



部分功能



  • 快速且极大规模的DBMS

  • 一个稀疏的,分布式的多维有序映射,共享面向行和面向列的数据库的特征。

  • 旨在扩展到PB级别

  • 它适用于数百或数千台机器

  • 很容易向系统添加更多计算机,并自动开始利用这些资源而无需重新配置

  • 每个表都有多个维度(其中一个是时间字段,允许进行版本控制)

  • 表格针对GFS(谷歌文件系统)进行了优化,分为多个平板电脑 - 表格的各个部分沿着选择的行拆分,使平板电脑的大小约为200兆字节。



架构


BigTable不是关系数据库。它不支持连接,也不支持类似SQL的丰富查询。每个表都是一个多维稀疏映射。表由行和列组成,每个单元格都有一个时间戳。可以存在具有不同时间戳的单元的多个版本。时间戳允许诸如选择该网页的版本或删除比特定日期/时间早的单元格之类的操作。


为了管理巨大的表,Bigtable在行边界处拆分表并将它们保存为平板电脑。平板电脑大约200 MB,每台机器可以节省大约100个平板电脑。此设置允许来自单个表的平板电脑在许多服务器之间传播。它还允许细粒度的负载平衡。如果一个表正在接收许多查询,它可能会丢弃其他平板电脑或将忙表移动到另一台不那么繁忙的计算机上。此外,如果计算机出现故障,平板电脑可能会分布在许多其他服务器上,因此对任何给定计算机的性能影响都很小。


表存储为不可变的SSTable和日志尾(每台机器一个日志)。当一台机器耗尽系统内存时,它会使用谷歌专有的压缩技术(BMDiff和Zippy)压缩一些平板电脑。次要压缩仅涉及少量平板电脑,而主要压缩涉及整个表系统并恢复硬盘空间。


Bigtable平板电脑的位置存储在单元格中。任何特定平板电脑的查找都由三层系统处理。客户端指向META0表,其中只有一个。 META0表记录了许多META1平板电脑,其中包含正在查找的平板电脑的位置。 META0和META1都大量使用预取和缓存来最小化系统中的瓶颈。


实施


BigTable建立在 Google文件系统(GFS)之上,后者用作日志和数据文件的后备存储。 GFS为SSTable提供可靠的存储,SSTable是一种用于保存表数据的Google专有文件格式。


BigTable大量使用的另一项服务是 Chubby ,这是一种高度可用,可靠的分布式锁定服务。 Chubby允许客户端锁定,可能将其与某些元数据相关联,可以通过将保持Activity消息发送回Chubby来进行更新。锁存储在类似文件系统的分层命名结构中。


Bigtable系统中有三种主要的服务器类型:



  1. 主服务器:将平板电脑分配给平板电脑服务器,跟踪平板电脑的位置,并根据需要重新分配任务。

  2. 平板电脑服务器:处理超过大小限制的平板电脑和拆分平板电脑的读/写请求(通常为100MB - 200MB)。如果平板电脑服务器出现故障,则每台100台平板电脑服务器将获得1个新平板电脑并恢复系统。

  3. 锁定服务器:Chubby分布式锁定服务的实例。 BigTable中的许多操作都需要获取锁,包括打开用于写入的平板电脑,确保一次只有一个Activity主服务器,以及访问控制检查。



来自Google的研究论文的示例:






  一片示例表
  存储网页。行名是
  反转网址。内容栏
  系列包含页面内容,以及
  锚列族包含
  任何锚点的文字引用
  页。 CNN的主页引用
  体育画报和体育画报
  我看主页,所以排
  包含名为的列
  anchor:cnnsi.com
  anchor:my.look.ca。每个锚细胞
  有一个版本;内容栏
  在时间戳上有三个版本
  t3t5t6



API


BigTable的典型操作是创建和删除表和列系列,写入数据和从行中删除列。 BigTable在API中为应用程序开发人员提供此功能。行级支持事务,但不支持多个行键。





以下是研究论文PDF的链接。 [7]


在这里,你可以在华盛顿大学的一个讲座中找到一个显示谷歌的杰夫迪恩的视频,讨论谷歌后端使用的Bigtable内容存储系统。[8]

其它参考1


这是他们自己建造的东西 - 它被称为Bigtable。


http://en.wikipedia.org/wiki/BigTable[9]


谷歌在数据库上有一篇论文:


http://research.google.com/archive/bigtable.html[10]

其它参考2


Spanner是谷歌的全球分布式关系数据库管理系统(RDBMS),是BigTable的继承者。谷歌声称它不是一个纯粹的关系系统,因为每个表必须有一个主键。[11] [12]


这是论文的链接。[13]



  Spanner是谷歌的可扩展,多版本,全球分布式和
  同步复制的数据库。这是第一个系统
  在全球范围内分发数据并支持外部一致性
  分布式交易。本文描述了Spanner是如何实现的
  结构化,其功能集,各种设计的基本原理
  决策,以及暴露时钟不确定性的新颖时间API。这个
  API及其实现对于支持外部至关重要
  一致性和各种强大功能:非阻塞读取
  过去,无锁只读事务和原子模式更改,
  穿过所有的扳手。



Google发明的另一个数据库是Megastore。这是摘要:[14]



  Megastore是一种满足要求的存储系统
  今天的互动在线服务.Megastore融合了可扩展性
  一个NoSQL数据存储区,具有传统RDBMS的便利性
  新颖的方式,并提供强大的一致性保证和高
  可用性。我们提供完全可序列化的ACID语义
  细粒度的数据分区。这种分区允许我们
  通过广域网同步复制每次写入
  合理的延迟并支持数据中心之间的无缝故障转移。
  本文描述了Megastore的语义和复制算法。
  它还描述了我们支持各种Google的经验
  使用Megastore建立的生产服务。


其它参考3


正如其他人所提到的,Google使用了一种名为BigTable的本土解决方案,他们已经发布了一些将其描述到现实世界中的论文。


Apache人员在这些论文中提出了一些名为HBase的想法。 HBase是较大的Hadoop项目的一部分,该项目根据其网站是一个软件平台,可以轻松编写和运行处理大量数据的应用程序。一些基准测试令人印象深刻。他们的网站是http://hadoop.apache.org。[15] [16]

其它参考4


虽然Google将BigTable用于他们所有的主要应用程序,但他们也将MySQL用于其他(可能是次要的)应用程序。[17]

其它参考5


知道BigTable不是关系型数据库(如MySQL)也可能很方便,但是一个巨大的(分布式)哈希表具有非常不同的特性。你可以自己在Google上玩(限量版)BigTable AppEngine平台。[18] [19]


除了上面提到的Hadoop之外,还有许多其他实现尝试解决与BigTable相同的问题(可伸缩性,可用性)。昨天我看到一篇不错的博文,其中大部分都在这里列出。[20]

其它参考6


Google主要使用Bigtable。


Bigtable是一个分布式存储系统,用于管理结构化数据,旨在扩展到非常大的规模。


有关更多信息,请从此处下载文档。[21]


Google还为其部分应用程序使用Oracle和MySQL数据库。


您可以添加的任何其他信息非常感谢。