一、数据模型
1.数据模型例子
2.数据模型解析
1)存储(keyvalue)
HBase什么样的数据都能储存,数据的话在HBase当中都是以字节数组的形
式储存的;HBase中数据的存储是以key-value格式来存储的,key是rowkey+时
间戳+列簇,valuValue部分没有那么复杂的结构,就是纯粹的二进制数据
引用原文:https://blog.csdn.net/ping_hu/article/details/77115998
和https://blog.csdn.net/weixin_33750452/article/details/90308038
2)Row Key
<1> rowkey介绍
如果你想对HBase的表进行防问的时候必须通过row key,那么row key是什
么呢:Row Key代表了一行数据;它可以是任意的字符,但是最大只有64k;并
且按照字典排序的;
注:我们可以利用字典排序这个点,将经常使用的数据放在一块,最近要访
问的放在一块,来进行小小的优化一下
<2> rowkey设计
row key设计的时候需要注意的是,row key 的设计规则,规则有这么几个
定长
为什么定长呢?那是以为内在HBase当中,row的排序是按照字典排序
的,如果不定长的话,排序就有可能会打乱。
越短越好
为什么定长呢?那是以为内在HBase当中,每条数据都会呆着rowkey,
所以说rowkey越长,所消耗掉额空间就越多,适当的减少rowkey的长度可以提
高存储空间的利用
唯一
按照实际的业务来
3)CF(Clumu Family)
· 列簇的话,它是shcema的一部分,所以它必须预先给出;
· 在HBase表中,列名以列簇为前缀,一个列簇可以有很多个成员(列);
· 成员的话可以按照业务的需求随时追加(动态加入);
· HBase存储把同一个列簇下的数据放在同一个目录下,就是说是以列簇
为目录存储的,目录下的文件存储该列簇的数据;
· 需要注意的是列簇一般最多只能有三个,一般只用一个就行,这是因为
当一个列簇flush的时候,因为关联效应其他的列簇同样也会flush,最
终导致系统产生更多的IO。
4)TimeTamp
时间戳是有系统生成的,精确到毫秒的64位整数,而且它本身就代表了
唯一性;在HBase当中每个cell存储单元对同一份数据有多个版本,而版本
是根据时间戳来区分的