微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hbase学习笔记一基本概念

Hbase学习笔记

数据模型

基本概念

  • row:每一行都有一个唯一的rowkey,对应多个列以及列的值,一张表中的row是按照rowkey进行排序的
  • column:hbase不同于常见的关系型数据库,其多了一个列族的概念,在定义一张hbase的表时,需要定义列族,一个列族中可以有多个列,列族中的列可以动态添加
  • timestamp:在向表中添加列的值时,会附带一个时间戳timestamp,这个时间戳可以由系统来指定,也可以人为指定,一行的指定列中可以存在多个值,因此hbase支持多版本,及同一个列可以有多个值
  • 单元格:(rowkey,column,type,timestamp,value)代表一个单元格,type是操作类型,比如put/delete,hbase是一个kv数据库,key是(rowkey,column,type,timestamp),value就是value

多维,稀疏,有序

  • 多维:hbase这个kv数据库的key由多个维度组成,比如rowkey,column
  • 稀疏:hbase中的一行可能只有一个列有值,如果这种情况发生在关系型数据库中,那么存储多个null值,而hbase则不需要存储这些null值
  • 有序:hbase会将整个表进行分片存储,相同的列族的数据存放在一起,每个分片中首先按照rowkey从小到大排序,然后按照column从小到大排序,然后timestamp从大到小排序,即某个列最新的值排在前面

    在这里插入图片描述

行式存储vs列式存储vs列族式存储

行式存储

在这里插入图片描述


同一行的数据存储在一起

优点

适用于需要获取一整行的情况

缺点

不适用于只需要获取少量几行的情况,因为这种情况下会将涉及的行的数据全部读取出来

列式村粗

在这里插入图片描述


将同一列的数据连续存储

优点

  • 适用于只读取少量列的情况
  • 因为同一列的数据具有相同的数据类型,因此可以进行压缩

缺点

不适用于读取整行的情况,因为需要读取多列

列族式

介于行式和列式之间,当每个列都是一个列族时,此时就是列式存储;当只有一个列族时,此时就是行式存储

结构模型

在这里插入图片描述


每个region中包含多个store,每个store用来存储一个列族中的数据
每个store中有一个memstore和多个hfile,首先将数据写入到memstore,超过阈值刷写到磁盘生成一个hfile,hfile满足一定条件会进行合并(一般框架设计涉及到写磁盘都会优先写入到内存中)

长处

  • 存储大量数据
  • 存储大量稀疏数据
  • 扩展方便,加新的regionserver
  • 写性能好
  • 支持数据过期,设置了ttl,自动清理过期数据

短处

  • 不支持复杂的聚合
  • 本身不支持二级索引
  • 本身不支持跨行事务,只支持单行事务

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