1 / 60
文档名称:

Google_三大论文中文版.pdf

格式:pdf   页数:60页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Google_三大论文中文版.pdf

上传人:sxlw1984 2016/3/31 文件大小:0 KB

下载得到文件列表

Google_三大论文中文版.pdf

相关文档

文档介绍

文档介绍:Alex && OpenCoul d 又一个 博客首页 About Google 论文小道消息未分类请输入关键字... Bigtable :一个分布式的结构化数据存储系统 [中文版 ] 2010 年 3 月27 日 blademaster 没有评论 Bigtable :一个分布式的结构化数据存储系统译者: alex 摘要 Bigtable 是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的 PB 级的数据。 Google 的很多项目使用 Bigtable 存储数据,包括 Web 索引、 Google Earth 、 Google Finance 。这些应用对 Bigtable 提出的要求差异非常大, 无论是在数据量上(从 URL 到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时数据服务)。尽管应用需求差异很大,但是, 针对 Google 的这些产品, Bigtable 还是成功的提供了一个灵活的、高性能的解决方案。本论文描述了 Bigtable 提供的简单的数据模型, 利用这个模型,用户可以动态的控制数据的分布和格式;我们还将描述 Bigtable 的设计和实现。 1 介绍在过去两年半时间里,我们设计、实现并部署了一个分布式的结构化数据存储系统 — 在Google ,我们称之为 Bigtable Bigtable 的设计目的是可靠的处理 PB 级别的数据,并且能够部署到上千台机器上。 Bigtable 已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。 Bigtable 已经在超过 60 个Google 的产品和项目上得到了应用,包括 Google Analytics Google Finance Orkut 、 Personalized Search 、Writely Google Earth 。这些产品对 Bigtable 提出了迥异的需求,有的需要高吞吐量的批处理,有的则需要及时响应,快速返回数据给最终用户。它们使用的 Bigtable 集群的配置也有很大的差异,有的集群只有几台服务器,而有的则需要上千台服务器、存储几百 TB 的数据。在很多方面, Bigtable 和数据库很类似:它使用了很多数据库的实现策略。并行数据库【 14 】和内存数据库【 13 】已经具备可扩展性和高性能,但是 Bigtable 提供了一个和这些系统完全不同的接口。 Bigtable 支持完整的关系数据模型;与之相反, Bigtable 为客户提供了简单的数据模型,利用这个模型,客户可以动态控制数据的分布和格式(alex 注:也就是对 BigTable 而言,数据是没有格式的,用数据库领域的术语说,就是数据没有 Schema ,用户自己去定义 Schema ), 用户也可以自己推测(alex 注: reason about) 底层存储数据的位置相关性(alex 注:位置相关性可以这样理解,比如树状结构,具有相同前缀的数据的存放位置接近。在读取的时候,可以把这些数据一次读取出来) 。数据的下标是行和列的名字,名字可以是任意的字符串。 Bigtable 将存储的数据都视为字符串,但是 Bigtable 本身不去解析这些字符串,客户程序通常会在把各种结构化或者半结构化的数据串行化到这些字符串里。通过仔细选择数据的模式,客户可以控制数据的位置相关性。最后,可以通过 BigTable 的模式参数来控制数据是存放在内存中、还是硬盘上。第二节描述关于数据模型更多细节方面的东西;第三节概要介绍了客户端 API ;第四节简要介绍了 BigTable 底层使用的 Google 的基础框架;第五节描述了BigTable 实现的关键部分;第 6 节描述了我们为了提高 BigTable 的性能采用的一些精细的调优方法;第 7 节提供了 BigTable 的性能数据;第 8 节讲述了几个 Google 内部使用 BigTable 的例子;第 9 节是我们在设计和后期支持过程中得到一些经验和教训;最后,在第10 节列出我们的相关研究工作,第 11 节是我们的结论。 2 数据模型 Bigtable 是一个稀疏的、分布式的、持久化存储的多维度排序Map (alex 注:对于程序员来说, Map 应该不用翻译了吧。 Map 由key 和value 组成,后面我们直接使用 key 和value ,不再另外翻译了)。 Map 的索引是行关键字、列关键字以及时间戳; Map 中的每个 value 都是一个未经解析的 byte 数组。 (row:string, colu mn:string,time:int 64)->string 我们在仔细分析了一个类似Bigtable 的系统