刚接触网站建设有哪些问题,夜月直播免费下载,门户网站属于新媒体吗,开发一个网站的成本HBase是非关系型数据库#xff0c;是高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。
HBase使用场景
大规模数据存储#xff1a;如日志记录、数据库备份等。实时数据访问#xff1a;如实时搜索、实时分析等。高性能读写#xff1a;如高并发、低延迟的读写操…HBase是非关系型数据库是高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。
HBase使用场景
大规模数据存储如日志记录、数据库备份等。实时数据访问如实时搜索、实时分析等。高性能读写如高并发、低延迟的读写操作。
一般我们从数仓中离线统计分析海量数据将得到的结果插入HBase中用于实时查询。
表结构
hbase在表中组织数据。表名是字符串和字符的组合可以在文件系统路径中使用
这里以一个公司员工表为案例来讲解此表中包含员工基本信息员工姓名、年龄员工详细信息工资、角色以及时间戳。整体表结构如下
每一行有一个RowKey用于唯一地标识和定位行各行数据按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是两个列族列族下又有多个具体列。员工基本信息列族姓名、年龄。详细信息列族薪水、角色
行键RowKey
在表中数据依赖于行来存储行通过行键来区分。行键没有数据类型通常是一个字节数组
行键类似mysql中的主键Table中的记录按照Row Key排序行键是表结构的一部分由于Hbase只支持3中查询方式
基于Rowkey的单行查询基于Rowkey的范围扫描全表扫描
因此Rowkey对Hbase的性能影响非常大Rowkey的设计就显得尤为的重要。rowkey 行键可以是任意字符串(最大长度是 64KB实际应用中长度一般为 10-100bytes)最好是 16。在 HBase 内部rowkey 保存为字节数组。rowkey是行的唯一标识相同行键的数据属于同一行HBase 会对表中的数据按照 rowkey 升序排序 (字典顺序)
列族/列簇ColumnFamily
列族是一些列的集合一个列族所有成员都有同样的前缀
行中的数据通过列族来组织。列族也暗示了数据的物理排列。所以列族必须预先定义并且不容易被修改。每行都拥有相同的列族可能有些行的数据为空。列族是字符串和字符的组合可以在文件系统路径中使用
列族必须在表建立的时候声明列则不需要特别声明用户随时可以创建新列。
Hbase通过列族划分数据的存储列族下面可以包含任意多的列实现灵活的数据存取。就像是家族的概念我们知道一个家族是由于很多个的家庭组成的。列族也类似列族是由一个一个的列组成任意多。Hbase表的创建的时候就必须指定列族。就像关系型数据库创建的时候必须指定具体的列是一样的。Hbase的列族不是越多越好列族越多在取一行数据需要参与IO、搜寻的文件就越多官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。一个列族会储存一个物理文件通常将具有相同IO读写属性的列放在同一个列族下IO属性即经常在一起查询的字段由具体的实际业务中决定
列Column
列为每一行的列名和对应的值可以理解为mysql的列一个列族包含一个或多个列列族是表结构的一部分而列不是定位一个列必须指定列族列名都以列族作为前缀如courseshistorycoursesmath都属于courses这个列族
单元格cell
HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell每个 cell 都保存着同一份数据的多个版本。版本通过时间戳来索引。由{rowkey, column( ), version} 唯一确定的单元。 Cell 中的数据是没有类型的全部是字节码形式存贮。
HBase表特点
数据规模大单表可容纳数十亿行上百万列。无模式不像关系型数据库有严格的Scheme每行可以有任意多的列列可以动态增加不同行可以有不同的列列的类型没有限制。稀疏值为空的列不占存储空间表可以非常稀疏但实际存储时能进行压缩。面向列族面向列族的存储和权限控制支持列族独立查询。数据多版本利用时间戳来标识版本数据无类型所有数据以字节数据形式存储