[发明专利]一种构建Hbase二级索引表方法在审
申请号: | 201911403256.6 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111198886A | 公开(公告)日: | 2020-05-26 |
发明(设计)人: | 胡峻;朱慧君 | 申请(专利权)人: | 浙江华云信息科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2455 |
代理公司: | 浙江翔隆专利事务所(普通合伙) 33206 | 代理人: | 王晓燕 |
地址: | 310012 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 构建 hbase 二级 索引 方法 | ||
本发明公开了一种构建Hbase二级索引表方法,涉及数据库领域。Hbase本身只提供基于行键和全表扫描的查询,进行非行键的查询时需要对全表扫描,这样的查询效率低下。本发明步骤包括:hbase表上给原表建立索引表;对于原表的每条记录,在索引表上生成相应的索引记录,其索引记录的行键包括分区键、索引值、连接符和原表主键,所述的分区键为索引记录所在region的起始键字段,分区键作为索引表主键,分区键采取随机散列方式再结合索引表预分区;对分区值进行预定义;建立索引表时预先确定索引分区值;建立索引表时对索引表按照索引分区值进行预分区。可有效提升并行性能,提高查询效率。
技术领域
本发明涉及数据库领域,尤其涉及一种构建Hbase二级索引表方法。
背景技术
目前,业界对于Hbase的二级索引已提出了多种方案。索引表在创建时只有一个分区时,会导致大量的访问集中单个region上,另外在写比较频率的场景下,随着数据增长越来越快,split次数也会增多,而split是比较耗时耗资源的。若预分区一开始就预建好了,但由于索引表主键的前缀往往是连续相同且顺序增大,这样还是会导致大量的读,写或其他操作访问集群中的一个或少数个节点,会造成某个热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用。
发明内容
本发明要解决的技术问题和提出的技术任务是对现有技术方案进行完善与改进,提供一种构建Hbase二级索引表方法,以提升操作访问效率为目的。为此,本发明采取以下技术方案。
一种构建Hbase二级索引表方法,包括以下步骤:
1)hbase表上给原表建立索引表;
2)对于原表的每条记录,在索引表上生成相应的索引记录,其索引记录的行键包括分区键、索引值、连接符和原表主键,所述的分区键为索引记录所在region的起始键字段,分区键作为索引表主键;
3)对分区值进行预定义;
4)建立索引表时预先确定索引分区值;
5)建立索引表时对索引表按照索引分区值进行预分区。
实现了二级索引表的建立,通过二级索引表,在写数据时,可以提升并行性能,提高访问效率。
作为优选技术手段:步骤2)中,分区键采取随机散列方式的一种分布,再结合索引表预分区。采取预分区和主键的散列设计,可以很好地解决了二级索引的数据倾斜和热点问题,在写数据的时候,能均等地命中这些预分区,更好地提升并行性能。
作为优选技术手段:步骤2)中,若原表有分区键,可以获取原表的分区键作为起始键,这样原表记录和索引记录具有相同主键前缀,则会分配到同一个regionserver上。取原表的分区键做为索引表的分区键,当通过非键值条件来访问索引表和原表时,可以减少一次rpc。
作为优选技术手段:步骤2)中,取原表行键值的哈希取模获得索引键分区值。实现原表主键哈希取值。
作为优选技术手段:步骤2)中,索引值哈希取模获得索引键分区值。实现索引值哈希取值。
作为优选技术手段:步骤2)中,所述的索引值由单个字段或者多个字段组成,多个字段之间由非打印字符连接而成。实现索引值定义结构。
作为优选技术手段:步骤3)中,采取ASCII字符顺序的字符作为分区键值。可有效实现分区键取值。
作为优选技术手段:使用随机函数获取0~索引表预分区数的范围内的一个随机数为数组地址,根据地址取到相应字符做为分区键。实现散列随机方式。
作为优选技术手段:取其指定字段的哈希值再对索引表的预分区数取模的结果为数组地址,根据地址取到相应字符做为分区键。实现
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江华云信息科技有限公司,未经浙江华云信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911403256.6/2.html,转载请声明来源钻瓜专利网。