BigTable中,SSTable与Tablet的关系是啥

Bigtable 中最重要的内容有以下几点:
提出一种不同于关系型数据模型但更为灵活简单的 KV 形式的数据存储模型:稀疏的分布式可持久化多维表,其映射关系为: (row:string, column:string, time:int64) → string
典型地,如论文中图例所示:
BigTable中,SSTable与Tablet的关系是啥

查找内容时先确定 row,然后根据 row 查找特定 column,最后可根据 column 和相应的 version 确定需要查找的内容。
其中:row 是按序排列,一定范围的 row 可组成一个集合,称为 tablet,它是分布式存储和资源调度的最小单元;column 会被组合成 column family,column family 下的成员用 family:qualifer 来确定;表中的每个单元存储该内容的不同版本(以不同时间戳作为区分)并按降序排列(最新版本位于最前面);单行可保持原子操作,跨行操作则无法保证原子性;
Bigtable 会将数据持久化成 SSTable 的格式。该格式下的的 key 都是经过排序后不可变的 KV 对。每个 SSTable 由 block 组成并通过 block index 来定位每个 block。Bigtable 内存中维护着 memtable 用以处理写请求。客户端对 Bigtable 的写操作首先会被内存中 memtable 处理,当 memtable 的大小超过一定阈值时,Bigtable 将会生成新的 memtable 并将老的 memtable 以 SSTable 的格式刷入磁盘;Bigtable 依赖于 Chubby 服务来进行分布式调度和元数据存储。客户端首先要从 Chubby 中获取相应的 Root tablet,再从 Root tablet 中索引找到其他 tablet。新的 tablet 的增加和删除必须通过 Chubby 服务来操作。Chubby 服务一旦挂了,Bigtable 也就挂了,因此 Chubby 是一个高可用服务,一般有 5 个节点组成,节点间用 Paxos 协议组织,开源的类似实现有 Zookeeper 和 etcd; 【BigTable中,SSTable与Tablet的关系是啥】 综上所述,SSTable 可认为是 Bigtable 中单机数据在磁盘的存储格式,而 tablet 则是分布式调度和存储的最小单元。

■网友
table由按照rowkey排序后划分出的子片tablet组成,所以tablet是逻辑概念,tablet要持久化到GFS文件,每个文件称为SSTable.


    推荐阅读