CN111198886A - 一种构建Hbase二级索引表方法 - Google Patents

一种构建Hbase二级索引表方法 Download PDF

Info

Publication number
CN111198886A
CN111198886A CN201911403256.6A CN201911403256A CN111198886A CN 111198886 A CN111198886 A CN 111198886A CN 201911403256 A CN201911403256 A CN 201911403256A CN 111198886 A CN111198886 A CN 111198886A
Authority
CN
China
Prior art keywords
index
key
partition
index table
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911403256.6A
Other languages
English (en)
Inventor
胡峻
朱慧君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Huayun Information Technology Co Ltd
Original Assignee
Zhejiang Huayun Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Huayun Information Technology Co Ltd filed Critical Zhejiang Huayun Information Technology Co Ltd
Priority to CN201911403256.6A priority Critical patent/CN111198886A/zh
Publication of CN111198886A publication Critical patent/CN111198886A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种构建Hbase二级索引表方法,涉及数据库领域。Hbase本身只提供基于行键和全表扫描的查询,进行非行键的查询时需要对全表扫描,这样的查询效率低下。本发明步骤包括:hbase表上给原表建立索引表;对于原表的每条记录,在索引表上生成相应的索引记录,其索引记录的行键包括分区键、索引值、连接符和原表主键,所述的分区键为索引记录所在region的起始键字段,分区键作为索引表主键,分区键采取随机散列方式再结合索引表预分区;对分区值进行预定义;建立索引表时预先确定索引分区值;建立索引表时对索引表按照索引分区值进行预分区。可有效提升并行性能,提高查询效率。

Description

一种构建Hbase二级索引表方法
技术领域
本发明涉及数据库领域,尤其涉及一种构建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~索引表预分区数的范围内的一个随机数为数组地址,根据地址取到相应字符做为分区键。实现散列随机方式。
作为优选技术手段:取其指定字段的哈希值再对索引表的预分区数取模的结果为数组地址,根据地址取到相应字符做为分区键。实现
原表主键哈希取值方式和索引值哈希取值方式。
有益效果:在集群中,二级索引表采取预分区和主键的散列设计,可以很好地解决了二级索引的数据倾斜和热点问题,在写数据的时候,能均等地命中这些预分区,有效提升并行性能;同时在大批量查询时,可以根据预分区数增加并发度,让每个节点提供的请求处理都是均等的,这样能更好地利用集群的资源,提高并行性,提升操作访问效率。
附图说明
图1是本发明流程示意图。
具体实施方式
以下结合说明书附图对本发明的技术方案做进一步的详细说明。
实例
如图1所示,一种构建Hbase二级索引表方法,包括以下步骤:
1)hbase表上给原表建立索引表;
2)对于原表的每条记录,在索引表上生成相应的索引记录,其索引记录的行键包括分区键、索引值、连接符和原表主键,分区键为索引记录所在region的起始键字段,分区键作为索引表主键;
3)对分区值进行预定义;
4)建立索引表时预先确定索引分区值;
5)建立索引表时对索引表按照索引分区值进行预分区。
为了提升并行性能,步骤2)中,分区键采取随机散列方式的一种分布,再结合索引表预分区。采取预分区和主键的散列设计,可以很好地解决了二级索引的数据倾斜和热点问题,在写数据的时候,能均等地命中这些预分区,有效提升并行性能。
为了减少rpc调用,步骤2)中,若原表有分区键,可以获取原表的分区键作为起始键,这样原表记录和索引记录具有相同主键前缀,则会分配到同一个regionserver上。取原表的分区键做为索引表的分区键,当通过非键值条件来访问索引表和原表时,可以减少一次rpc调用。
为了实现原表主键哈希取值,步骤2)中,取原表行键值的哈希取模获得索引键分区值。实现原表主键哈希取值。
为了实现索引值哈希取值,步骤2)中,索引值哈希取模获得索引键分区值。实现索引值哈希取值。
为了实现索引值定义结构,步骤2)中,索引值由单个字段或者多个字段组成,多个字段之间由非打印字符连接而成。实现索引值定义结构。
为了实现分区键取值,步骤3)中,采取ASCII字符顺序中的一个字符作为分区键值,字符按ASCII码的顺序组成一个字符数组。可有效实现分区键取值。
为了实现散列随机方式,使用随机函数获取0~索引表预分区数的范围内的一个随机数为数组地址,根据地址取到相应字符做为分区键。实现散列随机方式。
为了实现原表主键哈希取值方式和索引值哈希取值方式,取其指定字段的哈希值再对索引表的预分区数取模的结果为数组地址,根据地址取到相应字符做为分区键。实现原表主键哈希取值方式和索引值哈希取值方式。
索引表存储时,将分区值,索引值,原表键值组成索引记录的行键存储到索引表中对应的region中。
在大批量范围查询频率多的场景下:索引表中的分区键一般采用取值随机,分布散列的方式,数据也能够更均匀的分散在每个region中。因此,在范围查询时,会把每个region的分区键和索引值组成行键前缀做为查询条件,通过增加并发数在每个region中并行执行请求查询获取数据。
在单点查询频率多的场景下:分区键一般采用可以由某个已知字段计算出来的。因此,在单点查询时,可以先计算(跟存储时的计算方式一致)出索引分区键,与索引值组成行键前缀做为查询条件,根据已知分区键可以快速定位到分区上查询,提高效率。
在建立索引表时,预先分配好数个region,预分区数可由用户创建时指定,并指明分割点,分割点指的是每个预分区的StartKey与 EndKey,StartKey与 EndKey表示这个Region维护的rowKey范围,分割点取值是根据预分区数目,从起始位置开始的ASCII字符。
以上图1所示的一种构建Hbase二级索引表方法是本发明的具体实施例,已经体现出本发明突出的实质性特点和显著进步,可根据实际的使用需要,在本发明的启示下,对其进行形状、结构等方面的等同修改,均在本方案的保护范围之列。

