382

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

4

8 回答 8

597

大表

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

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

Google 的许多项目都将数据存储在 Bigtable 中,包括网络索引、Google 地球和 Google 财经。这些应用程序在数据大小(从 URL 到网页再到卫星图像)和延迟要求(从后端批量处理到实时数据服务)方面对 Bigtable 提出了非常不同的要求。

尽管有这些不同的需求,Bigtable 还是成功地为所有这些 Google 产品提供了灵活、高性能的解决方案。

一些功能

  • 快速且超大规模的 DBMS
  • 一个稀疏的、分布式的多维排序图,共享面向行和面向列的数据库的特征。
  • 旨在扩展到 PB 级
  • 它适用于数百或数千台机器
  • 很容易向系统中添加更多机器并自动开始利用这些资源而无需重新配置
  • 每个表都有多个维度(其中一个是时间字段,允许版本控制)
  • 通过将表格拆分为多个平板电脑,表格针对 GFS(Google 文件系统)进行了优化 - 表格的片段沿所选行拆分,以便平板电脑的大小约为 200 兆字节。

建筑学

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

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

表存储为不可变的 SSTables 和日志尾部(每台机器一个日志)。当机器用完系统内存时,它会使用 Google 专有的压缩技术(BMDiff 和 Zippy)压缩一些平板电脑。Minor compaction 只涉及几个 tablet,而 Major compaction 涉及整个 table 系统并恢复硬盘空间。

Bigtable tablet 的位置存储在单元格中。任何特定平板电脑的查找都由三层系统处理。客户端得到一个指向 META0 表的点,其中只有一个。META0 表跟踪许多 META1 tablet,其中包含正在查找的 tablet 的位置。META0 和 META1 都大量使用预取和缓存来最大程度地减少系统中的瓶颈。

执行

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

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

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

  1. 主服务器:将平板电脑分配给平板电脑服务器,跟踪平板电脑的位置并根据需要重新分配任务。
  2. 平板服务器:处理平板的读/写请求,并在平板超过大小限制(通常为 100MB - 200MB)时拆分平板。如果一个 tablet server 发生故障,那么 100 个 tablet server 每个会拾取 1 个新 tablet,系统会恢复。
  3. 锁服务器:Chubby 分布式锁服务的实例。BigTable 中的许多操作都需要获取锁,包括打开 tablet 进行写入、确保一次不超过一个活动 Master 以及访问控制检查。

谷歌研究论文中的例子:

替代文字

存储网页的示例表的一部分。行名称是一个 反向 URL。内容列族包含页面内容,锚列族包含 引用页面的任何锚的文本。CNN 的主页被 Sports Illustrated 和 MY-look 主页引用,因此该行包含名为 anchor:cnnsi.com和 的列anchor:my.look.ca。每个锚单元都有一个版本;内容列有三个版本,在时间戳 t3t5t6

API

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


这是研究论文 PDF 的链接

在这里,您可以找到一段视频,展示了 Google 的 Jeff Dean 在华盛顿大学的一次演讲中,讨论了 Google 后端使用的 Bigtable 内容存储系统。

于 2008-12-12T14:53:52.087 回答
53

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

http://en.wikipedia.org/wiki/BigTable

谷歌有一篇关于数据库的论文:

http://research.google.com/archive/bigtable.html

于 2008-12-12T14:49:52.923 回答
33

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

是论文的链接。

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

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

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

于 2013-09-28T18:44:59.880 回答
19

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

Apache 人员对这些论文中提出的想法有一个实现,称为HBase。HBase 是更大的 Hadoop 项目的一部分,根据他们的网站,该项目“是一个软件平台,可以让人们轻松编写和运行处理大量数据的应用程序”。一些基准非常令人印象深刻。他们的网站位于http://hadoop.apache.org

于 2008-12-12T15:11:14.830 回答
14

尽管 Google 将 BigTable 用于所有主要应用程序,但他们也将 MySQL用于其他(可能是次要的)应用程序。

于 2008-12-12T15:05:23.983 回答
9

知道 BigTable 不是一个关系数据库(如 MySQL)而是一个巨大的(分布式)哈希表,它具有非常不同的特性,这可能也很方便。您可以在Google AppEngine平台上自己使用 BigTable(有限版本)。

除了上面提到的 Hadoop,还有许多其他实现试图解决与 BigTable 相同的问题(可扩展性、可用性)。我昨天看到一篇不错的博客文章,在这里列出了其中的大部分。

于 2009-01-20T13:49:10.723 回答
6

谷歌主要使用 Bigtable。

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

如需更多信息,请从此处下载文档。

谷歌还在他们的一些应用程序中使用 Oracle 和 MySQL 数据库。

非常感谢您可以添加的任何更多信息。

于 2013-03-14T17:33:19.520 回答
1

Google 服务具有多语言持久性架构。BigTable 被其大部分服务所利用,如 YouTube、谷歌搜索、谷歌分析等。搜索服务最初使用 MapReduce 作为其索引基础设施,但后来在 Caffeine 发布期间过渡到 BigTable。

Google Cloud 数据存储区有超过 100 个在 Google 生产中的应用程序,面向内部和外部用户。Gmail、Picasa、Google 日历、Android Market 和 AppEngine 等应用程序使用 Cloud Datastore 和 Megastore。

Google 趋势使用 MillWheel 进行流处理。Google Ads 最初使用 MySQL,后来迁移到 F1 DB - 一种自定义编写的分布式关系数据库。Youtube 使用 MySQL 和 Vitess。谷歌借助谷歌文件系统在商品服务器上存储 EB 级数据。

资料来源:谷歌数据库:谷歌服务如何存储 PB-Exabyte 规模的数据?

YouTube 数据库 – 它如何在不耗尽存储空间的情况下存储这么多视频?

在此处输入图像描述

于 2020-01-09T18:39:25.900 回答