一种数据查询方法和装置制造方法及图纸

技术编号:30186169 阅读:14 留言:0更新日期:2021-09-29 08:22
本发明专利技术公开了一种数据查询方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:分别创建各个数据块的位数组索引;接收并解析数据查询请求,得到目标列和目标值;根据所述目标列、所述目标值和所述各个数据块的位数组索引,匹配出至少一个目标数据块;基于所述至少一个目标数据块,返回查询结果。该实施方式能够解决索引体积较大和查询响应较慢的技术问题。技术问题。技术问题。

【技术实现步骤摘要】
一种数据查询方法和装置


[0001]本专利技术涉及计算机
,尤其涉及一种数据查询方法和装置。

技术介绍

[0002]在现有的olap(联机分析处理)查询方案中,有使用关系型数据库存储方案(比如oracle、mysql),也有使用内存存储方案(比如druid),还有使用预先构建cube(空间索引)的方案(比如kylin)。
[0003]在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:
[0004]目前常见的索引,例如倒排序索引、二叉树索引等,可以精确定位到具体的某一行数据,在数据量比较小的情况下,比较有效。但是当数据体积上升到一定程度,这类索引的体积也会跟着膨胀,甚至无法使用,而且目前没有十分有效的方式来压缩,导致内存成本过高。hive、spark等大数据计算引擎能够支持海量数据的查询和聚合,但是很多无关数据也进入到了计算阶段进行过滤筛选,导致查询响应较慢。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种数据查询方法和装置,以解决索引体积较大和查询响应较慢的技术问题。
[0006]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据查询方法,包括:
[0007]分别创建各个数据块的位数组索引;
[0008]接收并解析数据查询请求,得到目标列和目标值;
[0009]根据所述目标列、所述目标值和所述各个数据块的位数组索引,匹配出至少一个目标数据块;
[0010]基于所述至少一个目标数据块,返回查询结果。<br/>[0011]可选地,分别创建各个数据块的位数组索引之前,还包括:
[0012]根据哈希算法将数据表拆分为若干个数据段;
[0013]将所述数据段拆分为若干个数据块;
[0014]其中,每个数据段包含所述数据表的所有列和若干行数据,每个数据块中包含的数据是所述数据表的同一列数据,所述数据表的同一列数据记录在至少一个数据块中。
[0015]可选地,将所述数据段拆分为若干个数据块之后,还包括:
[0016]对所述各个数据块分别构建正排索引或者倒排索引。
[0017]可选地,所述分别创建各个数据块的位数组索引,包括:
[0018]将所述数据块中的数据划分为多个区间;
[0019]将所述多个区间依次排序,每个区间占用位数组中的一个比特位,从而得到所述数据块的位数组索引;
[0020]其中,所述比特位的值表示所述比特位对应的区间是否存在数据。
[0021]可选地,将所述数据块中的数据划分为多个区间,包括:
[0022]根据所述数据块中的最大值数据、最小值数据以及预设的索引粗糙度,确定区间数量;
[0023]根据所述区间数量将所述数据块中的数据划分为多个区间。
[0024]可选地,根据所述区间数量将所述数据块中的数据划分为多个区间之后,还包括:
[0025]根据各个区间的数据密度,对所述数据块的区间进行扩充和/或压缩;
[0026]根据扩充结果和/或压缩结果,更新所述位数组中各个比特位的值。
[0027]可选地,根据各个区间的数据密度,对所述数据块的区间进行压缩,包括:
[0028]若第一区间的数据量大于等于第一阈值,并且第二区间的数据量小于第二阈值;
[0029]则对所述第二区间的数据进行编码,使得编码后的数据位于第三区间;
[0030]其中,所述第一区间和所述第三区间均小于第二区间。
[0031]可选地,分别创建各个数据块的位数组索引之后,还包括:
[0032]将所述各个数据块的位数组索引及其对应的存储路径加载到内存中。
[0033]可选地,基于所述至少一个目标数据块,返回查询结果,包括:
[0034]获取所述至少一个目标数据块对应的正排索引或者倒排索引;
[0035]根据所述目标值,对所述至少一个目标数据块对应的正排索引或者倒排索引进行命中,返回命中结果。
[0036]可选地,基于所述至少一个目标数据块,返回查询结果,包括:
[0037]将所述至少一个目标数据块作为数据源,采用大数据计算引擎对所述至少一个目标数据块进行计算,返回计算结果。
[0038]另外,根据本专利技术实施例的另一个方面,提供了一种数据查询装置,包括:
[0039]创建模块,用于分别创建各个数据块的位数组索引;
[0040]接收模块,用于接收并解析数据查询请求,得到目标列和目标值;
[0041]匹配模块,用于根据所述目标列、所述目标值和所述各个数据块的位数组索引,匹配出至少一个目标数据块;
[0042]查询模块,用于基于所述至少一个目标数据块,返回查询结果。
[0043]可选地,还包括拆分模块,用于:
[0044]分别创建各个数据块的位数组索引之前,根据哈希算法将数据表拆分为若干个数据段;
[0045]将所述数据段拆分为若干个数据块;
[0046]其中,每个数据段包含所述数据表的所有列和若干行数据,每个数据块中包含的数据是所述数据表的同一列数据,所述数据表的同一列数据记录在至少一个数据块中。
[0047]可选地,所述拆分模块还用于:
[0048]将所述数据段拆分为若干个数据块之后,对所述各个数据块分别构建正排索引或者倒排索引。
[0049]可选地,所述创建模块还用于:
[0050]将所述数据块中的数据划分为多个区间;
[0051]将所述多个区间依次排序,每个区间占用位数组中的一个比特位,从而得到所述数据块的位数组索引;
[0052]其中,所述比特位的值表示所述比特位对应的区间是否存在数据。
[0053]可选地,所述创建模块还用于:
[0054]根据所述数据块中的最大值数据、最小值数据以及预设的索引粗糙度,确定区间数量;
[0055]根据所述区间数量将所述数据块中的数据划分为多个区间。
[0056]可选地,所述创建模块还用于:
[0057]根据所述区间数量将所述数据块中的数据划分为多个区间之后,根据各个区间的数据密度,对所述数据块的区间进行扩充和/或压缩;
[0058]根据扩充结果和/或压缩结果,更新所述位数组中各个比特位的值。
[0059]可选地,所述创建模块还用于:
[0060]若第一区间的数据量大于等于第一阈值,并且第二区间的数据量小于第二阈值;
[0061]则对所述第二区间的数据进行编码,使得编码后的数据位于第三区间;
[0062]其中,所述第一区间和所述第三区间均小于第二区间。
[0063]可选地,所述创建模块还用于:
[0064]分别创建各个数据块的位数组索引之后,将所述各个数据块的位数组索引及其对应的存储路径加载到内存中。
[0065]可选地,所述查询模块还用于:
[0066]获取所述至少一个目标数据块对应的正排索引或者倒排索引;
[006本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据查询方法,其特征在于,包括:分别创建各个数据块的位数组索引;接收并解析数据查询请求,得到目标列和目标值;根据所述目标列、所述目标值和所述各个数据块的位数组索引,匹配出至少一个目标数据块;基于所述至少一个目标数据块,返回查询结果。2.根据权利要求1所述的方法,其特征在于,分别创建各个数据块的位数组索引之前,还包括:根据哈希算法将数据表拆分为若干个数据段;将所述数据段拆分为若干个数据块;其中,每个数据段包含所述数据表的所有列和若干行数据,每个数据块中包含的数据是所述数据表的同一列数据,所述数据表的同一列数据记录在至少一个数据块中。3.根据权利要求2所述的方法,其特征在于,将所述数据段拆分为若干个数据块之后,还包括:对所述各个数据块分别构建正排索引或者倒排索引。4.根据权利要求1所述的方法,其特征在于,所述分别创建各个数据块的位数组索引,包括:将所述数据块中的数据划分为多个区间;将所述多个区间依次排序,每个区间占用位数组中的一个比特位,从而得到所述数据块的位数组索引;其中,所述比特位的值表示所述比特位对应的区间是否存在数据。5.根据权利要求4所述的方法,其特征在于,将所述数据块中的数据划分为多个区间,包括:根据所述数据块中的最大值数据、最小值数据以及预设的索引粗糙度,确定区间数量;根据所述区间数量将所述数据块中的数据划分为多个区间。6.根据权利要求5所述的方法,其特征在于,根据所述区间数量将所述数据块中的数据划分为多个区间之后,还包括:根据各个区间的数据密度,对所述数据块的区间进行扩充和/或压缩;根据扩充结果和/或压缩结果,更新所述位数组中各个比特位的值。7.根据权利要求6所述的方法,其特征在于,根据各个区间的数...

【专利技术属性】
技术研发人员:罗勇
申请(专利权)人:北京沃东天骏信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1