Hbase数据模型
rowkey
Hbase是面向列式存储的分布式数据库,rowkey是行键,用来组织逻辑上的一行数据。rowkey可以是任意类型的字符串,最大长度为64KB。rowkey按照字典顺序排序存储,在设计rowkey时,需要考虑如何充分利用rowkey的这一特性,特高查询效率和存储效率,通常把经常一起读取的行存储在同一区域内。
列族
Hbase表中的每个列都属于一个列族,列族是表的schema的一部分,但列不是,列族必须在创建表时定义。列名都以列族为前缀,例如:
user:name
user:age
其中,user是列族,name 和 age 是列。
Cell
由{row key, columnFamily, version}确定的唯一单元,也就是某列的某个版本的值,Cell中的数据类有数据类型,都是以字节数组的形式存储。
Time Stamp
Hbase中通过rowkey和column family确定一个cell,这个cell包含了不同版本的数据,版本通过时间戳来表示,可以由Hbase自动生成,也可以由用户指定,自动生成时,时间戳精确到毫秒,不同版本的数据按照时间戳倒序排列。
为了避免cell版本过多,hbase提供了两种回收不同版本的cell的策略
- 保存数据的最后n个版本
- 保存数据的最后一段时间的版本