HBase,也是Apache HBase,是一个分布式、列存储的数据库,HBase是根据谷歌的BigTable理论开发,就像是谷歌的BigTable在Google文件系统之上发挥的作用一样,HBase在Hadoop之上发挥同样的作用。
1.HBase的数据模型
数据以表的形式存储,也就是有行和列,不过Hbase的表是一个多维的map。
1.1 HBase的Table
HBase的Table由多个行组成
1.2 HBase 的行
HBase的行由行的Key和一个或多个列组成,行在存储的时候,行Key按字母表顺序存放。
1.3 HBase的列
一个HBase的列由列family和列qualifer组成
1.4HBase的列family
列family由一组列和列值组成,出于性能方面的考虑,每个列family有一些存储参数,比如数据是否在内存缓存、数据怎样压缩的。每行由相同的列family组成。
1.5Hbase的列qualifier
每个列family有一个列qualifier,列qualifier的作用是作为列数据的一个标识,比如一个列family是content,那么这个列的列qualifier会是content:html或者content:pdf之类。
1.6HBase的cell
一个cell是行和列family、列qualifier、一个时间戳的组合。{行,列,版本}的一个三元组确定一个cell
1.7Hbase的时间戳
时间戳和每个cell值一起被写入,默认时间戳标识HBase的RegionServer写该数据的时间。
1.8HBase的数据模型的实例
如下图所示,这是一个命名为webtable的表,有两行数据,即com.cnn.www和com.example.www,和三个列family,这三个列family分别命名为contents,anchor,people。
在这个例子里,第一行(com.cnn.www)的anchor列family包含两列,即cssnsi.com和my.look.ca,以及contents列family包括一列,即html。
这个例子的com.cnn.www行包含5个版本的cell的数据,com.example.www包含1个版本的cell的数据。
这个例子里,列qualifier的意思就是 列family:列qualifier,比如contents:html或者 anchor:cnnsi.com。
这个例子里,引号里面的就是cell的值。
2.HBase的使用
四个主要的数据操作是Get、Put、Scan和Delete。所有的数据操作HBase都会以有序的方式返回数据,首先按行,然后按列family,然后按列qualifier,最后按时间戳(时间戳是倒排的,以便最新的数据首先返回)
2.1Get操作
Get操作返回一个特定的行。
2.2Put操作
如果行Key不存在,Put操作可以加一个新行,如果行Key存在,则更新这个相同行Key的行。
2.3Scan操作
Scan操作可以根据给定的条件遍历数行。
2.4Delete操作
Delete操作可以从一个表里删除一行