HBase - 数据模型的重要概念 | 那伊抹微笑

博文作者: 妳那伊抹微笑
itdog8 地址链接 : http://www.itdog8.com/thread-188-1-1.html
博文标题: HBase - 数据模型的重要概念 | 那伊抹微笑
个性签名: 世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在
技术方向: Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术
转载声明: 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
qq交流群:214293307  云计算之嫣然伊笑(期待与你一起学习,共同进步)




HBase 是一种列式存储的分布式数据库,其核心概念是表(Table)。与传统的关系型数据库一样,表由行和列组成,但 HBase 同一列可以存储不同时刻的值,同事多个列可以组成一个列族(Column Family),这种组织形式是处于存取性能考虑的。

1 表
在 HBase 中数据以表的形式存储。

2 行键
行键,也就是 Rowkey,是 HBase 中最为重要的概念之一。
行键是不可分割的字节数组。
行键是按字典顺序由低到高存储在表中的,以一个空的数组来标识表空间的起始或者结尾。

在 HBase 中行键是唯一的索引,不过在新版本的 HBase 中考虑了对辅助索引的支持。

为了高效检索数据,应该仔细设计 Rowkey 以获得最高的查询性能:首先 Rowkey 被冗余存储,所以长度不宜过长,过长的 Rowkey 将会占用大量的空间同时会降低检索效率。
其次 Rowkey 应该尽量分布均匀,这样不会差生热点现象。
最后 Rowkey  唯一原则,必须在设计上保证其唯一性。

3 列族(一个列族对应 HDFS 上的一个目录)
HBase 中列族是一些列的集合。一个列族中的所有列成员有着相同的前缀,以冒号( :)分割。
比如,列 address:country 和 address:province 都是列族 address 的成员。
Column 前缀必须是可打印的字符,剩下的部分(成为 Column Qualifier),可以有任意字节数组组成。

在物理上,一个列族的成员在文件系统上都是存储在一起的。因为存储优化都是针对列族级别的,这就意味着,一个列族的所有成员都是通过相同的方式访问的。

列族可以动态添加,但是修改列族要先停用表。
经常需要一起查询的列放在一个列族中。
但也不要有太多的列族,因为跨列族访问是低效的。

4 单元格
HBase 中的单元格由行键、列族、列、时间戳唯一确定。
单元格的内容是不可分割的字节数组。
每个单元格都保存着同一份数据的多个版本,不同时间版本的数据按照时间顺序倒序排序,最新时间的数据排在最前面,时间戳是 64 位的整数,可以由客户端在写入数据时赋值,也可以由 RegionServer 自动赋值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值