Hbase行健设计原则-阿里云开发者社区

开发者社区> 漏船载酒> 正文

Hbase行健设计原则

简介:
+关注继续查看

--原理
Hbase是一个分布式的 面相列的数据库,他和一般关系型数据库最大的区别是:HBase很合适与存储非结构化的数据,还有就是它基于列的而不是基于行的模式.
既然HBase是采用KeyValue的列存储,那么RowKey就是KeyValue的key了,表示唯一一行,RowKey也是一段二进制码流,最大长度为64KB内容可以由使用的用户自定义,数据加载时,一百也是根据RowKey的二进制序由小到大的进行.
HBase是根据RowKey来进行检索的,系统通过找到某个RowKey所在的Region然后将查询数据的请求路由到该Region获取数据,HBase的检所支持3种方式.
(1)通过单个RowKey访问,即按照某个RowKey键值进行get操作,这样获取唯一一条记录.
(2)通过RowKey的range进行scan ,即通过设置startRowKey和endRowKey,在这个范围内进行扫描.
(3)全表扫描.即直接扫描整张表中所有行记录.
HBASE按单个RowKey检索的效率是很高的,耗时在1毫秒以下,每秒中可获取1000~2000条记录,不过非key列的查询很慢.
分类
RowKey长度原则
RowKey是一个二进制码流,RowKey的长度被很多开发者建议设计在10~100个字节,不过建议越多越好,不要超过16个字节.
原因如下:
(1)数据的持久化文件HFile中是按照KeyValue存储的,如果RowKey过长比如100个字节,1000万列数据光RowKey就要占10万亿个字节,将近1G数据,这回极大影响Hfie的存储效率
(2)MenStore将缓存部分数据到内存,如果RowKey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率,因此RowKey的字节长度越短越好.
(3)目前操作系统都是64位系统,内存8字节对齐,控制在16字节

RowKey散列原则
如果RowKey是按时间戳的方式递增,不要讲时间放在二进制码的前面,建议将RowKey的高位作为散列字段,由程序循环生成,地位放时间字段,这样将提升数据均衡分布在每个RegionServer实现负载均衡的几率,如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer 降低查询效率.

1.随机数
2.UUID
3.MD5,Hash,等加密算法
4.业务有序数反向

RowKey唯一原则
必须在设计上保证其唯一性
RowKey是hashBase里面唯一的索引,对于某些查询频繁的限定条件数据需要把内容放在rowkey里面

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

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
25950 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11701 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8174 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11723 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
11252 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4500 0
+关注
漏船载酒
我想:这该是一条多么长的路啊.
48
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载