您的位置:首页 > 其它

HBase 数据模型

2015-09-16 16:28 232 查看
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操作可以从一个表里删除一行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: