是Oracle、MySQL还是他们自己构建的东西?
是Oracle、MySQL还是他们自己构建的东西?
Bigtable是由Google构建的分布式存储系统,用于管理结构化数据,旨在可伸缩至非常大:跨数千个普通服务器的PB级数据。
许多Google项目使用Bigtable存储数据,包括网络索引、Google Earth和Google Finance。这些应用对Bigtable提出了非常不同的要求,无论是数据大小(从URL到网页再到卫星图像),还是延迟要求(从后端批量处理到实时数据服务)。
尽管存在这些不同的需求,但Bigtable已成功为所有这些Google产品提供了灵活高效的解决方案。
一些特点
架构
BigTable不是关系型数据库,不支持连接操作,也不支持类似SQL的高级查询。每个表都是一个多维稀疏映射。表由行和列组成,每个单元格都有一个时间戳。可以有多个版本的单元格具有不同的时间戳。该时间戳允许执行"选择此Web页面的'n'个版本"或"删除早于特定日期/时间的单元格"等操作。
为了管理庞大的表格,Bigtable在行边界处分割表格并将它们保存为片段。一个片段大约为200MB,每台机器可保存约100个片段。这种设置允许来自单个表的片段分布在许多服务器之间。它还允许进行精细的负载平衡。如果一个表正在接收许多查询,它可以卸载其他片段或将忙碌的表移动到另一台不那么忙碌的机器上。另外,如果一台机器出现问题,一个片段可能会分散在许多其他服务器上,以便对任何给定机器的性能影响最小化。
表格以不可变的SSTables和日志尾部(每台机器一个日志)存储。当机器耗尽系统内存时,它使用Google专有的压缩技术(BMDiff和Zippy)压缩某些片段。小型压实只涉及几个片段,而大型压实涉及整个表格系统并恢复硬盘空间。
Bigtable片段的位置存储在单元格中。任何特定片段的查找由三层系统处理。客户端获取META0表的指针,其中只有一个。META0表跟踪许多META1片段的位置,这些片段包含正在查找的片段的位置。META0和META1都大量使用预取和缓存来最小化系统瓶颈。
实现
BigTable是建立在Google文件系统(GFS)之上的,GFS用作日志和数据文件的后备存储。 GFS为SSTables提供可靠的存储,这是一种用于持久化表格数据的Google专有文件格式。
BigTable重度使用的另一个服务是高可用性、可靠的分布式锁服务Chubby。 Chubby允许客户端获取锁,并可能将其与一些元数据关联起来,客户端可以通过向Chubby发送保持活动消息来续订锁。锁存储在类似文件系统的分层命名结构中。
Bigtable系统中有三种主要的服务器类型:
Google研究论文中的示例:
存储Web页面的示例表格的一部分。行名称是反转的URL。内容列族包含页面内容,锚点列族包含引用页面的任何锚点的文本。CNN主页被体育画报和MY-look主页引用,因此该行包含名为anchor:cnnsi.com和anchor:my.look.ca的列。每个锚点单元格只有一个版本; 内容列有三个版本,在时间戳t3、t5和t6处。
API
BigTable的典型操作包括创建和删除表格和列族、写入数据以及从一行中删除列。BigTable通过API向应用程序开发人员提供这些功能。虽然在行级别支持事务,但不支持跨多个行键。
以下是研究论文PDF链接。
在这里,您可以找到视频链接,该视频展示了Google的Jeff Dean在华盛顿大学的演讲中,讨论了Bigtable内容存储系统的使用情况。
Spanner 是 Google 的全球分布式关系数据库管理系统(RDBMS),是 BigTable 的后继者。Google声称它不是一个纯粹的关系系统,因为每个表必须有一个主键。
这里是论文链接。
Spanner 是 Google 的可扩展、多版本、全球分布式和同步复制的数据库。它是第一个在全球范围内分发数据并支持外部一致性分布式事务的系统。本文描述了 Spanner 的结构、功能集、各种设计决策的基本原理以及公开暴露时钟不确定性的新型时间 API。此 API 及其实现对于支持外部一致性和各种强大的功能至关重要:过去非阻塞读取、无锁只读事务和全局原子模式更改。
Google 发明的另一个数据库是 Megastore。以下是摘要:
Megastore 是一种存储系统,旨在满足当今的交互式在线服务的要求。Megastore以一种新颖的方式将NoSQL数据存储器的可扩展性与传统RDBMS的便捷性结合在一起,并提供强有力的一致性保证和高可用性。我们在数据的细粒度分区中提供完全可串行化的 ACID 语义。这种分区使我们能够在广域网上同步复制每个写入,并支持数据中心之间的无缝故障转移。本文描述了Megastore的语义和复制算法。它还描述了我们支持使用 Megastore 构建的各种 Google 生产服务的经验。
正如其他人提到的那样,谷歌使用一种自主开发的解决方案称为BigTable,并发布了几篇介绍它在现实世界中应用的论文。
Apache团队有一个实现这些论文中所述思想的项目,叫做HBase。HBase是更大的Hadoop项目的一部分,根据他们网站上的说法 "是一个软件平台,可以轻松编写和运行处理大量数据的应用程序。" 他们的一些基准测试结果相当令人印象深刻。他们的网站是 http://hadoop.apache.org。
虽然 Google 在所有主要应用程序中都使用 BigTable,但他们也使用 MySQL来处理其他(可能次要的)应用程序。
谷歌主要使用Bigtable。
Bigtable是一种分布式存储系统,用于管理结构化数据,并设计为可扩展到非常大的规模。
有关更多信息,请从此处下载文档。
谷歌还在一些应用程序中使用Oracle和MySQL数据库。
非常感谢您提供的任何其他信息。