基于预计算优化的逻辑执行优化方法及系统与流程

文档序号:18164745发布日期:2019-07-13 09:31阅读:142来源:国知局
本发明涉及数据查询
技术领域
:,尤其涉及一种基于预计算优化的逻辑执行优化方法及系统。
背景技术
::在信息化和数据化的时代,很多企业都会使用传统数据仓库或数据库技术来搭建数据分析平台,期望能从这些数据中挖掘出来价值。但是随着数据量的爆炸增长,原有的技术难以在巨量的数据量下还能保持高效、可靠的查询体验。如何对规模在千万亿级别的数据进行快速的多维分析以进行决策支持,是商务智能和数据挖掘领域的重要课题,也是本发明所解决的问题。技术实现要素:本发明实施例提供一种基于预计算优化的逻辑执行优化方法及系统,通过对cube中的数据进行预聚合,并执行优化的逻辑操作,可以提高查询速度。本发明实施例第一方面提供了一种基于预计算优化的逻辑执行优化方法,可包括:构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid;在所述cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据;基于查询树的各叶子节点遍历输出所述目标查询数据。在一种可能的设计中,上述优化方法还包括:将数据库中同一项目对应的多维度的项目数据组合在同一cuboid。在一种可能的设计中:上述查询树至少包括第一叶子节点和第二叶子节点。在一种可能的设计中:上述第一叶子节点为从所述cuboid中获取数据的节点;上述第二叶子节点无需遍历所述目标数据维度中的全部目标查询数据。在一种可能的设计中,上述优化方法还包括:在第一叶子节点中,过滤掉第二叶子节点无需遍历的目标查询数据。本发明实施例第二方面提供了一种基于预计算优化的逻辑执行优化系统,可包括:预聚合模块,用于构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid;目标数据获取模块,用于在所述cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据;数据输出模块,用于基于查询树的各叶子节点遍历输出所述目标查询数据。在一种可能的设计中,上述优化系统还包括:数据组合模块,用于将数据库中同一项目对应的多维度的项目数据组合在同一cuboid。在一种可能的设计中:上述查询树至少包括第一叶子节点和第二叶子节点。在一种可能的设计中:上述第一叶子节点为从所述cuboid中获取数据的节点;上述第二叶子节点无需遍历目标数据维度中的全部目标查询数据。在一种可能的设计中,上述优化系统还包括:数据过滤模块,用于在第一叶子节点中,过滤掉第二叶子节点无需遍历的目标查询数据。在本发明实施例中,基于原始的数据仓库提出了一种多层次的优化查询方案,解决了在大数据量下,复杂查询无法及时返回的缺陷,极大的提升了查询的速度,并且通过横向的增加集群的资源满足了不断增长的数据量。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1是本发明实施例提供的一种基于预计算优化的逻辑执行优化方法的流程示意图;图2是本发明实施例提供的一种查询树结构示意图;图3是本发明实施例提供的另一种查询树结构示意图;图4是本发明实施例提供的一种基于预计算优化的逻辑执行优化系统的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。本发明实施例提供的基于预计算优化的逻辑执行优化方法可以应用于大数据挖掘的场景中。下面将结合附图1-附图3,对本发明实施例提供的基于预计算优化的逻辑执行优化方法进行详细介绍。请参见图1,为本发明实施例提供了一种基于预计算优化的逻辑执行优化方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤s101-步骤s103。s101,构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid。可以理解的是,上述数据立方体cube可以是数据库中对于多维度的项目数据的一个抽象,包含了多维分析中不同的维度组合,可以是所有维度的组合,每一种维度组合也可以称之为一个cuboid即cube是所有cuboid的集合。需要说明的是,优化系统可以将数据库中同一项目对应的多维度的项目数据组合在同一cuboid。可以理解的是,同一项目可以是具备关联关系的数据维度,例如,学号、分数、排名等可以属于同一项目,其中,学号、分数和排名可以是同一项目的项目数据对应的不同维度。进一步的,优化系统可以通过构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid。在本发明的具体实现方式中,上述预聚合的过程可以通过下面的例子来说明。假设一张表上有以下几个列:交易号,国家,时间,类型,交易金额,假设我们想要以国家、时间、类型为维度,分析交易金额的总和,则以建立如表1所示的一个cuboid:表1国家时间类型交易金额总和当原始表有如表2所示的数据时:表2国家时间类型地点交易金额china2016t1shanghai100america2018t2newyork50china2016t1beijing50经过预聚合之后,cuboid中存储的数据如表3所示:表3国家时间类型交易金额总和china2016t1150america2018t250可以看到经过预聚合之后,一方面减少了源数据的条数,另一方面需要计算的指标也提前计算完成,所以当分析师进行实际业务查询时,无需重新对数据执行聚合运算,而是通过预聚合查询引擎,直接读取预计算结果,使其能够在短时间能内对海量数据集进行灵活分析。s102,在cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据。具体的,优化系统可以在cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据,可以理解的是,查询任务可以是sql语言编辑的程序指令,目标数据维度可以是在某一项目中需要查询的数据维度,例如,某一项目包含的数据维度为姓名、学号、成绩,目标数据维度可以只包含姓名和成绩。在本发明实施例的具体实现方式中,如图2所示,图2中右图为一个原始的执行计划,查询树的叶子节点tablescan负责从存储中将数据取出。未经过优化执行计划会将所有数据都取出,传递给下一个节点。图2中右图的两个tablescan算子会分别全量的扫描sales表和country表,读出这两个表的所有列的所有值,即读取其中所有的数据维度对应的数据。可以发现图2中左图的查询最后只会用到orderid和name这两个数据维度,可以将orderid和name作为目标数据维度,只需遍历这两个目标数据维度的对应的目标查询数据即可,最终,查询树的遍历过程可以是图2中的右图。在可选实施例中,查询树至少包括第一叶子节点和第二叶子节点,上述第一和第二可以作为范数进行代指,表示查询树中有较多层次的叶子节点。上述第一叶子节点可以是直接从cuboid中获取数据的节点,上述第二叶子节点可以是无需遍历上述目标数据维度中的全部目标查询数据的节点。可以理解的是,优化系统可以在第一叶子节点中,过滤掉第二叶子节点无需遍历的目标查询数据。例如,图2中左图或者图3中左图的查询树的上层有一个filter节点,该节点会过滤掉orderid不为123的所有其他值,所以在tablescan节点上并不需要读取sales表上orederid列中的所有值,可以直接在tablescan节点上过滤掉所有orderid不为123的所有其他值。最终可以形成如图3中右图所示的查询结构。需要说明的是,上述tablescan节点可以作为第一叶子节点,filter节点可以作为第二叶子节点。s103,基于查询树的各叶子节点遍历输出目标查询数据。具体的,优化系统可以基于查询树的各叶子节点遍历输出目标查询数据,可以理解的是,上述各叶子节点可以是根据目标数据维度进行节点裁剪后的全部节点或者是遍历裁剪后的数据的全部节点。在本发明实施例中,基于原始的数据仓库提出了一种多层次的优化查询方案,解决了在大数据量下,复杂查询无法及时返回的缺陷,极大的提升了查询的速度,并且通过横向的增加集群的资源满足了不断增长的数据量。下面将结合附图4,对本发明实施例提供的基于预计算优化的逻辑执行优化系统进行详细介绍。需要说明的是,附图4所示的优化系统,用于执行本发明图1-图3所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图3所示的实施例。请参见图4,为本发明实施例提供了一种基于预计算优化的逻辑执行优化系统的结构示意图。如图4所示,本发明实施例的所述优化系统10可以包括:预聚合模块101、目标数据获取模块102、数据输出模块103、数据组合模块104和数据过滤模块105。预聚合模块101,用于构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid。可以理解的是,上述数据立方体cube可以是数据库中对于多维度的项目数据的一个抽象,包含了多维分析中不同的维度组合,可以是所以维度的组合,每一种维度组合也可以称之为一个cuboid即cube是所以cuboid的集合。需要说明的是,数据组合模块104可以将数据库中同一项目对应的多维度的项目数据组合在同一cuboid。可以理解的是,同一项目可以是具备关联关系的数据维度,例如,学号、分数、排名等可以属于同一项目,其中,学号、分数和排名可以是同一项目的项目数据对应的不同维度。进一步的,预聚合模块101可以通过构建数据立方体cube,将数据库中的数据按照不同维度的组合预聚合为不同的cuboid。在本发明的具体实现方式中,上述预聚合的过程可以通过下面的例子来说明。假设一张表上有以下几个列:交易号,国家,时间,类型,交易金额,假设我们想要以国家、时间、类型为维度,分析交易金额的总和,则以建立如表1所示的一个cuboid:表1国家时间类型交易金额总和当原始表有如表2所示的数据时:表2经过预聚合之后,cuboid中存储的数据如表3所示:表3国家时间类型交易金额总和china2016t1150america2018t250可以看到经过预聚合之后,一方面减少了源数据的条数,另一方面需要计算的指标也提前计算完成,所以当分析师进行实际业务查询时,无需重新对数据执行聚合运算,而是通过预聚合查询引擎,直接读取预计算结果,使其能够在短时间能内对海量数据集进行灵活分析。目标数据获取模块102,用于在cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据。具体实现中,目标数据获取模块102可以在cuboid中获取查询任务所要查询的目标数据维度对应的目标查询数据,可以理解的是,查询任务可以是sql语言编辑的程序指令,目标数据维度可以是在某一项目中需要查询的数据维度,例如,某一项目包含的数据维度为姓名、学号、成绩,目标数据维度可以只包含姓名和成绩。在本发明实施例的具体实现方式中,如图2所示,图2中左图为一个原始的执行计划,查询树的叶子节点tablescan负责从存储中将数据取出。未经过优化执行计划会将所有数据都取出,传递给下一个节点。图2中右图的两个tablescan算子会分别全量的扫描sales表和country表,读出这两个表的所有列的所有值,即读取其中所有的数据维度对应的数据。可以发现图2中左图的查询最后只会用到orderid和name这两个数据维度,可以将orderid和name作为目标数据维度,只需遍历这两个目标数据维度的对应的目标查询数据即可,最终,查询树的遍历过程可以是图2中的右图。在可选实施例中,查询树至少包括第一叶子节点和第二叶子节点,上述第一和第二可以作为范数进行代指,表示查询树中有较多层次的叶子节点。上述第一叶子节点可以是直接从cuboid中获取数据的节点,上述第二叶子节点可以是无需遍历上述目标数据维度中的全部目标查询数据的节点。可以理解的是,数据过滤模块105可以在第一叶子节点中,过滤掉第二叶子节点无需遍历的目标查询数据。例如,图2中左图或者图3中左图的查询树的上层有一个filter节点,该节点会过滤掉orderid不为123的所有其他值,所以在tablescan节点上并不需要读取sales表上orederid列中的所有值,可以直接在tablescan节点上过滤掉所有orderid不为123的所有其他值。最终可以形成如图3中右图所示的查询结构。需要说明的是,上述tablescan节点可以作为第一叶子节点,filter节点可以作为第二叶子节点。数据输出模块103,用于基于查询树的各叶子节点遍历输出目标查询数据。具体实现中,数据输出模块103可以基于查询树的各叶子节点遍历输出目标查询数据,可以理解的是,上述各叶子节点可以是根据目标数据维度进行节点裁剪后的全部节点或者是遍历裁剪后的数据的全部节点。在本发明实施例中,基于原始的数据仓库提出了一种多层次的优化查询方案,解决了在大数据量下,复杂查询无法及时返回的缺陷,极大的提升了查询的速度,并且通过横向的增加集群的资源满足了不断增长的数据量。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1