HBase数据库相关基本知识-阿里云开发者社区

开发者社区> zygfengyuwuzu> 正文

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数据合并或拆分在业务闲时进行操作

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
专访 OceanBase 数据库创始人阳振坤: 数据驱动业务发展 共建数据技术未来
2020年11月20日,第十届数据技术嘉年华在北京丽都皇冠假日酒店盛大开启。大会现场,北京奥星贝斯科技有限公司CTO、OceanBase数据库创始人阳振坤接受了企业网D1Net的采访。本文来自『企业网D1Net』的专访报道。
211 0
蚂蚁自研数据库OceanBase首次阐述战略:继续坚持自研开放之路 开源300万行核心代码
在数据库OceanBase3.0峰会上,蚂蚁集团自主研发的分布式数据库OceanBase首次从技术、商业和生态三个维度对未来发展战略进行了系统性阐述。同时,OceanBase宣布正式开源,并成立OceanBase开源社区,社区官网同步上线,300万行核心代码向社区开放。
5085 0
2021 OceanBase 数据库大赛来袭!邀你改编世界,码出未来
2021 OceanBase 数据库大赛报名开始啦! 如果你想了解最前沿的数据库理念 ,如果你想提前锁定最新鲜的实习Offer , 如果你想瓜分丰厚大奖, 如果你想与顶流专家天团面对面交流 ,那还在等什么,OceanBase数据库大赛,欢迎来战!
829 0
数据安全和兼容性再升级 揭秘蚂蚁金服自研数据库OceanBase 2.2版本
阿里巴巴和蚂蚁金服完全自研的OceanBase就创新性地将关系型数据库结合分布式架构,打造出全球首个金融级分布式关系型数据库。
247 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4407 0
中国数据库OceanBase登顶之路
今年天猫双11当天,OceanBase数据库再次刷新数据库处理峰值,达6100万次/秒,创造了新的世界纪录。
2387 0
h2database 数据库分析
1、 源码结构 git source: https://github.com/h2database/h2database.git ![screenshot](http://img4.tbcdn.cn/L1/461/1/636124ed7f5dcf78355e3d3825e747f16ecf3466.png) h2 的源码不是标准的maven工程,需要重新进行目录组织生成maven
2624 0
+关注
zygfengyuwuzu
本人从事多年java开发对技术有浓厚的兴趣,喜欢分享
25
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载