CN113641669A - 一种基于混合引擎的多维数据查询方法及装置 - Google Patents
一种基于混合引擎的多维数据查询方法及装置 Download PDFInfo
- Publication number
- CN113641669A CN113641669A CN202110733535.XA CN202110733535A CN113641669A CN 113641669 A CN113641669 A CN 113641669A CN 202110733535 A CN202110733535 A CN 202110733535A CN 113641669 A CN113641669 A CN 113641669A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- cube
- bitmap
- tree
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于混合引擎的多维数据查询方法及装置,其中,方法包括:构建数据立方体生成树,数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;建立维度字典,维度字典用于表征维度与比特位的映射关系;根据维度字典构建位图索引,并将位图索引套入立方体生成树中,得到基于位图索引的位图树,其中,位图索引由比特数组组成,比特数组中的比特值表征比特位对应的维度是否被预计算;获取查询需求,根据查询需求生成结构化查询语言,并根据结构化查询语言和位图树获取查询结果。本申请提出的方法可以在后台建立Cube的位图Bitmap索引,智能地选择合适的查询引擎执行查询任务,提升系统整体性能。
Description
技术领域
本发明涉及信息技术及数据业务领域技术领域,尤其涉及一种混合引擎的多维数据查询方法领域。
背景技术
在大数据时代,拥有数据就意味着拥有了价值,然而大数据价值的挖掘并不是一件容易的事,多维数据分析就是其中的一项重要手段。大数据的多维分析是要从多个角度、多个侧面观察和挖掘海量数据,辅以上卷、下钻、切片、切块、旋转等各种分析操作,经过专业的整合与分析,最后输出可视化数据或图表,帮助分析师和企业用户深入了解包含在数据中的信息和内涵。
联机分析处理技术(On-Line Analytical Processing,OLAP)是进行大数据多维分析的主流技术,它包括基于数据仓库的传统关系型OLAP(Relational OLAP,ROLAP)和采用预计算技术的多维OLAP(Multidimensional OLAP,MOLAP)。其中ROLAP已经发展的相对成熟,但随着数据量的爆发式增长,其查询时间不可避免地随着数据规模线性增加,多表多维度的联接操作又会带来更大的开销,所以在大数据的多维分析场景ROLAP出现了严重的性能瓶颈。MOLAP采用预计算技术解决了这一问题,经过预计算,查询时只需扫描物化视图即可得出结果,避免了对规模不断增长的原始记录的扫描。然而,MOLAP的查询必须基于已经预计算完毕的物化视图集(又称数据立方体,Cube),无论是手动建模还是自动建模,预计算的过程都会持续几十分钟甚至数小时之久,为多维数据分析增加了大量的前置等待时间,因此只有在混合引擎的系统中MOLAP才能发挥它的优势。
总的来说,ROLAP和MOLAP引擎各有其优点与不足,故它们所擅长的使用场景不同。在基于混合引擎的系统中,系统难以在二者之间做出快速、合理的选择,亟需一种查询路由解决查询引擎的选择问题,并建立多维模型索引对查询路由提供支持。
传统的OLAP索引技术包括四种类型的索引:B-tree索引,R-tree索引,哈希索引和位图索引。前三个应用较为广泛,但是它们难以满足对高维科学数据进行快速查询的要求,例如:B-tree索引和R-tree索引仅对维数小于15的数据集有效。而位图索引则可以较好地适应高维度数据的特点。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种基于混合引擎的多维数据查询方法,以实现可以在后台建立Cube的位图Bitmap索引,智能地选择合适的查询引擎执行查询任务,提升系统整体性能。
本发明的第二个目的在于提出一种基于混合引擎的多维数据查询装置。
本发明的第三个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种基于混合引擎的多维数据查询方法,包括以下步骤:
构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
可选地,在本申请的一个实施例中,根据所述结构化查询语言和所述位图树获取查询结果,包括:
在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
可选地,在本申请的一个实施例中,根据所述结构化查询语言和所述位图树获取查询结果,还包括:
在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
可选地,在本申请的一个实施例中,在构建数据立方体生成树之后,还包括:
采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
可选地,在本申请的一个实施例中,所述建立维度字典,包括:
获取妊娠结果表、基础信息表和母亲体检表,根据所述妊娠结果表、基础信息表和母亲体检表生成星型模型,对所述星型模型进行扁平化处理以得到所述维度字典,其中,每个维度对应一个比特位。
为达上述目的,本申请第二方面实施例提出本发明一种基于混合引擎的多维数据查询装置,包括以下模块:
构建模块,用于构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立模块,用于建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
生成模块,用于根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
查询模块,用于获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
可选地,在本申请的一个实施例中,所述查询模块,包括:
第一查询单元,用于在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
第一生成单元,用于在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
可选地,在本申请的一个实施例中,所述查询模块,还包括:
第二查询单元,用于在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
第二生成单元,用于在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
可选地,在本申请的一个实施例中,还包括:
剪枝模块,用于采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
本申请的技术效果:可以在后台建立Cube的位图Bitmap索引,智能地选择合适的查询引擎执行查询任务,提升系统整体性能。
为达上述目的,本申请第三方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例所述的基于混合引擎的多维数据查询方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的基于混合引擎的多维数据查询方法的流程图。
图2是本申请实施例的Cube生成树(全量)的示意图;
图3是本申请实施例的Cube生成树(优化后)的示意图;
图4是本申请实施例的由星型模型转化为维度字典的示意图;
图5是本申请实施例的Cuboid构建Bitmap索引的示意图;
图6是本申请实施例的基于Cube生成树的Bitmap索引的示意图;
图7是本申请实施例的Bitmap检索时的4种匹配情况的示意图;
图8是本申请实施例的基于混合引擎的多维数据查询路由整体流程的示意图;
图9是本申请实施例的系统整体架构图;
图10是本申请实施例的系统技术架构图;
图11为本申请实施例的基于混合引擎的多维数据查装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的基于混合引擎的多维数据查询方法。
如图1所示,为达上述目的,本发明第一方面实施例提出了一种基于混合引擎的多维数据查询方法,包括以下步骤:
构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
在本申请的一个实施例中,进一步地,根据所述结构化查询语言和所述位图树获取查询结果,包括:
在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
在本申请的一个实施例中,进一步地,根据所述结构化查询语言和所述位图树获取查询结果,还包括:
在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
在本申请的一个实施例中,进一步地,在构建数据立方体生成树之后,还包括:
采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
在本申请的一个实施例中,进一步地,具体而言,数据立方体(Cube)事实上是一系列物化视图的集合,每一个物化视图都是一种预聚合计算的结果。对于Cube以及它的的生成过程,我们可以把它形象地画成一个Cube生成树,以4维的Cube为例,如图2所示。
图2是一个全量的Cube生成树,它展示了一个Cube被逐级计算出来的过程,图中每一个方块代表了一种维度组合的预聚合结果,我们可以称之为子Cube(或Cuboid)。实线箭头表示聚合计算的过程,虚线则是被省略的重复计算。
可以看到,顶点Cuboid(ABCD)是最先被计算出来的,它是经由大宽表(事实表、维度表连接成的明细表)聚合出的,是后续计算的基础。第二层包括4个Cuboid,分别是ABC、ABD、ACD、BCD,它们都是由ABCD计算得到,同理,其余层的Cuboid逐级聚合直至最终达到1维的叶子节点结束。
图2展示的是一个全量预计算的Cube,它能涵盖所有的聚合查询需求,但当维度数量增加时,这样的Cube占用空间太大,所以需要用聚合组等工具进行剪枝。本发明主要采用聚合组剪枝(在后台自动地进行优化算法),同时支持一些更加细粒度的剪枝工具。这些剪枝工具及其适用场景如下表所示。
经过剪枝后,Cube生成树的规模被进一步地缩减,如图3所示。这种生成树更贴合实际应用情况下的Cube模型,这种树状结构则为本文构建Bitmap索引所采用的基本数据结构。
在本申请的一个实施例中,进一步地,所述建立维度字典,包括:
获取妊娠结果表、基础信息表和母亲体检表,根据所述妊娠结果表、基础信息表和母亲体检表生成星型模型,对所述星型模型进行扁平化处理以得到所述维度字典,其中,每个维度对应一个比特位。
在本申请的一个实施例中,进一步地,具体而言,确定了整体的数据结构以后,要构建Bitmap索引,还要为其建立维度字典。维度字典代表了维度与Bitmap位的映射关系,大大节省了Bitmap占用的存储空间。我们以三张表组成的星型模型为例,将其扁平化形成维度字典,如图4所示。
图4中上半部分是由三张表组成的简单星型模型,包括事实表GD_PREGENCY_RESULT(妊娠结果表)、维表GD_BASIC_INFO_DETAIL(基础信息表)、维表GD_PYSICAL_EXAM_W(母亲体检表)。图中蓝色的字段代表维度(dimensions),紫色的字段代表度量(measures),将星型模型中的维度部分扁平化处理,就得到了下半部分所示的维度字典,每个维度对应一个特定的比特位。
在本申请的一个实施例中,进一步地,具体而言,构建Bitmap索引:
Bitmap索引由bit数组组成,以图3中的8维数组为例,每一个bit位代表了一个维度,数组中的bit代表了该维度是否被预计算,如第[3]位为1代表了维度GD_BASIC_INFO_DETAIL.FEDU_LEVEL在该Cuboid中被预计算,0则相反。在MOLAP分析场景中,Bitmap索引有着显著的优势:(1)高维情况下,Bitmap索引仅需较少的内存占用,这意味着系统在检索索引时,可以更多地把Bitmap索引加载到内存中,极大地提升了索引检索速度;(2)Bitmap索引可以进行逻辑运算,例如按位逻辑与(AND)、或(OR)、异或(XOR)等,免除了复杂的格式转换,运算速度快。
图5展示了Cuboid的Bitmap索引示例,每个Cuboid都是一个bit数组,表征了哪些维度已经被预计算完成。
Cube生成树是由多个Cuboid组成的树形结构,接下来我们把这种Cuboid的Bitmap索引编码套入Cube生成树中,就可以形成基于Cube生成树Bitmap索引,简称Bitmap tree,同样以8个维度的数据模型为例,剪枝优化后的Bitmap tree如图6所示。
至此就构成了Bitmap索引的基本结构,它可以为MOLAP提供索引支持。值得注意的是,度量并不在Bitmap tree的索引结构里,每颗度量对应了一颗索引树,例如度量AVG(BIRTH_NUM),它名下的Bitmap tree中包含的所有Cuboid,均是针对AVG(BIRTH_NUM)所做的不同维度组合的预计算。
在本申请的一个实施例中,进一步地,具体而言,基于Bitmap索引的混合引擎查询路由:
第一步、Bitmap索引的逻辑运算:
Bitmap索引中的Cuboid是独立的bit数组,它代表了已被预计算的维度组合,形如01001100,彼此不会出现重复,简称Cid。Bitmap索引离不开对Cid的操作,我们把目标维度组合称为Ctarget,bit数组记为01001000,可以对Cid和Ctarget进行逻辑运算。这种二进制的逻辑运算无需复杂的格式转换,且能获得更好的计算机硬件支持,运算速度较快。下面将简要介绍三种按位逻辑运算操作,通过这种简单操作的组合即可实现Bitmap索引的检索。
(1)按位与AND:
Cid AND Ctarget=01001100AND 01001000=01001000
(2)按位或OR:
Cid OR Ctarget=01001100OR 01001000=01001100
(3)按位异或XOR:
Cid XOR Ctarget=01001100XOR 01001000=11111011
第二步、检索Bitmap索引:
检索Bitmap索引,本质上是要在Cube生成树里找到一个符合查询需求的Cuboid,我们称这种Cuboid的维度组合完全符合查询需求的情况为“精确命中”。虽然精确命中可以为查询带来近乎完美的性能,然而过度追求精确命中也是不可取的。它一方面会导致Cube的急剧膨胀,加重存储和计算负担,另一方面,由于Cube的生成树是逐层递进的,如果子Cuboid无法命中,可以寻找其父Cuboid并由其在线聚合计算得出查询结果。我们把这种在线的聚合计算称为“推算”,相应由推算完成查询的情况叫做“模糊命中”。
在实际的Cube应用过程中,模糊命中情况下的推算所耗性能受多方因素影响,如数据集大小、结果集的规模、推算起点与目标节点的层数差、推算涉及字段的基数等。本文的混合引擎系统设计了一种“精确——模糊命中模型”,采纳精确命中和推算起点与目标节点的层数差为1的模糊命中作为查询命中的条件。下面将检索Bitmap索引,找到符合查询需求的Cuboid。
下面我们总结了检索过程中Cid运算的几种情况,当前检索的Cuboid记为Cid,目标维度组合为Ctarget:
(1)精确命中
Cid AND Ctarget==Ctarget,Cid XOR Ctarget==0
(2)模糊命中
Cid AND Ctarget==Ctarget,Cid XOR Ctarget=R,R AND(R-1)==0
(3)未找到Cuboid,需要继续检索
Cid AND Ctarget==Ctarget
(4)Cube无法满足查询需求,退出检索
Cid AND Ctarget!=Ctarget
上述4种情况即为Bitmap索引检索过程中当前检索的Cuboid(Cid)与查询需求(Ctarget)匹配时所会出现的情况,均采用逻辑运算。值得注意的是,第(2)种情况中的R是Cid和Ctarget异或的结果,而后续的R AND(R-1)==0则代表着R的bit数组中只有一个1,也即模糊命中情况下,推算的起点和终点只相差1个维度。为了更加形象地说明上述的4种匹配情况,本文拟定了Ctarget为00110000(查询需求维度组合为CD),在图7中对这些匹配进行了标注。
第三步、查询路由整体流程:
Cuboid的查找是一种深度优先的搜索(Depth First Search,DFS),从Cuboidtree的顶点开始搜索,符合情况(3)则继续查找子节点,直至符合情况(1)结束(精确命中)。如果无法满足精确命中,则回溯至父节点检查是否满足模糊命中的条件即情况(2)。如果两种命中均不存在,检索至情况(4)退出DFS。结合Cuboid的DFS检索,本申请整理出基于混合引擎的多维数据查询路由整体流程如图8所示。
对于一个查询需求(数据概览、多维分析、数据可视化等),本文系统首先在前端将其组织成为统一的SQL交由后端查询。后台对该SQL进行逻辑语法树解析后,首先匹配度量和算子,只有当符合条件的Bitmap tree存在时才会进入针对维度组合的Bitmap检索,其他情况(例如数据明细查询、不支持的聚合算子、度量未经过预计算等)则会直接下压至ROLAP引擎。在Bitmap索引的检索过程中,优先查找精确命中的Cuboid,若不存在则回溯查找模糊命中的Cuboid,整个Bitmap的检索过程均使用逻辑运算。如果目标Cuboid被找到,即可使用MOLAP引擎直接查询预聚合的数据,否则使用ROLAP引擎在线计算。最后返回查询结果,结束整个查询路由的流程。
本申请的技术效果:本发明提出并实现了一种基于Bitmap索引的混合引擎查询路由的多维数据分析系统,本系统综合利用ROLAP和MOLAP两种查询引擎的优点,提供灵活场景的多维数据分析服务,同时为用户提供了自动建模、模型全生命周期监控、自动模型优化的服务,使MOLAP预计算技术在系统中很好地落地、解除对数据专家的依赖,最后以查询结果生成丰富的可视化图表和驾驶舱,使用户可以一目了然地从大数据中挖掘信息。
如图11所示,为达上述目的,本申请第二方面实施例提出本发明一种基于混合引擎的多维数据查询装置,包括以下模块:
构建模块,用于构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立模块,用于建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
生成模块,用于根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
查询模块,用于获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
在本申请的一个实施例中,进一步地,所述查询模块,包括:
第一查询单元,用于在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
第一生成单元,用于在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
在本申请的一个实施例中,进一步地,所述查询模块,还包括:
第二查询单元,用于在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
第二生成单元,用于在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
在本申请的一个实施例中,进一步地,还包括:
剪枝模块,用于采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
在本申请的一个实施例中,进一步地,具体而言,基于Bitmap索引的混合引擎查询路由的多维数据分析系统:
第一步、系统整体架构:
如图9所示,系统整体架构的逻辑从数据源开始,原始数据从HDFS、Hive、RDBMS等多源读取,对于未经预计算的数据模型,查询任务临时下压至Spark SQL执行,并由自动建模模块在后台进行Cube的构建,设计和构建Cube所需的信息是从历史执行过的SQL中挖掘的,这部分由SQL解析模块完成。Cube在初建和使用过程中都需要进行模型优化,与本发明相关的MMO算法为优化提供了支撑。构建和优化完成后的Cube存储至存储模块的HBase中,其他的元数据、历史SQL等信息存至Mysql。执行查询任务时采用本发明的基于混合引擎的多维查询方法,由查询路由模块对其进行路由,解析出逻辑语法树以后检索Bitmap即可智能地得出最合适的查询引擎。最终查询结果被多维分析可视化模块渲染成为丰富的图表和仪表盘,供用户查看。
第二步、技术架构设计:
如图10所示,从技术角度划分,本系统分为5层:数据层、数据模型层、数据计算层、业务逻辑层和页面展示层。最底层的数据层为原始数据,经由建模层建模、优化后,由数据计算层执行查询任务,最后页面展示层调取业务逻辑层的API,将可视化的结果呈现给用户,下面将对这些层的技术详细介绍。
数据层:本层为原始数据的存储,支持Hadoop的HDFS、Mysql、Hive等多源的数据。其中HDFS、Hive存储的作为分析使用的大数据仓库使用,而Mysql则更多地存储系统功能所需数据表、元数据等。
数据模型层:本层包括自动建模、模型优化、任务调度三个模块。自动建模使用SQLParser对历史SQL集合进行解析,提取元数据,组合成为星型模型,使用Fast Cube算法将聚合数据物化成为Cube,预聚合的计算由Spark引擎执行。模型优化使用与本发明相关的MMO算法和Aggregation Group。任务调度使用Quartz调度器和Linux的Crontab进行,负责根据优化策略执行优化、物化计算。
数据计算层:本层执行多维数据查询任务,分为计算引擎和多维索引两个模块。计算引擎为混合引擎,包括Spark SQL和Kylin,查询路由根据系统预计算完成数据的情况,检索多维索引选择合适的查询引擎执行任务。多维索引则用到了Cube生成树和Bitmap索引的技术。
业务逻辑层:本层为前端请求和后端查询任务的中间层,将下层服务封装成功能,供上层调用。系统整体架构使用Spring Boot编写,前后端通信、以及后端功能模块之间的通信使用RESTful API的方式进行,后端返回给前端的信息则组织为JSON的格式。
页面展示层:负责将查询结果展示给用户,前端采用Vue框架编写,各类图表组件的生成采用了E-charts。
第三步、查询路由模块:
本模块的功能是执行多维数据的查询任务,基于混合引擎,结合Bitmap索引的检索,在Spark SQL和Kylin之间做出选择,以达到最优的查询性能。本模块的整体流程如图7所示。根据这些功能流程,可以归纳出本模块需要的接口,如下表所示:
query是本模块的主接口,其执行逻辑对用户透明。query接口调用了几个Service:多维查询路由(queryRoute)用来检索Bitmap索引、选择查询引擎(使用SQLParse解析逻辑语法树,然后由BitmapIndex执行查询任务匹配),SparkSQL的查询执行服务(sparkSql)用来执行下压查询任务,Kylin的查询执行服务(kylinQuery)用来执行命中Cube时的预计算结果查询。所调用的这些服务同时被封装成了接口,可以调试和单独调用某引擎测试使用。
本申请的技术效果:可以在后台建立Cube的位图Bitmap索引,智能地选择合适的查询引擎执行查询任务,提升系统整体性能。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,该计算机存储有计算机程序,所述计算机程序被处理器执行时,实现本申请实施例的基于混合引擎的多维数据查询方法。
尽管参考附图详地公开了本申请,但应理解的是,这些描述仅仅是示例性的,并非用来限制本申请的应用。本申请的保护范围由附加权利要求限定,并可包括在不脱离本申请保护范围和精神的情况下针对发明所作的各种变型、改型及等效方案。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于混合引擎的多维数据查询方法,其特征在于,包括:
构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
2.如权利要求1所述的基于混合引擎的多维数据查询方法,其特征在于,根据所述结构化查询语言和所述位图树获取查询结果,包括:
在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
3.如权利要求2所述的基于混合引擎的多维数据查询方法,其特征在于,根据所述结构化查询语言和所述位图树获取查询结果,还包括:
在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
4.如权利要求1-3任一项所述的基于混合引擎的多维数据查询方法,其特征在于,在构建数据立方体生成树之后,还包括:
采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
5.如权利要求1所述的基于混合引擎的多维数据查询方法,其特征在于,所述建立维度字典,包括:
获取妊娠结果表、基础信息表和母亲体检表,根据所述妊娠结果表、基础信息表和母亲体检表生成星型模型,对所述星型模型进行扁平化处理以得到所述维度字典,其中,每个维度对应一个比特位。
6.一种基于混合引擎的多维数据查询装置,其特征在于,包括:
构建模块,用于构建数据立方体生成树,所述数据立方体生成树包括多个子数据立方体,每个子数据立方体对应一种维度组合的预聚合结果;
建立模块,用于建立维度字典,所述维度字典用于表征维度与比特位的映射关系;
生成模块,用于根据所述维度字典构建位图索引,并将所述位图索引套入所述立方体生成树中,得到基于位图索引的位图树,其中,所述位图索引由比特数组组成,所述比特数组中的比特值表征比特位对应的维度是否被预计算;
查询模块,用于获取查询需求,根据所述查询需求生成结构化查询语言,并根据所述结构化查询语言和所述位图树获取查询结果。
7.如权利要求6所述的基于混合引擎的多维数据查询装置,其特征在于,所述查询模块,包括:
第一查询单元,用于在确定与所述结构化查询语言匹配的位图树时,从位图树的根节点开始进行深度优先搜索;
第一生成单元,用于在确定通过所述深度优先搜索查找到精确命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果。
8.如权利要求7所述的基于混合引擎的多维数据查询装置,其特征在于,所述查询模块,还包括:
第二查询单元,用于在确定通过所述深度优先搜索未查找到精确命中的子数据立方体时,回溯查找模糊命中的子数据立方体;
第二生成单元,用于在确定回溯查找到模糊命中的子数据立方体时,使用MOLAP引擎查询预聚合的数据,根据预聚合的数据生成查询结果;
在确定回溯查找未找到模糊命中的子数据立方体时,使用ROLAP引擎在线计算查询结果。
9.如权利要求6-8任一项所述的基于混合引擎的多维数据查询装置,其特征在于,还包括:
剪枝模块,用于采用聚合组剪枝的方式对所述数据立方体生成树进行剪枝处理,其中,根据维度间的关联程度,将维度划分成多个聚合组,以每个聚合组为根节点开始物化各自的子数据立方体,所述维度包括强制维度、层级维度和联合维度中的一种或者多种。
10.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一所述的基于混合引擎的多维数据查询方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733535.XA CN113641669B (zh) | 2021-06-30 | 2021-06-30 | 一种基于混合引擎的多维数据查询方法及装置 |
PCT/CN2021/137140 WO2023273183A1 (zh) | 2021-06-30 | 2021-12-10 | 基于混合引擎的多维数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733535.XA CN113641669B (zh) | 2021-06-30 | 2021-06-30 | 一种基于混合引擎的多维数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113641669A true CN113641669A (zh) | 2021-11-12 |
CN113641669B CN113641669B (zh) | 2023-08-01 |
Family
ID=78416417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110733535.XA Active CN113641669B (zh) | 2021-06-30 | 2021-06-30 | 一种基于混合引擎的多维数据查询方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113641669B (zh) |
WO (1) | WO2023273183A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
TWI778924B (zh) * | 2022-02-25 | 2022-09-21 | 國立高雄大學 | 大數據檢索方法及系統 |
CN115309947A (zh) * | 2022-08-15 | 2022-11-08 | 北京欧拉认知智能科技有限公司 | 基于图的在线分析引擎实现方法及系统 |
WO2023273183A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京邮电大学 | 基于混合引擎的多维数据查询方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116192805A (zh) * | 2023-01-13 | 2023-05-30 | 北京信而泰科技股份有限公司 | 一种适用于网络测试仪的动态ip分发方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194167A1 (en) * | 1999-08-04 | 2002-12-19 | Reuven Bakalash | Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements |
CN101960454A (zh) * | 2008-01-07 | 2011-01-26 | 奥里·赫恩施塔特 | 多维数据库体系 |
CN112286953A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 多维数据查询方法、装置和电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877995B2 (en) * | 2014-08-14 | 2020-12-29 | Intellicus Technologies Pvt. Ltd. | Building a distributed dwarf cube using mapreduce technique |
CN106484875B (zh) * | 2016-10-13 | 2019-12-31 | 广州视源电子科技股份有限公司 | 基于molap的数据处理方法及装置 |
CN110110165B (zh) * | 2019-04-01 | 2021-04-02 | 跬云(上海)信息科技有限公司 | 用于预计算系统中查询引擎的动态路由方法及装置 |
CN113641669B (zh) * | 2021-06-30 | 2023-08-01 | 北京邮电大学 | 一种基于混合引擎的多维数据查询方法及装置 |
-
2021
- 2021-06-30 CN CN202110733535.XA patent/CN113641669B/zh active Active
- 2021-12-10 WO PCT/CN2021/137140 patent/WO2023273183A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194167A1 (en) * | 1999-08-04 | 2002-12-19 | Reuven Bakalash | Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements |
CN101960454A (zh) * | 2008-01-07 | 2011-01-26 | 奥里·赫恩施塔特 | 多维数据库体系 |
CN112286953A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 多维数据查询方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
K. DHANASREE 等: "A Survey on OLAP", 2016 IEEE INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND COMPUTING RESEARCH (ICCIC) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273183A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京邮电大学 | 基于混合引擎的多维数据查询方法及装置 |
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
CN114547380B (zh) * | 2022-01-25 | 2022-11-15 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
TWI778924B (zh) * | 2022-02-25 | 2022-09-21 | 國立高雄大學 | 大數據檢索方法及系統 |
CN115309947A (zh) * | 2022-08-15 | 2022-11-08 | 北京欧拉认知智能科技有限公司 | 基于图的在线分析引擎实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113641669B (zh) | 2023-08-01 |
WO2023273183A1 (zh) | 2023-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641669A (zh) | 一种基于混合引擎的多维数据查询方法及装置 | |
US7509311B2 (en) | Use of statistics on views in query optimization | |
US5899986A (en) | Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer | |
US10585887B2 (en) | Multi-system query execution plan | |
US9990398B2 (en) | Inferring dimensional metadata from content of a query | |
US9798772B2 (en) | Using persistent data samples and query-time statistics for query optimization | |
JPH0673136B2 (ja) | キ−数を推計する方法 | |
US7324991B1 (en) | Sampling in a multidimensional database | |
CN106991141B (zh) | 一种基于深度剪枝策略的关联规则挖掘方法 | |
WO2015042070A1 (en) | Densely grouping dimensional data | |
Giannakouris et al. | MuSQLE: Distributed SQL query execution over multiple engine environments | |
CN113535788B (zh) | 一种面向海洋环境数据的检索方法、系统、设备及介质 | |
US20230103328A1 (en) | Data compression techniques | |
CN110990402A (zh) | 由行存储到列存储的格式转化方法、查询方法及装置 | |
Kipf et al. | Estimating filtered group-by queries is hard: Deep learning to the rescue | |
US10795868B2 (en) | Summarizing statistical data for database systems and/or environments | |
US9141654B2 (en) | Executing user-defined function on a plurality of database tuples | |
TWI436222B (zh) | Real - time multi - dimensional analysis system and method on cloud | |
WO2021232645A1 (zh) | 一种提升聚合查询效率的聚合索引结构及聚合索引方法 | |
CN110389953B (zh) | 基于压缩图的数据存储方法、存储介质、存储装置和服务器 | |
CN113874832A (zh) | 使用具有规范形式的逻辑查询步骤进行查询处理 | |
Li et al. | Set predicates in sql: Enabling set-level comparisons for dynamically formed groups | |
US20030126127A1 (en) | Estimation of join fanout using augmented histogram | |
CN114880393A (zh) | 基于多维索引的海量时空数据可视化性能优化方法及系统 | |
Hu et al. | Bitmap techniques for optimizing decision support queries and association rule algorithms |
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 |