HBase是Google Bigtable的开源实现。HBase是一个开源的、分布式的、多版本的、面向列的存储模型。HBase利用HDFS作为其文件系统(或本地),还可以通过MapReduce计算模型来并行处理大数据。下面我们了解一下HBase中的基本概念:
Row Key
1) Row key是检索记录的主键。
2) Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。
3) 数据按照Row key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)
4) 行的读写是原子操作。
Column family (列族)
1) HBase表中的每个列都属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出,必须在使用表之前定义。列名都是以列族作为前缀,中间以冒号(:)隔开,如:courses:math。
2) 访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。
Cell (存储单元)
由{row key, column(=<family> + <label>), version} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。
Timestamp(时间戳)
1) 每个cell都保存着同一个数据的多个版本,版本通过时间戳来索引。
2) 时间戳为64位整型。
3) 可以自动赋值(当前系统时间),也可以用户自己指定。
4) 不同版本数据按照时间戳倒序排。
5) HBase提供了两种数据版本回收机制:a. 保存数据最后n个版本;b. 保存最近一段时间内的版本。用户可以针对每个列族去设置。