这是我参与「第四届青训营」笔记创作活动的第10天
1.1 什么是HBase ?
HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一。
参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写效率。
采用存储计算分离架构,
- 存储层基于HDFS存储数据,提供容错机制和高可靠性;
- 计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力;
提供强一致语义,在CAP理论中属于CP系统。
▪️ Consistency, Availability, Partion Tolerance
1.2 HBase和关系型数据库的区别
1.3 HBase数据模型
HBase以列族(column family)为单位存储数据,以行键(rowkey) 索引数据。
1)列族需要在使用前预先创建,列名(column qualifier) 不需要预先声明,因此支持半结构化数据模型。
2)支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值。
1.3 HBase 数据模型-逻辑结构
➢HBase是半结构化数据模型。以列族(column family)为单位存储数据,以行键(rowkey) 索引数据。
1)列族需要在使用前预先创建,列名(column qualifier)不需要预先声明,因此支持半结构化数据模型。
2)支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体值。
➢通过非关系型视图理解HBase数据模型:
1)适合稀疏数据,缺省列不占用存储空间。
2)通过(rowkey, column family, column qualifier, version)
3)唯一指定一个具体的值。
4)允许批量读取多行的部分列族/列数据。
1.3 HBase数据模型 - 物理结构
➢物理数据结构最小单元是KeyValue结构:
1)每个版本的数据都携带全部行列信息。
2)同一行,同一列族的数据物理.上连续有序存储。
3)同列族内的KeyValue按rowkey字典序升序,column qualifier升序,version 降序排列。
4)不同列族的数据存储在相互独立的物理文件,列族间不保证数据全局有序。
5)同列族下不同物理文件间不保证数据全局有序。
6)仅单个物理文件内有序。