Claims (9)

1.一种构建Hbase二级索引表方法,其特征在于包括以下步骤:
1)hbase表上给原表建立索引表;
2)对于原表的每条记录,在索引表上生成相应的索引记录,其索引记录的行键包括分区键、索引值、连接符和原表主键,所述的分区键为索引记录所在region的起始键字段,分区键作为索引表主键;
3)对分区值进行预定义;
4)建立索引表时预先确定索引分区值;
5)建立索引表时对索引表按照索引分区值进行预分区。
2.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤2)中,分区键采取随机散列方式的一种分布,再结合索引表预分区。
3.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤2)中,若原表有分区键,可以获取原表的分区键作为起始键,这样原表记录和索引记录具有相同主键前缀,则会分配到同一个regionserver上。
4.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤2)中,取原表行键值的哈希取模获得索引键分区值。
5.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤2)中,索引值哈希取模获得索引键分区值。
6.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤2)中,所述的索引值由单个字段或者多个字段组成,多个字段之间由非打印字符连接而成。
7.根据权利要求1所述的一种构建Hbase二级索引表方法,其特征在于:步骤3)中,采取ASCII字符顺序的字符作为分区键值。
8.根据权利要求2所述的一种构建Hbase二级索引表方法,其特征在于:使用随机函数获取0~索引表预分区数的范围内的一个随机数为数组地址,根据地址取到相应字符做为分区键。
9.根据权利要求4或5所述的一种构建Hbase二级索引表方法,其特征在于:取其指定字段的哈希值再对索引表的预分区数取模的结果为数组地址,根据地址取到相应字符做为分区键。
CN201911403256.6A 2019-12-31 2019-12-31 一种构建Hbase二级索引表方法 Pending CN111198886A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911403256.6A CN111198886A (zh) 2019-12-31 2019-12-31 一种构建Hbase二级索引表方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911403256.6A CN111198886A (zh) 2019-12-31 2019-12-31 一种构建Hbase二级索引表方法

Publications (1)

Publication Number Publication Date
CN111198886A true CN111198886A (zh) 2020-05-26

Family

ID=70744568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911403256.6A Pending CN111198886A (zh) 2019-12-31 2019-12-31 一种构建Hbase二级索引表方法

Country Status (1)

