CN107562762B - 数据索引构建方法及装置 - Google Patents
数据索引构建方法及装置 Download PDFInfo
- Publication number
- CN107562762B CN107562762B CN201610515000.4A CN201610515000A CN107562762B CN 107562762 B CN107562762 B CN 107562762B CN 201610515000 A CN201610515000 A CN 201610515000A CN 107562762 B CN107562762 B CN 107562762B
- Authority
- CN
- China
- Prior art keywords
- data
- modifier
- index
- row
- determining
- 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.)
- Active
Links
- 238000010276 construction Methods 0.000 title claims abstract description 13
- 239000003607 modifier Substances 0.000 claims abstract description 125
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012216 screening Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- -1 that is Substances 0.000 description 1
Images
Abstract
本发明实施例提供一种数据索引构建方法及装置,其中,该方法包括:获取各修饰符在历史查询请求中出现的次数;遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;为各所述数据行建立索引,形成索引表。本发明实施例提供的数据索引构建方法及装置,能够降低索引列表的内存占用率,提高数据查询效率。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据索引构建方法及装置。
背景技术
HBase数据库是一种非关系型的分布式数据库模型,它基于Hadoop的分布式文件系统运行,采用列式存储数据。HBase数据表中每行有唯一的行键,也就是Rowkey,列数据通过列簇(Column Family)和其下的修饰符qualifier定义保存。所以,在HBase数据库中只有行键有索引,其他列并无索引。
目前的索引方案,都是针对数据的所有行数据,针对不同列簇,建立索引。HBase数据库是针对大数据服务的数据库,一般数据量都是百千万级、甚至上亿级,所以对所有数据行建立索引表,会耗费极大的存储空间,数据查询的速度较低。
发明内容
本发明实施例提供一种数据索引构建方法及装置,用以降低索引列表的内存占用率,提高数据查询的效率。
本发明实施例第一方面提供一种数据索引构建方法,该方法包括:
获取各修饰符在历史查询请求中出现的次数;
遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;
为各所述数据行建立索引,形成索引表。
本发明实施例第二方面提供一种数据索引构建装置,该装置包括:
第一获取模块,用于获取各修饰符在历史查询请求中出现的次数;
第一确定模块,用于遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;
构建模块,用于为各所述数据行建立索引,形成索引表。
本发明实施例,通过获取HBase数据表中各修饰符在历史查询请求中出现的次数,并为出现次数超过预设阈值的修饰符所在的数据行建立索引,形成索引表,从而降低了索引列表的内存占用率,提高了数据查询的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的数据索引构建方法的流程示意图;
图2为本发明实施例二提供的数据索引构建方法的流程示意图;
图3为本发明实施例三提供的数据索引构建装置的结构示意图;
图4为本发明实施例四提供的数据索引构建装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤的过程或结构的装置不必限于清楚地列出的那些结构或步骤而是可包括没有清楚地列出的或对于这些过程或装置固有的其它步骤或结构。
图1为本发明实施例一提供的数据索引构建方法的流程示意图,该方法可以通过一数据索引构建装置来执行。如图1所示,本实施例提供的方法包括如下步骤:
步骤S101、获取各修饰符在历史查询请求中出现的次数。
具体的,本实施例中,HBase数据表中各修饰符在历史查询请求中出现的次数可以是直接从数据库中获取的。
举例来说,当用户客户端发送的查询请求中涉及到HBase数据表的修饰符时,首先需要从查询请求中获取相应的修饰符,在获得修饰符后,可以根据预设的哈希函数对获得的各修饰符的哈希值进行计算,并将各修饰符的哈希值与数据库中各存储位置对应的哈希值进行匹配,其中,数据库中的一个存储位置对应HBase数据表上的一个修饰符。当确定修饰符的哈希值与某一存储位置对应的哈希值一致时,则将该存储位置上存储的数值加1,从而达到对HBase数据表中各修饰符在历史查询请求中出现的次数进行计数的目的。进一步的,当数据索引构建装置需要建立索引表时,只要直接从数据库中获取各修饰符对应的次数即可。
步骤S102、遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行。
具体的,为了在减少索引个数的同时,又不影响数据的查询效率,本实施例在获得HBase数据表中各修饰符在历史查询请求中出现的次数之后,还要将各修饰符的出现次数与预设的阈值进行对比,从而从各修饰符中筛选出出现次数大于预设阈值的修饰符,即从所有的修饰符中筛选出在查询请求中出现频率较高的修饰符。其中,上述预设阈值可以根据具体需要具体设置的,本实施例中不对其进行具体限定。
进一步的,在筛选出出现频率较高的修饰符后,即可通过遍历HBase数据表的方式,确定HBase数据表的哪些列簇下具有上述出现频率较高的修饰符,以及这些具有上述出现频率较高的修饰符的列簇在哪些数据行上。从而通过为这些数据行建立索引即可在减少索引个数的同时,又不影响数据的查询效率。
步骤S103、为各所述数据行建立索引,形成索引表。
在本步骤中,为各数据行建立索引的方法与现有技术类似,在这里不再赘述。
本实施例,通过获取HBase数据表中各修饰符在历史查询请求中出现的次数,并为出现次数超过预设阈值的修饰符所在的数据行建立索引,形成索引表,从而降低了索引列表的内存占用率,提高了数据查询的效率。
图2为本发明实施例二提供的数据索引构建方法的流程示意图,如图2所示,本实施例在图1所示方法的基础上包括如下步骤:
步骤S201、获取各修饰符在历史查询请求中出现的次数。
步骤S202、获取所述历史查询请求中具有修饰符比较条件数量相同的查询请求的出现次数。
本实施例中,修饰符比较条件是指用来对数据进行搜索、定位的搜扫条件,例如修饰符比较条件“a1>5”是指修饰符a1下存储的大于5的所有数据。
实际应用中,用户客户端输入的查询请求中一般均携带有至少一个修饰符比较条件,以便能够准确获得用户想要的数据。然而,在实际情况中,为了适应多修饰符比较条件的搜索情况的同时,降低索引表的内存占用率,本实施例中,优选的,采用对历史查询请求中携带有相同数量的修饰符比较条件的查询请求的出现次数进行统计的方式,确定携带有几个修饰符对比条件的查询请求是用户最习惯使用的查询请求。
举例来说,在一个历史查询请求集合中,可能存在携带有一个修饰符对比条件的查询请求,也可能存在携带有两个或两个以上的修饰符对比条件的查询请求,为了确定携带有几个修饰符对比条件的查询请求为用户常用查询请求,首先需要统计获取历史查询请求中携带有一个修饰符对比条件的查询请求的数量、携带有两个修饰符对比条件的查询请求的数量等携带有相同数量的修饰符对比条件的查询请求的数量,从而根据统计结果确定携带有几个修饰符对比条件的查询请求是用户常用的查询请求。
具体的,本实施例中,携带有相同数量的修饰符对比条件的查询请求的数量可以直接从数据库中获得。优选的,可以建立一个元素为n的数组来存储历史查询请求中携带有1到n个修饰符对比条件的查询请求的数量。例如,假设一次查询请求中包含两个修饰符对比条件,则对数组中用于存储携带有两个修饰符对比条件的查询请求的元素的值加1,也就是说,如果两个修饰符对比条件分别为是q1>5和q3<6,那么数据库中存储的修饰符q1和q3的数量分别加1,数组中用于存储携带有两个修饰符对比条件的查询请求的数量的元素(例如第二个元素)的值加1,从而在获取历史查询请求中具有修饰符比较条件数量相同的查询请求的出现次数时,直接从数组中提取各元素的值即可。
步骤S203、确定最大出现次数对应的修饰符比较条件的数量。
举例来说,假设数组元素中元素的最大值为100,并且该元素对应的是携带有两个修饰符比较条件的查询请求的数量,则此时,最大出现次数对应的修饰符比较条件的数量2。
步骤S204、遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行。
步骤S205、将各所述修饰符之间按照所述数量进行组合,生成修饰符组合类;
行键是HBase数据表的唯一主键,每个列簇下有许多的修饰符,而复杂的修饰符对比条件多针对同一列簇下的不同修饰符进行组合,所以索引表的行键的格式可以设置为<修饰符组合类,修饰符组合,数据行行键>。举个例子来说,表一是原数据表的部分数据,列簇下有4个修饰符,q1、q2、q3和q4。但是q4不会或极少用于查询判断条件,所以q4无需建立索引。假设目前只需三个修饰符组合,且确定用户通常在查询请求中携带两个修饰符对比条件,则生成的修饰符组合有三种,分别为(q1q2)=>a,(q2q3)=>b,(q1q3)=>c。其中a、b、c是三种修饰符组合类。
表一、原数据表
步骤S206、确定各所述数据行所属的修饰符组合类;
举例来说,假设数据行的列簇中包含q1和q2,则确定好该数据行的修饰符组合类为a。同理的,b类和c类数据行的确定方法也与此类似,在这里不再赘述。
步骤S207、根据各所述数据行所属的修饰符组合类和各所述数据行的行键,为各所述数据行生成索引,并形成索引表。
具体的,为了缩短索引的长度,本实施例中可以预先设置一个字段前缀长度,如长度是3,则表一第一行数据q1取“2w3”,q2取“kks”,同理的,第二行、第三行以及第四行数据的获取方法也是如此。则据此形成每行的修饰符组合后,结合每行的行键即可形成如表二所示的索引表。
表二、索引表
Rowkey | colfamliy1 |
a-2w3kks-1874392943 | |
b-982-984753993 | |
b-983234-302847233 | |
c-922922-834923472 |
其中,表二中的列簇下并没有修饰符和值,出于节省空间的目的,我们扫描主要是为了获取源数据表中的行键,所以表二列簇下不插入任何数据。第四行数据,列簇下只有q2一个修饰符,q2是组合(q2,q3)的前缀,所以,它的类型也是b。
步骤S208、根据预设周期,定期更新所述索引表。
具体的,在完成索引表的建立后,为了保证索引表的时效性和可靠性,本实施例中,还需要按照预设的周期检测是否有新的修饰符需要添加索引,若有则建立该修饰符的索引并添加到索引表中。
其中,本实施例中,判断修饰符是否需要添加索引的方法与上述判断方法类似,均是通过修饰符在历史查询请求中出现的次数来判断的,在这里不再赘述。
具体的,本实施例中索引表的更新方法可以包括同步更新和异步更新两种:
同步更新
数据索引建立装置执行添加或删除操作,如果是添加,则生成相应索引表行键,插入索引表,其后再将数据插入数据表,并删除索引表中冗余的索引数据。如果请求操作为删除数据,则根据规则生成行键,先删除索引表中的数据,再删除原表中数据。如此行数据无需生索引,则直接删除。
异步更新
索引异步更新方式是通过建立一个等待队列,每次操作时,生成一个操作请求,并加入等待队列,然后对数据表进行操作。举例来说,如果客户端要插入数据,生成相应的索引表数据,初始化请求类,将请求加入等待队列,然后将数据插入数据表,即不处理索引表,只处理数据表。后台有一个线程,逐个处理队列中的操作请求,将索引插入索引表。
本实施例,通过获取HBase数据表中各修饰符在历史查询请求中出现的次数,并为出现次数超过预设阈值的修饰符所在的数据行建立索引,形成索引表,从而降低了索引列表的内存占用率,提高了数据查询的效率。
图3为本发明实施例三提供的数据索引构建装置的结构示意图,如图3所示,本实施例提供的装置包括:
第一获取模块11,用于获取各修饰符在历史查询请求中出现的次数;
第一确定模块12,用于遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;
构建模块13,用于为各所述数据行建立索引,形成索引表。
其中,所述第一确定模块12,具体用于:
将各修饰符对应的所述次数与预设阈值进行对比,获得所述次数超过所述预设阈值的修饰符;
遍历HBase数据表的每个数据行,筛选获得列簇中包含所述修饰符的数据行。
本实施例提供的数据索引构建装置,能够用于执行如图1所示的方法,其具体的执行方式和有益效果与图1所示实施例类似,在这里不再赘述。
图4为本发明实施例四提供的数据索引构建装置的结构示意图,如图4所示,本实施例在图3所示结构的基础上,所述装置,还包括:
第二获取模块14,用于获取所述历史查询请求中具有修饰符比较条件数量相同的查询请求的出现次数;
第二确定模块15,用于确定最大出现次数对应的修饰符比较条件的数量。
特别的,所述构建模块13,包括:
处理子模块131,用于将各所述修饰符之间按照所述数量进行组合,生成修饰符组合类;
确定子模块132,用于确定各所述数据行所属的修饰符组合类;
构建子模块133,用于根据各所述数据行所属的修饰符组合类和各所述数据行的行键,为各所述数据行生成索引,并形成索引表。
所述构建子模块133,具体用于:
按照“修饰符组合类-修饰符组合-数据行行键”的格式为各所述数据行生成索引。
所述装置还包括:
更新模块16,用于根据预设周期,定期更新所述索引列表。
本实施例提供的数据索引构建装置,能够用于执行如图2所示的方法,其具体的执行方式和有益效果与图2所示实施例类似,在这里不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种数据索引构建方法,其特征在于,包括:
获取各修饰符在历史查询请求中出现的次数;
遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;
为各所述数据行建立索引,形成索引表;
所述遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行,包括:
将各修饰符对应的所述次数与预设阈值进行对比,获得所述次数超过所述预设阈值的修饰符;
遍历HBase数据表的每个数据行,筛选获得列簇中包含所述修饰符的数据行;
所述为各所述数据行建立索引,形成索引表,包括:
将各所述修饰符之间按照数量进行组合,生成修饰符组合类;
确定各所述数据行所属的修饰符组合类;
根据各所述数据行所属的修饰符组合类和各所述数据行的行键,为各所述数据行生成索引,并形成索引表。
2.根据权利要求1所述的方法,其特征在于,所述遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行之前,所述方法还包括:
获取所述历史查询请求中具有修饰符比较条件数量相同的查询请求的出现次数;
确定最大出现次数对应的修饰符比较条件的数量。
3.根据权利要求1所述的方法,其特征在于,所述根据各所述数据行所属的修饰符组合类和各所述数据行的行键,为各所述数据行生成索引,包括:
按照“修饰符组合类-修饰符组合-数据行行键”的格式为各所述数据行生成索引。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述为各所述数据行建立索引,形成索引表之后,还包括:
根据预设周期,定期更新所述索引表。
5.一种数据索引构建装置,其特征在于,包括:
第一获取模块,用于获取各修饰符在历史查询请求中出现的次数;
第一确定模块,用于遍历HBase数据表,确定所述次数超过预设阈值的各修饰符所在的数据行;
构建模块,用于为各所述数据行建立索引,形成索引表;
所述第一确定模块,具体用于:
将各修饰符对应的所述次数与预设阈值进行对比,获得所述次数超过所述预设阈值的修饰符;
遍历HBase数据表的每个数据行,筛选获得列簇中包含所述修饰符的数据行;
所述构建模块,包括:
处理子模块,用于将各所述修饰符之间按照数量进行组合,生成修饰符组合类;
确定子模块,用于确定各所述数据行所属的修饰符组合类;
构建子模块,用于根据各所述数据行所属的修饰符组合类和各所述数据行的行键,为各所述数据行生成索引,并形成索引表。
6.根据权利要求5所述的装置,其特征在于,所述装置,还包括:
第二获取模块,用于获取所述历史查询请求中具有修饰符比较条件数量相同的查询请求的出现次数;
第二确定模块,用于确定最大出现次数对应的修饰符比较条件的数量。
7.根据权利要求6所述的装置,其特征在于,所述构建子模块,具体用于:
按照“修饰符组合类-修饰符组合-数据行行键”的格式为各所述数据行生成索引。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述装置还包括:
更新模块,用于根据预设周期,定期更新索引列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610515000.4A CN107562762B (zh) | 2016-07-01 | 2016-07-01 | 数据索引构建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610515000.4A CN107562762B (zh) | 2016-07-01 | 2016-07-01 | 数据索引构建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562762A CN107562762A (zh) | 2018-01-09 |
CN107562762B true CN107562762B (zh) | 2020-10-27 |
Family
ID=60968520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610515000.4A Active CN107562762B (zh) | 2016-07-01 | 2016-07-01 | 数据索引构建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107562762B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299106B (zh) * | 2018-10-31 | 2020-09-22 | 中国联合网络通信集团有限公司 | 数据查询方法和装置 |
CN111459949B (zh) * | 2019-01-18 | 2023-12-19 | 阿里巴巴集团控股有限公司 | 针对数据库的数据处理方法、装置及设备和索引更新方法 |
CN109871463B (zh) * | 2019-03-06 | 2024-04-09 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频处理方法、装置、电子设备及存储介质 |
CN110399375B (zh) * | 2019-07-24 | 2020-06-26 | 南京云白信息科技有限公司 | 一种数据表索引创建方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN105320679A (zh) * | 2014-07-11 | 2016-02-10 | 中国移动通信集团重庆有限公司 | 一种数据表索引集合生成方法及装置 |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794123B (zh) * | 2014-01-20 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
-
2016
- 2016-07-01 CN CN201610515000.4A patent/CN107562762B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320679A (zh) * | 2014-07-11 | 2016-02-10 | 中国移动通信集团重庆有限公司 | 一种数据表索引集合生成方法及装置 |
CN105447030A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107562762A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562762B (zh) | 数据索引构建方法及装置 | |
CN106528787B (zh) | 一种基于海量数据多维分析的查询方法及装置 | |
CN106611064B (zh) | 分布式关系数据库的数据处理方法和装置 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
WO2017096892A1 (zh) | 索引构建方法、查询方法及对应装置、设备、计算机存储介质 | |
US11030196B2 (en) | Method and apparatus for processing join query | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
US11003649B2 (en) | Index establishment method and device | |
US10452676B2 (en) | Managing database with counting bloom filters | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN108549696B (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN110069500B (zh) | 一种非关系型数据库动态混合索引方法 | |
CN110008289B (zh) | 一种关系数据库、电网模型数据存储及检索方法 | |
CN108549688B (zh) | 一种数据操作的优化方法、装置、设备和存储介质 | |
CN109033295B (zh) | 超大数据集的合并方法及装置 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
US20150081710A1 (en) | Data typing with probabilistic maps having imbalanced error costs | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
CN111125158B (zh) | 数据表处理方法、装置、介质及电子设备 | |
CN115328917A (zh) | 一种查询方法、装置、设备及存储介质 | |
US20210248142A1 (en) | Dual filter histogram optimization | |
CN110704433B (zh) | 列式存储数据的brin索引构建方法、数据检索方法及装置 | |
CN114064706A (zh) | 数据存储方法、装置及服务器 | |
CN110489601B (zh) | 一种基于缓存机制的实时数据索引快速动态更新方法 | |
CN114328554A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |