目录
概述
bigtable是一个key-value模式的分布式结构化存储系统,不提供传统关系数据库的sql功能,设计目标是高适用性、高扩展性、高性能、高可用
key-value模式详解
bigtable的key-value模式如下:
(row:string, column:string, time:64) ==> string
其中key是一个三元组,包含行、列、时间戳,value是一个string。bigtable不会解析string而是由用户自定义schema。这里给一个例子:
这里row:string为"com.cnn.www",有三个列,其中"contents:"的列有三个版本,即三个时间戳,通过("com.cnn.www","contents:",t3)可以唯一映射到一个value值,这里是url的html body
构件
bigtable依赖其他几个google基础构件:
- google flie system:用gfs存储日志和数据文件,关于gfs的剖析可以参照gfs的paper
- google sorted string table:用作bigtable内部存储文件的格式,关于sstable的剖析可以参照leveldb源码分析中相关内容
- chubby:bigtable用chubby协调服务,例如master选举、元数据保存等,chubby相关内容可以参照chubby的paper
组件
bigtable包含几个主要组件:链接到客户程序中的库、master节点、tablet server。其中master负责为tablet server分配tablet、检测新加入的或者失效的tablet server