`
jias_je
  • 浏览: 39611 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

bigtable翻译系列2

 
阅读更多

Data Model  

 

一个Bigtaable是一个稀疏的,分布式的,持久而有序的多维映射图。每一个映射由行关键字、列关键字、时间戳三个关键字来定位,它们三个对应的值是不具特定类型的字节数组。格式如下:(row:string, column:string, time:int64) → string



上图是一个表的某一片段,该表用来存储网页信息,可以看到行的名字是一个反转的URL(#CNN首页)。列族叫 contents的列存储的内容是网页内容,列族名为 anchor的包含了任何引用该网页的内容。这儿就可以明显的看到,CNN站点的主页面被www.cnnsi.com和www.my.look.ca这两个网站引用,链接的文字分别是CNN和CNN.com(#也即在这如上两个网站点击上面对应的文字网页就会跳转到CNN首页,做过网页开发的人应该在熟悉不过),每个anchor单元只有一个版本;contents列却有三个版本,三个版本对应的时间为t3,t5,t6.

在使用过各种类Bigtable系统之后,我们得出了这种数据模型。上图作为一个具体的实例会对我们的很多决策带来影响,假设我们现在要保存大量网页的备份及其关联的信息用以在很多不同的项目中使用,这儿我们不妨先称上图的表为Webtable,在Webtable中,我们用URL作为行关键字,能代表网页某些属性的标志作为列关键字,并且把网页的内容保存在contents列中:列要结合时间戳才有意义,这个时间戳代表获取网页内容的时间点。

【行】
在表中的行关键字可以是任意字符串(目前最大支持64kb,尽管大多数用户一般只需要10-100个字节就满足了)。每次读写数据的时候都是以行为基本原子单位(不管你是操作这一行的一列数据还是多列数据),因为客户端总会存在对同一行的并发修改,所以这种以行为单位的设计将使系统的行为更简单易控。

Bigtable通过行关键字维护数据字典顺序,在某一表中行区间是动态划分的。每一个行区间被叫做tablet,tablet也是分布式和负载均衡时操作的单位。因此读取一个短行区间是非常高效的,因为这样只需要和更少的机器交互。客户端也可以利用这个特性来得到更好的数据访问,比如在Webtable中,在同一个域名下的多个网页通过URL反转会被分在同一区间的连续的位置。比如我们存储maps.google.com/index.html页面的内容时会被放在行关键字为com.google.maps/index下(#这样maps.google.com下其他的页面通过URL反转排序后都会在同一个区间的连续位置),把同一个域名下的网页存在连续的地方会减使主机和域名分析更加迅速。

【列族】
顾名思义,具有相同标志的列的集合叫做列族,列族也是最基本的访问控制单位。一个列族中存储的数据一般具有相同的类型(数据压缩时会将同一个列族压在一起),列族必须在存储数据之前就要创建好,当一个列族建好后,我们可以使用任何属于该列族的列。我们设想的是,在同一个表中列族的总数会比较小(通常一个表有100个列族),在后面的操作期间这些列族很少改变,与此相反,一个表里的列总数可以非常大(#每一个列族可能含有大量的列)。

(#说到这里列族和列的关系到底是什么)如下
列名可以用这种语法来定义  列族名:限定名  ,列族名必须是可打印字符,限定名可以是任意字符串。如在Webtable中列族可以是language,它记录页面是由什么种语言书写,我们只需要使用一个列关键字(#限定名)就可以来存储每个网页使用的语言标志(#列名可能像这样  language:page),在Webtable中另一个有用的列族是anchor;在该列族下的每个列代表了不同的anchor,如图所示,限定名是相关的网站地址;单元格内的内容是链接文字。

访问控制和磁盘及内存的统计可以表现在列族上,针对Webtable这张例表,我们可以有几种不同的应用管理:对它添加一些基本数据;读取基本数据和新建派生列族,但有些表只能允许我们对数据进行查看(因为涉及隐私我们可能只会看到部分列族)。


【时间戳】
在Bigtable中每个单元格的相同数据可以有好几个版本;这些版本有时间戳来定义。时间戳是64位整型数字。这个值可以由Bigtable来指定,这样可以用毫秒数来表示“即时性“,或者也可以由客户端应用程序明确指定,但是客户端应用需要自己产生一个独一无二的值避免时间戳重复。单元格内不同的时间戳是按降序排列,以保证首先访问到的是最新的数据。

带版本的数据越来越多,为了减少这种繁重的管理,我们在每个列族上多了两个设置参数的地方,以通知Bigtable自动垃圾回收单元格内的版本。客户端可以特别指出只有最近的多少个版本可以保留,或者只保留最新的版本(例如,只保留最近一周内新写的数据)。

在我们的Webtable例子里,在列族contents中为每一次自动爬取的网页设置了时间戳。上面的垃圾回收机制让我们为每个页面保留最近的三个版本。

(#  此符号内仅代表本人观点   )


(#  java eye 上的页面编辑不人性
)









 

  • 大小: 16.8 KB
分享到:
评论

相关推荐

    Bigtable: A Distributed Storage System for Structured Data中文翻译

    Bigtable: A Distributed Storage System for Structured Data中文翻译

    bigtable中文翻译.pdf

    【Bigtable】是一种分布式存储系统,专为存储大规模结构化数据而设计,可扩展至2^50字节,分布在数千台普通服务器上。它的应用范围广泛,包括网页搜索、Google Earth、Google Finance等,应对各种不同的数据规模和...

    Bigtable中英文 Word文档 (两个文件)

    Bigtable中英文 Word文档 (两个文件),主要是清晰明了的展示了谷歌BigTalbe论文

    google技术bigtable osdi文章翻译版

    【谷歌技术Bigtable OSDI文章翻译版】 Bigtable是由Google开发的一个分布式结构化数据存储系统,专门设计用于处理海量的数据,通常在数千台普通服务器上处理PB级别的数据。该系统在Google的多个产品和项目中广泛...

    Google's BigTable 原理 (中文)

    Google's BigTable 原理 (翻译) 题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。 ------ 编者 官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的...

    google-bigtable中文版

    google-bigtable中文版,翻译google-bigtable论文

    BigTable中文版

    API包括读写操作、扫描(获取一系列行)、条件更新等。API的设计考虑了高并发和低延迟的需求,使得应用程序能以高性能处理大数据。 **BIGTABLE 构件** 1. **TABLET的位置**:Tablet是BigTable中的基本存储单元,...

    GFS BigTable MapReduce中文版

    2. **Bigtable**:Bigtable是Google的一个分布式数据存储系统,用于处理海量结构化和半结构化数据。它是一个稀疏、多维度、排序的键值对数据库,可以支持PB级别的数据存储。Bigtable被设计用来支撑Google的各种在线...

    谷歌BIGtable介绍

    谷歌Bigtable介绍 Bigtable是一个分布式的结构化数据存储系统,由Google设计和实现,用于处理海量数据。该系统可以部署到数千台普通服务器上,存储PB级别的数据。Bigtable已经在超过60个Google的产品和项目上得到了...

    Google-GFS,Bigtable,Mapreduce三大论文英文原版+中文翻译

    2. **Bigtable**: Bigtable是Google的一个分布式多维结构化数据存储系统,设计用于处理海量结构化和半结构化数据。它是一个稀疏、多维度、排序的映射表,将行键、列族、列限定符和时间戳映射到字符串值。Bigtable...

    Bigtable探秘 Google分布式数据存储系统.pdf

    Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。这些...

    Google BigTable中文版.pdf

    Google BigTable中文版.pdf

    Bigtable: A Distributed Storage System for Structured Data

    Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size: petabytes of data across thousands of commodity servers. Many projects at Google ...

    BigTable详解pdf

    **BigTable详解** BigTable是Google开发的一种分布式数据存储系统,它被设计用来处理海量的数据,主要用于支持Google的各类服务,如Google搜索、Gmail、Google Maps等。这个系统的核心特性在于其强大的可扩展性和高...

    Bigtable:一个分布式的结构化数据存储系统[中文版] pdf

    Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。这些...

    BigTable简介

    Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。

    GoogleFileSystem-Bigtable-MapReduce

    2. **分布式架构**:BigTable运行在Google的Chubby锁服务之上,确保数据的一致性和可靠性。 3. **表分区**:通过行键和列族进行数据分区,支持水平扩展。 4. **多版本并发控制**:每个单元格可存储多个版本,便于...

    Google三大论文之BigTable中文完整版

    Google三大论文之BigTable中文完整版

    BigTable A Distributed Storage System for Structured Data

    2. 分布式架构 BigTable的分布式架构是其可扩展性和高可用性的关键。它将数据分布在多个服务器上,通过Chubby锁服务实现分布式一致性,确保数据的一致性。每个服务器节点负责一部分数据,通过GFS(Google文件系统)...

    Google三篇论文-BigTable英文版

    2. **表格模型**:BigTable的核心是表格模型,由行、列族和时间戳组成。行是由字符串唯一标识的,列族是一组相关的列,而时间戳则用于存储同一单元格内的不同版本的数据。 3. **SSTable和Memtable**:BigTable将...

Global site tag (gtag.js) - Google Analytics