Country Link
CN (1) CN111198886A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113093998A (zh) * 2021-04-21 2021-07-09 亿景智联(北京)科技有限公司 一种基于地理散列的空间分布式存储优化方法
CN113312353A (zh) * 2021-06-10 2021-08-27 中国民航信息网络股份有限公司 一种跟踪带日志的存储方法及系统
CN115729951A (zh) * 2022-11-28 2023-03-03 易保网络技术(上海)有限公司 数据查询方法、系统、设备及计算机可读存储介质
CN113312353B (zh) * 2021-06-10 2024-06-04 中国民航信息网络股份有限公司 一种跟踪带日志的存储方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608126A (zh) * 2015-12-16 2016-05-25 成都创智云科技股份有限公司 一种建立海量数据库二级索引的方法和装置
CN107273482A (zh) * 2017-06-12 2017-10-20 北京市天元网络技术股份有限公司 基于HBase的告警数据存储方法及装置
CN109977113A (zh) * 2019-01-25 2019-07-05 北京工业大学 一种用于医疗影像数据的基于布隆过滤器的HBase索引设计方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608126A (zh) * 2015-12-16 2016-05-25 成都创智云科技股份有限公司 一种建立海量数据库二级索引的方法和装置
CN107273482A (zh) * 2017-06-12 2017-10-20 北京市天元网络技术股份有限公司 基于HBase的告警数据存储方法及装置
CN109977113A (zh) * 2019-01-25 2019-07-05 北京工业大学 一种用于医疗影像数据的基于布隆过滤器的HBase索引设计方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113093998A (zh) * 2021-04-21 2021-07-09 亿景智联(北京)科技有限公司 一种基于地理散列的空间分布式存储优化方法
CN113312353A (zh) * 2021-06-10 2021-08-27 中国民航信息网络股份有限公司 一种跟踪带日志的存储方法及系统
CN113312353B (zh) * 2021-06-10 2024-06-04 中国民航信息网络股份有限公司 一种跟踪带日志的存储方法及系统
CN115729951A (zh) * 2022-11-28 2023-03-03 易保网络技术(上海)有限公司 数据查询方法、系统、设备及计算机可读存储介质
CN115729951B (zh) * 2022-11-28 2024-02-09 易保网络技术(上海)有限公司 数据查询方法、系统、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN107710200B (zh) 用于并行化smp数据库中的基于散列的运算符的系统和方法
US10331641B2 (en) Hash database configuration method and apparatus
Kriegel et al. Multidimensional order preserving linear hashing with partial expansions
US10083195B2 (en) System and method for composing a multidimensional index key in data blocks
CN101286160B (zh) 数据库索引的方法
CN111198886A (zh) 一种构建Hbase二级索引表方法
CN103942343A (zh) 一种面向哈希连接的数据存储优化方法
CN105740405B (zh) 存储数据的方法和装置
Ordonez Programming the K-means clustering algorithm in SQL
US9607044B2 (en) Systems and methods for searching multiple related tables
CN106940708A (zh) 一种基于二分查找法实现ip范围定位的方法及系统
US11567661B2 (en) Virtual memory management method and processor
CN112416967B (zh) 数据分页查询方法、装置、电子设备及存储介质
CN110413724B (zh) 一种数据检索方法和装置
CN115455117A (zh) 基于Cuckoo Hash及Chain Hash的Redis集群管理系统及方法
CN114398373A (zh) 应用于数据库存储的文件数据存储读取方法及装置
CN108399233A (zh) 一种基于算法的分布式数据库的查询优化方法
Otoo A multidimensional digital hashing scheme for files with composite keys
CN113722366A (zh) 一种基于不经意密文倒排索引的安全数据检索方法
CN113127488A (zh) 数据查询方法、装置、电子装置和存储介质
Grossi et al. Colored range searching in linear space
CN113434511A (zh) 一种基于希尔伯特曲线的聚类索引方法
CN112052240A (zh) 一种基于协处理器的HBase二级内存索引构建方法
Han et al. Hiding Access-pattern is Not Enough! Veil: A Storage and Communication Efficient Volume-Hiding Algorithm
CN114443670B (zh) 数据的存储、读取方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Chen Yaojun

Inventor after: Chen Shiyun

Inventor after: Hu Jun

Inventor before: Hu Jun

Inventor before: Zhu Huijun

CB03 Change of inventor or designer information
RJ01 Rejection of invention patent application after publication

Application publication date: 20200526

RJ01 Rejection of invention patent application after publication