Google Bigtable Key Point

Resource

Paper:
Bigtable: A Distributed Storage System for Structured Data

PPT: some key points,FYI
BigTable.pptx

Introduction

BigTable是一个分布式存储系统,用于管理结构化数据,数据量可以达到PB级别。谷歌有很多应用运行在Bigtable之上,这些应用对Bigtable提出了不同方面的要求,而Bigtable很好的满足了它们。

Bigtable经过两年半的设计、实现和部署,成功达到了广泛适用性、可扩展、高性能和高可用的目标。Bigtable可以既可以满足大流量批处理应用,也可以满足实时数据服务。这些应用配置的Bigtable的集群也各不相同,有的机器很少,有的机器有上千台。
Bigtable不支持完整的关系模型,它提供了一种简单的数据模型,使客户端可以更多的控制数据分布和数据格式。数据通过行名和列名及进行索引,数据本身也作为字符串存储,可能是由客户端序列化结构化或者半结构化数据得到的。

Data Model

Bigtable的数据模型本质上是一个稀疏的、分布式的、持久化的多维有序map。这个map以行、列和时间戳作为键值key,索引值value

稀疏体现在以行名和列名存储数据上,分布式体现在数据分布在不同的机器上,持久化体现在存储于磁盘上,多维也体现在行名和列名上,有序体现在数据以行名有序存储。

  1. Rows
    Bigtable的行名可以是任意的字符串,最大可以到64KB。行可以进行原子读写。Bigtable存储数据时以行名字典序存储。
    每个表按照键范围划分成了不同的子表,子表是分布和负载均衡的单位。

  2. Column Families
    列族是列的集合,列族中的数据往往是同一种类型的,被一起压缩。存储数据之前必须先创建列族,然后就可以使用列族中任意列来保存数据。这里有个设计意图是,希望一个表的列族要少(最多几百个),但是列可以有任意多个。列族是访问控制和磁盘、内存统计的单位?

  3. TimeStamp
    Bigtable里的每个cell都保留了数据的不同版本,通过timestamp来索引。Timestamp可以由Bigtable生成,代表真实事件;也可以由客户端自己生成,满足自己的需求。不同版本的数据以降序排列,以便新版本可以先被读到。为了简化数据版本的管理,有两种以列族为单位的垃圾回收策略:一种是保留最新的n个版本的数据,还有一种是保留足够新的版本,比如最近7天的数据。

Overview

Data Model

Data Model

API

API

Tablet Location

Tablet Location

Tablet Serving

Tablet Serving

Performance

Performance

flacro

Read more posts by this author.