Hbase的数据模型
Hbase的数据模型
目录
一 、数据的存储介绍
1、HRegion是HBase中分布式存储和负载均衡的最小单元。
存储的时候,每个Region会有一个目录(命名空间目录/表名目录/Region目录/列簇目录)
最小单元就表示不同的HRegion可以分布在不同的HRegionserver上
2、HRegion由一个或者多个Store组成,每个store对应一个列簇(columnsfamily)
3、每个Strore又由一个memStore和0至多个StoreFile组成。
二、单元格CELL
(1)由行和列的坐标交叉决定
(2)单元格是有版本的
(3)单元格的内容是未解析的字节数组
(4)由{row key, column( =<family> +<qualifier>), version}
唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮
三、RowKey说明
(1)唯一标识一行数据
(2)可以通过RowKey获取一行数据
(3)表里的数据是按照字典升序排序的
(4)Row key最大只能存储64k的字节数据(通常我们会用到10-100字节byte,不会用到64k)
四、Column Family(列族)和qualifier(列)
(1)HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。
如 create ‘test’, ‘course’。
(2)列名以列族作为前缀,每个“列族”都可以有多个列成员(column);
如course:math, course:english, 新的列族成员(列)可以随后按需、动态加入。
(3)权限控制、存储以及调优都是在列族层面进行的(因为Hbase是面向列簇的)
(4)HBase把同一列族里面的数据存储在同一目录下,由几个文件保存
五、Timestamp时间戳
(1)在HBase每个cell存储单元对同一份数据有多个版本,
根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,
最新的数据版本排在最前面
(2)时间戳的类型是64位整型
(3)时间戳可以由HBase(在数据写入时自动)赋值,此时间戳是精确到毫秒的当前系统时间
(4)时间戳也可以由客户显式赋值(一般不手动指定),如果应用程序要避免数据版本冲突,
就必须自己生成具有唯一性的时间戳
六、HLOG
(1)HLog文件就是一个普通的Hadoop Sequence File,
Sequence File的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,
除了table和region名字外,同时还包括 sequence number和timestamp,
timestamp是”写入时间”,sequence number的起始值为0,
或者是最近一次存入文件系统中sequence number。
(2)HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)