HBase数据库相关基本知识

简介: HBase数据库相关知识1、 HBase相关概念模型l  表(table),与关系型数据库一样就是有行和列的表l  行(row),在表里数据按行存储、行由行键(rowkey)唯一标识,没有数据类型统一为byte[]数组l  列族(column family),行里的数据按列族分组String类型,每个表必须至少有一个列族l  列限定符(column qualifier),列族里的数据用列限定符定位。

HBase数据库相关知识

1、 HBase相关概念模型

l  表(table),与关系型数据库一样就是有行和列的表

l  行(row),在表里数据按行存储、行由行键(rowkey)唯一标识,没有数据类型统一为byte[]数组

l  列族(column family),行里的数据按列族分组String类型,每个表必须至少有一个列族

l  列限定符(column qualifier),列族里的数据用列限定符定位。类似关系型数据库里面的列,不必事前定义,没有数据类型同样是byte[]数组

l  单元(cell),单元值我们真实存储的数据(value),没有数据类型byte[]数组

l  时间版本(version),单元值有时间版本,时间版本用时间戳标识long类型(默认保留3个数据版本)

2、 数据存储模型

Hbase集群数据存储底层使用HDFS保障数据容错(一个节点宕机负责迁移数据到另外节点保证数据一致),多机器分布式存储(下图为一个机器节点存储示意图)

 

 

 

       每个Hbase服务host主机被HDFS视为一个DataNode(数据节点)每个数据节点有一个RegionServer(区域服务)负责读写服务。

3、 表存储分区

下图是一张表在Hbase中存储的数据分割,数据通过行键(rowkey)进行数据分割到不同Regionserver(如果行键是有一定规则的Hbase一般不会负载分发数据,一般会将行键原始值进行MD5或哈希散列计算之后作为行键存储)

      

 

4、 表中各元素关系

 

      

 

       一个表中可以有多个列族,但不宜太多(有待考究)一般是3~5个左右。其中类某些列族里面的数据可以一对多的关系,两个列族之间互不影响(见下图)

 

 

 

 

5、 Hbase数据物理存储与逻辑表结构及数据版本的关系

 

 

 

       Hbase的张表是一个目录,下面是列族目录,不同的列族在存储路径上互不影响,一个列族内的数据存储在一个HFile上面。

       每个列族内的每一列的每个cell数据都有自己的版本(Hbase默认保存3个版本的数据,可设置)。

插入新数据作为数据(value)的第一个版本(如不指定时间戳版本Hbase自动生成)。

更新数据不会再原有数据上做更新,同插入数据一样,只不过在之前版本的前面(逻辑上)获取新的时间戳(version)。

读取数据的时候一般读取倒序第一行就是后插入的数据,同时也可以读取之前保存的版本数据。

删除数据不会马上真实的删除存储的数据,只是对要删除的数据进行标记(不会被查询到),等待HFile数据合并的时候进行一起删除。

 

下图为键值关系及版本示意图

 

 

 

       要想定位 “张三” 需要 行键,列族,列,时间戳(version)定位到。

 

6、 HBase优势

通过上面简单了解HBase有如下特点

  1. 非常突出“列”的概念,null值不占空间
  2. 每张表只能有一个索引,就是行键(rowkey)
  3. 列族可以标识一类列,两个列族之间互不影响
  4. 存在多个数据版本
  5. 更新和删除操作比较特殊
  6. 数据结构无限制

通过特点有一下优势

  1. 吞吐量高
  2. 随机读非常快(按rowkey读取)
  3. 集群容错好
  4. 横向扩展方便,适合长期存储

劣势

1. 不支持二级索引

2. HFile数据文件合并或拆分会对服务可用性造成一定影响

3. 行键(rowkey)实际使用需要进行良好设计

4.    很难进行模糊查询和部分数据提取

7、 针对不足一些方案

针对不支持二级索引的可以使用另一张表进行二级索引存储或使用redis进行二级索引存储。

HFile数据合并或拆分在业务闲时进行操作

行键根据实际业务需求进行设计

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
分布式计算 Java Hadoop
杨校老师课堂之分布式数据库HBase的部署和基本操作
杨校老师课堂之分布式数据库HBase的部署和基本操作
61 0
|
4月前
|
存储 SQL 分布式数据库
|
6月前
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
104 0
|
7月前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
112 1
|
6月前
|
存储 分布式计算 Hadoop
【大数据】分布式数据库HBase下载安装教程
【大数据】分布式数据库HBase下载安装教程
169 0
|
6月前
|
存储 缓存 大数据
【大数据】分布式数据库HBase
【大数据】分布式数据库HBase
117 0
|
7月前
|
存储 分布式计算 Java
大数据存储技术(3)—— HBase分布式数据库
大数据存储技术(3)—— HBase分布式数据库
1607 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
22天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
160 1