谷歌使用什么数据库?

是Oracle, MySQL还是他们自己做的?

268298 次浏览

这是他们自己创建的,叫做Bigtable。

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

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

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

Bigtable

a Distributed Storage System for Structured Data .

Bigtable是分布式存储 系统(由谷歌构建)用于管理结构化数据 它被设计成一个非常 大容量:千兆字节的数据

谷歌中的许多项目将数据存储在 Bigtable,包括网络索引, 谷歌地球,谷歌金融。 这些应用非常重要 对Bigtable的不同要求,都在 数据大小的术语(从url到web 页到卫星图像)和 延迟需求(来自后端 批量处理实时数据 服务)。< / p > 尽管这些变化 要求,Bigtable已经成功 提供了灵活、高性能 所有这些谷歌的解 产品。< / p >

一些功能

  • 快速和超大规模的DBMS
  • 一个稀疏的、分布式的多维排序映射,共享面向行和面向列数据库的特征。
  • 设计用于扩展到拍字节范围
  • 它可以在成百上千台机器上工作
  • 很容易向系统中添加更多的机器,并自动开始利用这些资源,而无需进行任何重新配置
  • 每个表都有多个维度(其中一个维度是时间字段,允许进行版本控制)
  • 表是为GFS(谷歌文件系统)优化的,它被分割成多个平板电脑——表的片段沿着选定的行分割,这样平板电脑的大小将为~200兆字节。

体系结构

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

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

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

Bigtable药片的位置存储在单元格中。任何特定平板电脑的查找都由一个三层系统处理。客户机获得一个指向met0表的点,而这个表只有一个。META0表跟踪许多META1片剂,其中包含正在查找的片剂的位置。META0和META1都大量使用预取和缓存来最小化系统中的瓶颈。

实现

BigTable构建在谷歌文件系统 (GFS)上,它被用作日志和数据文件的备份存储。GFS为sstable提供了可靠的存储,sstable是一种google专有的文件格式,用于持久化表数据。

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

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

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

例子来自谷歌的研究论文:

alt text

一个示例表的切片 存储网页。行名是a 逆转的URL。内容栏 家庭包含页面内容,和 的锚列族包含 任何锚的文本引用 页面。CNN的主页是由 《体育画报》和 MY-look首页,所以行 包含名为 anchor:cnnsi.comanchor:my.look.ca。每个锚单元 一个版本;内容栏 有三个版本,在时间戳 t3t5,和t6.

API

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


这里是链接至研究论文的PDF格式

在这里你可以找到谷歌的杰夫·迪安在华盛顿大学演讲的视频,讨论谷歌后端使用的Bigtable内容存储系统。

虽然谷歌所有的主要应用程序都使用BigTable,但他们对其他(可能是次要的)应用程序使用也使用MySQL

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

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

而且,知道BigTable不是一个关系数据库(像MySQL),而是一个巨大的(分布式的)哈希表,具有非常不同的特征也很方便。你可以在谷歌AppEngine平台上自己摆弄BigTable(有限版本)。

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

谷歌主要使用Bigtable。

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

有关更多信息,请从在这里下载文档。

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

如果您能提供更多信息,我们将不胜感激。

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

在这里是论文的链接。

扳手是谷歌的可伸缩,多版本,全球分布,和 synchronously-replicated数据库。这是第一个系统 在全球范围内分发数据并支持外部一致 分布式事务。本文描述了扳手是如何工作的 结构化,它的特征集,各种设计的基本原理 决策,以及一个新颖的时间API,暴露时钟的不确定性。这 API及其实现对于支持外部 一致性和各种强大的特性:非阻塞读取 过去的无锁只读事务和原子模式更改,

谷歌发明的另一个数据库是超大卖场。摘要如下:

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

谷歌服务具有多语言持久性体系结构。BigTable利用了它的大多数服务,如YouTube,谷歌搜索,谷歌分析等。搜索服务最初使用MapReduce作为索引基础设施,但后来在Caffeine发布期间过渡到BigTable。

谷歌云数据存储在谷歌的生产中有超过100个面向内部和外部用户的应用程序。Gmail, Picasa,谷歌Calendar, Android Market &AppEngine使用云数据存储;超大卖场。

谷歌趋势使用MillWheel进行流处理。谷歌广告最初使用MySQL,后来迁移到F1 DB -一个自定义编写的分布式关系数据库。Youtube在Vitess中使用MySQL。谷歌在谷歌文件系统的帮助下在商用服务器上存储艾字节的数据。

来源:谷歌数据库:谷歌服务如何存储pb - exabyte规模的数据?

YouTube数据库-它如何存储这么多视频而不耗尽存储空间?< / >

enter image description here