HBase的Rowkey设计(mark)

简介:        在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了。     Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中。


       在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了。


     Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中。一个空的数组用来标识表空间的起始或结尾。


     在设计HBase表时,Rowkey设计是最重要的事情,应该基于预期的访问模式来为Rowkey建模。Rowkey决定了访问HBase表时可以得到的性能,原因有两个:Region基于Rowkey为一个区间的行提供服务,并且负责区间的每一行;HFile在硬盘上存储有序的行。当Region将内存数据刷写为HFile时,这些行已经排过序了,也会有序的写到硬盘上。Rowkey的有序特性和底层存储格式可以保证HBase表在设计Rowkey之后的良好性能。


   关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引。访问数据库的最主要方式就是使用Rowkey。非Rowkey访问,即在不清楚Rowkey前提下访问表,可以使用全表扫描。设计Rowkey有各种技巧,而且可以针对不同访问模式进行优化。


   Rowkey是HBase的KeyValue存储中的Key,通常将用户要查询的字段作为Rowkey,查询结果作为Value。


   设计Rowkey之前,要注意一下几点:


1,Rowkey是以字典顺序从大到小排序


         原生HBase只支持从小到大的排序

2,尽量散列Rowkey设计


        散列之后的数据,就能保证所有的数据都不是在一个Region上,从而避免读写的时候负载会集中在个别Region上。

        

3,RowKey的长度尽量短


       如果Rowkey太长,第一存储开销会增加,影响存储效率;第二内存中Rowkey字段过长,会导致内存的利用率降低,进而减低索引命中率。
       一般做法:
             时间使用Long来表示;
             尽量使用压缩编码;



      


相关实践学习
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
目录
相关文章
|
SQL 分布式数据库 Apache
|
分布式数据库 索引 Hbase
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
HBase应用与发展之HBase RowKey与索引设计
122 0
《HBase应用与发展之HBase RowKey与索引设计》电子版地址
|
分布式数据库 Hbase
|
分布式数据库 Hbase
|
存储 缓存 负载均衡
Hbase的Rowkey设计以及如何进行预分区
今天有人问我Hbase的rowkey设计和预分区的问题,这篇文字就简单介绍一下.,关于Hbase的表的一些基本概念这里就不说了,直接说重点,尽可能说的简单一点,废话就不写了. 1.什么是Rowkey? 我们知道Hbase是一个分布式的、面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式.
Hbase的Rowkey设计以及如何进行预分区
|
存储 分布式数据库 开发者
HBase表设计_8 | 学习笔记
快速学习 HBase表设计_8
151 0
|
存储 分布式数据库 开发者
HBase 表设计_7 | 学习笔记
快速学习 HBase 表设计_7
126 0
|
分布式数据库 开发者 Hbase
HBase 表设计_6 | 学习笔记
快速学习 HBase 表设计_6
123 0
|
存储 大数据 Java
HBase 表设计_5 | 学习笔记
快速学习 HBase 表设计_5
125 0
|
分布式数据库 开发者 Hbase
HBase 表设计_4 | 学习笔记
快速学习 HBase 表设计_4
123 0