`
jias_je
  • 浏览: 40561 次
  • 性别: 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
分享到:
评论

相关推荐

    google三篇论文翻译.zip

    《谷歌三篇经典论文翻译详解:GFS、MapReduce与Bigtable》 在信息技术领域,谷歌作为一家全球领先的科技公司,其对大数据处理的研究和实践为业界树立了标杆。谷歌的三篇经典论文——《Google文件系统(GFS)》、...

    分布式系统领域经典论文翻译集.pdf

    除了谷歌系列论文外,该翻译集还包括了一系列关于分布式理论的经典文献,这些文献涉及分布式系统的理论基础、协议设计等方面,对于理解分布式系统的设计原理具有重要意义。例如: - **CAP定理**:CAP 定理是分布式...

    google三大论文中文版

    标题中的“google三大论文中文版”指的是谷歌公司在早期发布的一系列关于大规模数据处理和分布式计算的重要学术论文的中文翻译版本。这些论文对于现代云计算和大数据技术的发展产生了深远影响。以下是这三篇论文的...

    借助TensorFlow构建大规模智能深度学习系统(谷歌大牛Jeff Dean)

    Jeff Dean在描述中提到,谷歌可以使用MapReduce、BigTable、Spanner、Flume、Pregel以及开源变体Hadoop、HBase、Cassandra、Giraph等技术来存储和处理大数据集。这些技术的运用使得谷歌能够处理海量的数据并进行...

    Big Data Glossary-大数据术语

    ### 大数据术语详解 #### 一、大数据基础概念与技术 **1.1 文档导向型数据库(Document-...NLP技术被广泛应用于语音识别、文本翻译、情感分析和问答系统等领域。接下来的部分将进一步探讨NLP相关的技术和工具。

    software engineering advice from building large-scle distributed systems

    这些经验不仅覆盖了产品层面,如广告投放系统、AdSense、四代网页搜索爬虫、索引和查询服务系统、谷歌新闻、统计机器翻译、谷歌代码搜索等,还包括基础设施领域,例如核心索引/搜索产品组件、MapReduce、BigTable、...

    下一代实时流数据处理平台介绍

    PCollection是并行数据集的概念,代表了一系列不可变的、分布式的数据元素。它支持无界和有界的数据集,即可以处理流数据也可以处理批量数据。每个PCollection元素都带有一个时间戳,用于确定窗口划分的依据。 ...

    HBase官方文档中文版

    - **HBase**:HBase是一种分布式、版本化的列式存储系统,基于Google Bigtable论文中的概念开发,作为Apache Hadoop生态系统的一部分。它利用Hadoop HDFS作为其文件系统,并依赖于ZooKeeper进行管理和协调。 - **...

Global site tag (gtag.js) - Google Analytics