CN117971888A - 数据引擎的确定方法、装置、设备、存储介质及程序产品 - Google Patents
数据引擎的确定方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN117971888A CN117971888A CN202410362694.7A CN202410362694A CN117971888A CN 117971888 A CN117971888 A CN 117971888A CN 202410362694 A CN202410362694 A CN 202410362694A CN 117971888 A CN117971888 A CN 117971888A
- Authority
- CN
- China
- Prior art keywords
- data
- cost
- engine
- data engine
- cost 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 124
- 238000013439 planning Methods 0.000 claims abstract description 191
- 238000012545 processing Methods 0.000 claims description 56
- 238000004364 calculation method Methods 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 9
- 238000012216 screening Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 221
- 230000008569 process Effects 0.000 description 73
- 238000005457 optimization Methods 0.000 description 42
- 235000004919 Ariocarpus fissuratus Nutrition 0.000 description 35
- 244000176187 Ariocarpus fissuratus Species 0.000 description 35
- 238000010586 diagram Methods 0.000 description 23
- 238000013500 data storage Methods 0.000 description 16
- 238000005192 partition Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 229910021532 Calcite Inorganic materials 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 108010068370 Glutens Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 235000021312 gluten Nutrition 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种数据引擎的确定方法、装置、设备、存储介质及程序产品,包括:构建可执行语句对应的至少一个计划树,并获取用于执行计划树的至少一个数据引擎;针对各计划树,确定各数据引擎执行计划树的代价值;针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树;基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎。如此,能够提高所确定的数据引擎的执行效率并降低数据引擎的执行代价。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据引擎的确定方法、装置、设备、存储介质及程序产品。
背景技术
相关技术中,在执行结构化查询语言(SQL,Structured Query Language)时,是针对多个计算引擎生成统一的SQL执行计划,然后再从多个计算引擎中随机选取一个计算引擎来执行,然而,不同计算引擎的执行行为和能力各不相同的,针对多个计算引擎生成统一的SQL执行计划则忽略了计算引擎本身的特征,导致计算引擎执行SQL执行计划时的执行效果较差,同时,又从多个计算引擎中随机选取计算引擎来执行SQL执行计划,则会进一步降低计算引擎的执行效果。
发明内容
本申请实施例提供一种数据引擎的确定方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够提高所确定的数据引擎的执行效率并降低数据引擎的执行代价。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据引擎的确定方法,包括:
构建可执行语句对应的至少一个计划树,并获取用于执行所述计划树的至少一个数据引擎;
针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值;
针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树;
基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
本申请实施例提供一种数据引擎的确定装置,包括:
构建模块,用于构建可执行语句对应的至少一个计划树,并获取用于执行所述计划树的至少一个数据引擎;
确定模块,用于针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值;
第一选取模块,用于针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树;
第二选取模块,用于基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
在上述方案中,所述确定模块,还用于针对各所述数据引擎,执行以下处理:分别获取数据获取操作对应的第一初始代价值、以及数据执行操作对应的第二初始代价值;其中,所述数据获取操作为,所述数据引擎获取所述计划树对应的待操作数据时的获取操作,所述数据执行操作为,所述数据引擎针对所述待操作数据执行所述可执行语句所指示的操作时的执行操作;获取至少一个成本要素,所述成本要素用于影响所述数据引擎执行所述计划树的代价值;基于所述至少一个成本要素,获取所述数据引擎对应的至少一个代价系数;基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值。
在上述方案中,所述至少一个成本要素包括所述待操作数据的数据温度;所述确定模块,还用于获取用于存储所述待操作数据的存储介质的被访问频率、以及多个频率区间;其中,每一个所述频率区间对应一个数据温度;基于所述被访问频率,从所述多个频率区间中,选取所述被访问频率所归属的目标频率区间;将所述目标频率区间对应的数据温度,确定为所述待操作数据的数据温度。
在上述方案中,所述至少一个成本要素包括所述数据引擎的执行效率;所述确定模块,还用于对所述待操作数据进行分析,得到所述待操作数据的数据量;获取所述数据引擎的引擎标识,并基于所述引擎标识,确定所述数据引擎所归属的引擎类型;基于所述数据引擎所归属的引擎类型以及所述数据量,对所述数据引擎的执行效率进行分析,得到所述数据引擎执行所述待操作数据时的执行效率。
在上述方案中,所述至少一个成本要素包括所述数据引擎的存算亲和性;所述确定模块,还用于获取用于存储所述待操作数据的存储介质的介质标识、以及所述数据引擎的引擎标识;基于所述介质标识,确定所述存储介质的位置,并基于所述引擎标识,确定所述数据引擎的位置;基于所述存储介质的位置以及所述数据引擎的位置,对所述数据引擎与所述存储介质间的紧密程度进行分析,得到所述数据引擎的存算亲和性。
在上述方案中,所述确定模块,还用于当所述至少一个成本要素包括所述待操作数据的数据温度、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第一中间代价值与所述第二初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的执行效率、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数时,将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值,并将所述第二中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的存算亲和性对应的第三代价系数时,将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值,并将所述第三中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在上述方案中,所述确定模块,还用于当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的执行效率、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的执行效率对应的第二代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值;将所述第一中间代价值与所述第二中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值;将所述第一中间代价值与所述第三中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的执行效率以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值,并将所述第四中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在上述方案中,所述至少一个成本要素包括所述待操作数据的数据温度、所述数据引擎的执行效率以及所述数据引擎的存算亲和性,所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数、所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数;所述确定模块,还用于将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值;将所述第一中间代价值与所述第四中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在上述方案中,所述装置还包括筛选模块,所述筛选模块,用于对所述可执行语句进行语法分析,得到所述可执行语句包括的语法类型;基于所述可执行语句包括的语法类型,确定各所述数据引擎的可执行性;基于各所述数据引擎的可执行性,对所述至少一个数据引擎进行筛选,得到至少一个标准数据引擎;所述确定模块,还用于针对各所述计划树,确定各所述标准数据引擎执行所述计划树的代价值。
在上述方案中,所述第一选取模块,还用于当所述计划树的数量为多个时,针对各所述数据引擎分别执行如下处理:基于各所述代价值,对多个计划树进行排序,得到第一排序结果;基于所述第一排序结果,从所述多个计划树中选取所述代价值最低的计划树,作为所述数据引擎的第一目标计划树。
在上述方案中,所述第二选取模块,还用于当所述数据引擎的数量为多个时,基于各所述第一目标计划树对应的代价值,对多个数据引擎进行排序,得到第二排序结果;基于所述第二排序结果,从所述代价值最低的第一目标计划树对应的数据引擎起,依次对各所述数据引擎进行检测,直至检测结果表征相应所述数据引擎满足引擎选取条件;将满足所述引擎选取条件的所述数据引擎,确定为所述目标数据引擎。
在上述方案中,所述构建模块,还用于构建对应所述可执行语句的至少一个语法树;对所述至少一个语法树进行转换,得到所述可执行语句对应的至少一个计划树。
在上述方案中,所述构建模块,还用于构建对应所述可执行语句的初始计划树;对所述初始计划树进行转换,得到至少一个等价计划树,所述数据引擎执行所述等价计划树时的执行效率大于所述数据引擎执行所述初始计划树时的执行效率;将所述至少一个等价计划树,确定为所述至少一个计划树。
在上述方案中,所述装置还包括转换模块,所述转换模块,用于对各所述第一目标计划树进行转换,得到等价目标计划树,所述数据引擎执行所述等价目标计划树时的执行效率大于所述数据引擎执行所述第一目标计划树时的执行效率;针对各所述等价目标计划树,确定相应所述数据引擎执行所述等价目标计划树的等价代价值;当存在所述等价代价值小于相应所述第一目标计划树对应的代价值时,针对各所述等价目标计划树,确定各所述数据引擎执行所述等价目标计划树的等价代价值;针对各所述数据引擎,基于所述数据引擎执行所述等价目标计划树的等价代价值,从至少一个等价目标计划树中选取第二目标计划树;所述第二选取模块,还用于基于各所述第二目标计划树对应的等价代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现本申请实施例提供的数据引擎的确定方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于引起处理器执行时,实现本申请实施例提供的数据引擎的确定方法。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例提供的数据引擎的确定方法。
本申请实施例具有以下有益效果:
在构建完可执行语句对应的至少一个计划树之后,针对各计划树对应的代价值,选取各数据引擎对应的第一目标计划树,这样,针对各数据引擎,存在对应的执行计划(即计划树),相较于多个数据引擎对应相同的执行计划的方案,针对各数据引擎,选取出更贴合每一个数据引擎的执行计划,从而提高了数据引擎在执行相应执行计划时的执行效率;同时,基于各第一目标计划树对应的代价值,从多个数据引擎中,选取最终的目标数据引擎,相较于相关技术中从多个数据引擎中随机选取数据引擎的方案,在引擎选择阶段根据计划树的代价值来进行数据引擎的选择,增强引擎选择过程的完备性,不仅降低了数据引擎的执行代价,也进一步提高了所确定的数据引擎的执行效率。
附图说明
图1是本申请实施例提供的数据引擎的确定系统的架构示意图;
图2是本申请实施例提供的电子设备的结构示意图;
图3是本申请实施例提供的数据引擎的确定方法的流程示意图;
图4是本申请实施例提供的确定各数据引擎执行计划树的代价值的过程的流程示意图;
图5是本申请实施例提供的基于各数据引擎执行计划树的代价值对各数据引擎进行排序的示意图;
图6是本申请实施例提供的第二排序结果的示意图;
图7是本申请实施例提供的目标引擎类型的示意图;
图8是本申请实施例提供的不同引擎生成不同执行计划的示意图;
图9是本申请实施例提供的扩展数据存储以及计算引擎的代价评估的方法的技术架构图;
图10是本申请实施例通过的最优计划树扩展的过程示意图;
图11是本申请实施例提供的CBO优化扩展过程的示意图;
图12是本申请实施例提供的RBO优化扩展过程的示意图;
图13是本申请实施例提供的引擎选择扩展的过程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)客户端(Client),又称用户端,是指与服务器相对应的为用户提供本地服务的程序,除了一些只能在本地运行的应用程序之外,一般安装在终端上,需要与服务器相互配合运行,即需要网络中有相应的服务器和服务程序来提供相应的服务,这样在客户端和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。
3)人工智能(AI,Artificial Intelligence),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法和技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
4)计划树(Query Plan Tree),是数据库管理系统中用来表示查询执行计划的一种数据结构。在数据库查询优化过程中,优化器会生成多种可能的执行计划,计划树就是这些执行计划的图形化表示,表达SQL的树状结构,由多个节点组成,每个节点代表一个执行操作。树的根节点表示整个查询的执行计划,而叶子节点表示最底层的操作,如表扫描、索引扫描、连接操作等。
5)SqlNode,Apache Calcite项目中的一个关键概念,用于表示AST抽象语法树对象,表示SQL语句的各个部分,如SELECT子句、FROM子句、WHERE子句等。
6)RelNode,Apache Calcite项目中的一个关键概念,用于表示逻辑查询计划的节点,是Calcite中计划树的表达对象。
7)RelSubset,查询优化过程中的一组关系表达式(RelNode)的子集,表示一组等价的计划树。
8)数据存储,数据保存在持久化介质(如硬盘、固态硬盘、云存储等)上的过程和方式,是计算机系统中重要的组成部分,用于长期保存和管理数据,以便后续的访问和处理。
9)计算引擎,泛指大数据领域,用于执行计算任务的系统,如Spark、Presto、Hive等。
10)存算亲和性,计算任务中,将数据和计算任务尽可能地放在同一个计算节点或处理器核心上,以提高计算性能和效率的一种优化技术。数据与计算的“距离”越近,亲和性越高。
11)代价模型,一种数学模型,基于统计信息和启发式规则,计算每个执行计划的成本估计值,这些成本估计值可以是时间、资源消耗、操作次数等指标,用于比较和选择最优的执行计划。
12)Java连接数据库的标准接口(JDBC,Java Database Connectivity),提供了一种 Java 程序与各种关系数据库之间进行通信和交互的机制。通过 JDBC,Java 程序可以执行 SQL 查询、更新数据、获取结果集等操作,与数据库进行数据交互。
13)有向无环图(DAG,Directed Acyclic Graph),是一种图形结构,其中每个节点都指向其父节点,并且整个图中不存在环路。DAG广泛应用于各种领域,包括计算机科学、数据结构和项目管理等。它可以用于表示任务或进程之间的依赖关系,以便有效地安排和调度任务或进程的执行。
14)大规模并行处理引擎(MPP,Massive Parallel Processing),用于高效地处理大规模数据集。这种引擎通常用于数据仓库和大数据分析应用,它可以将数据处理任务分散到多个处理器上,以实现高速度和高吞吐量的数据处理。
15)后端系统编程的引擎(BSP,Backend System Programming),用于处理与数据库、消息队列、缓存等系统之间的交互,以及与前端系统之间的通信和数据交换。它可以帮助开发人员快速构建高效、可靠和可扩展的后端系统,支持分布式计算、云计算和物联网等应用场景。
16)中央处理单元(CPU,Central Processing Unit)是计算机系统中的一个重要组件,它是计算机的大脑,负责执行程序指令、进行算术和逻辑运算,控制数据的流动和处理。CPU 是计算机系统中的主要处理器,承担着处理数据和运行程序的核心功能。
17)湖仓分区表(Lakehouse Partitioned Tables),是一种数据架构设计,它结合了数据湖(Data Lake)和数据仓库(Data Warehouse)的优势,旨在提供一种既能存储大规模原始数据,又能支持高效查询和分析的解决方案。
其中,湖表(Lake Table)通常是指在数据湖(Data Lake)架构中存储数据的一种抽象概念。在数据湖中,数据以原始格式存储,没有经过任何处理,这就需要一种方式来组织和访问这些数据。湖表就是为了解决这个问题而提出的一种概念。湖表是数据湖架构中的一个重要组成部分,它使得数据湖中的数据更容易被用户访问和利用,同时也保持了数据湖的灵活性和可扩展性。
而仓表,是指数据仓库中的表,是用于存储经过处理后的结构化数据。数据仓库是一个面向主题的、集成的、相对稳定的、用于决策支持的数据库。仓表按照一定的规范进行了组织和分类,方便了数据的查询和分析。与数据湖不同,仓表的数据经过了清洗、整理和转化,成为可以用于分析和决策的数据。
18)基于代价的优化(CBO,Cost-Based Optimization),是一种优化数据库查询执行计划的方法。它通过评估不同查询计划的资源消耗(如CPU、内存和操作)来决定最佳的查询执行方式。CBO的核心是代价模型,它使用一组规则和算法来估计每个可能的查询计划的资源消耗,从而选择成本最低的查询计划来执行。
19)数据库查询优化(RBO,Rule-Based Optimization),与CBO相对。在RBO中,优化器使用一组预定义的规则和启发式算法来生成和选择查询执行计划,而不是通过代价模型来评估不同查询计划的资源消耗。
20)结构化查询语言(SQL,Structured Query Language),是一种用于管理和操作关系数据库管理系统的标准编程语言。它是关系数据库管理系统中用于与数据库进行交互的一种语言,可以用来创建、查询、更新和管理数据库中的数据。
参见图1,图1是本申请实施例提供的数据引擎的确定系统100的架构示意图,终端(示例性示出了终端400),终端400通过网络300连接服务器200,其中,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
其中,终端400用于,获取所输入的可执行语句,并将可执行语句发送至服务器200;
服务器200用于,接收终端400发送的可执行语句,并构建可执行语句对应的至少一个计划树,并获取用于执行计划树的至少一个数据引擎;针对各计划树,确定各数据引擎执行计划树的代价值;针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树;基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎;将目标用户对象的推荐对象发送至终端400。
一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDeliver Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、机顶盒、智能语音交互设备、智能家电、虚拟现实设备、车载终端、飞行器、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备、智能音箱及智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
接下来对实施本申请实施例提供的执行数据引擎的确定方法的电子设备进行说明。参见图2,图2是本申请实施例提供的电子设备的结构示意图,该电子设备可以是服务器也可以是终端,以电子设备为图1中所示的服务器为例,图2所示的电子设备包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够显示媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够显示信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的数据引擎的确定装置可以采用软件方式实现,图2示出了存储在存储器450的数据引擎的确定装置455,其可以是程序和插件等形式的软件,包括以下软件模块:构建模块4551、确定模块4552、第一选取模块4553以及第二选取模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的数据引擎的确定装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据引擎的确定装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据引擎的确定方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable LogicDevice)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的数据引擎的确定方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即本地客户端,即需要在操作系统中安装才能运行的程序,如即时通信APP、网页浏览器APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的客户端、模块或插件。
基于上述对本申请实施例提供的数据引擎的确定系统及电子设备的说明,下面说明本申请实施例提供的数据引擎的确定方法。在实际实施时,本申请实施例提供的数据引擎的确定方法可以由终端或服务器单独实现,或者由终端及服务器协同实现,以由图1中的服务器200单独执行本申请实施例提供的数据引擎的确定方法为例进行说明。参见图3,图3是本申请实施例提供的数据引擎的确定方法的流程示意图,接下来,将结合图3示出的步骤进行说明。
步骤101,服务器构建可执行语句对应的至少一个计划树,并获取用于执行计划树的至少一个数据引擎。
在实际实施时,服务器在构建可执行语句对应的至少一个计划树之前,首先需要获取可执行语句,其中,可执行语句可以是SQL语句;这里,可执行语句可以是预先存储于服务器处,也可以是终端实时发送的。例如,终端可以接收到工作人员输入的可执行语句,然后将可执行语句发送至服务器。
在实际实施时,服务器在获取可执行语句之后,构建可执行语句对应的至少一个计划树的过程可以是多种方式,接下来,以其中两种方式为例,对构建可执行语句对应的至少一个计划树的过程进行说明。
在一些实施例中,构建可执行语句对应的至少一个计划树的过程,可以是,构建对应可执行语句的至少一个语法树;对至少一个语法树进行转换,得到可执行语句对应的至少一个计划树。
需要说明的是,对于构建对应可执行语句的至少一个语法树的过程,具体地,首先对可执行语句进行改写,得到改写后的可执行语句,然后对改写后的可执行语句进行解析,得到可执行语句对应的语法树;其中,语法树指示了可执行语句查询的结构和逻辑关系,而对可执行语句进行改写,例如可以是减少子查询,或者使用连接代替子查询,也即在查询中可以使用连接代替子查询,来减少嵌套层数,提高查询效率,又或者使用索引,也即在需要频繁查询的列上创建索引来提高查询性能等;这里,对可执行语句进行改写的方式包括但不限于以上多种,对此,本申请实施例不做限定。
需要说明的是,对于对至少一个语法树进行转换,得到可执行语句对应的至少一个计划树的过程,首先会校验至少一个语法树的合规性,当检验结果表征至少一个语法树合法时,将至少一个语法树转换为至少一个计划树,具体地,首先将语法树转换为逻辑查询计划树,即逻辑查询执行计划,其中,逻辑查询计划树指示了查询的逻辑操作流程,包括表的选择、投影、连接等逻辑操作;然后对逻辑查询计划进行优化,从而提高查询性能,其中,优化的目标包括减少查询所需的操作、减少CPU开销、减少执行时间等,接着,将经过优化的逻辑查询计划转换为物理查询计划,也即计划树,其中,物理查询计划也即计划树指示了数据引擎在执行查询时所采取的具体操作,如索引扫描、排序、连接操作等。
在实际实施时,在对至少一个语法树进行转换,得到可执行语句对应的至少一个计划树之后,还可以,对各计划树进行转换,得到至少一个等价计划树;从而,后续获取用于执行计划树的至少一个数据引擎的过程,也即获取用于执行各等价计划树的至少一个数据引擎。
需要说明的是,数据引擎执行等价计划树时的执行效率大于数据引擎执行初始计划树时的执行效率,对各计划树进行转换,得到至少一个等价计划树的过程,也即是对各计划树进行优化,得到对应的等价计划树;从而后续过程中,获取用于执行各等价计划树的至少一个数据引擎,然后针对各等价计划树,确定各数据引擎执行等价计划树的代价值,再针对各数据引擎,基于各代价值,从至少一个等价计划树中选取第一目标计划树,最后再基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎。
在实际实施时,对各计划树进行优化,得到对应的等价计划树的过程,可以是获取预先设定的优化规则,如谓词下推、连接重排、索引选择等,其中,优化规则用于降低执行计划树的代价,提高数据引擎执行计划树的执行效率,而生成的等价计划树可能不同于原始的计划树,但在逻辑上等效。
需要说明的是,构建对应可执行语句的至少一个语法树,可以是构建对应可执行语句的一个语法树,也可以是构建对应可执行语句的多个语法树,对此,本申请实施例不做限定;同时,对于对至少一个语法树进行转换,得到可执行语句对应的至少一个计划树的过程,以其中一个语法树为例,可以是对一个语法树进行转换,得到多个计划树,也可以是对一个语法树进行转换,得到一个计划树,对此,本申请实施例不做限定。类似地,对各计划树进行转换,得到至少一个等价计划树的过程,以其中一个计划树为例,可以是对一个计划树进行转换,得到多个等价计划树,也可以是对一个计划树进行转换,得到一个等价计划树,对此,本申请实施例不做限定。
在另一些实施例中,构建可执行语句对应的至少一个计划树的过程,可以是,构建对应可执行语句的初始计划树;对初始计划树进行转换,得到至少一个等价计划树,数据引擎执行等价计划树时的执行效率大于数据引擎执行初始计划树时的执行效率;将至少一个等价计划树,确定为至少一个计划树。
在实际实施时,构建对应可执行语句的初始计划树的过程,可以是,构建对应可执行语句的语法树,然后对语法树进行转换,得到初始计划树,这里,构建对应可执行语句的语法树的过程,以及对语法树进行转换,得到初始计划树的过程,与前文所述的构建对应可执行语句的至少一个语法树的过程,和对至少一个语法树进行转换,得到可执行语句对应的至少一个计划树的过程相类似,同样地,对初始计划树进行转换,得到至少一个等价计划树的过程,也与对各计划树进行优化,得到对应的等价计划树的过程相类似,对此,本申请实施例不做赘述。
需要说明的是,构建对应可执行语句的初始计划树,可以是构建一个初始计划树,也可以是构建多个初始计划树,对此,本申请实施例不做限定;而对初始计划树进行转换,得到至少一个等价计划树的过程,以一个初始计划树为例,可以是对一个初始计划树进行转换,得到多个等价计划树,也可以是对一个初始计划树进行转换,得到一个等价计划树,对此,本申请实施例不做限定。
在实际实施时,在获取可执行语句对应的至少一个计划树时,还获取用于执行计划树的至少一个数据引擎,其中,这里的数据引擎,也即计算引擎,是指用于执行和处理计算任务的软件或硬件组件,负责解释、执行和完成可执行语句指示的操作。
步骤102,针对各计划树,确定各数据引擎执行计划树的代价值。
在实际实施时,在获取可执行语句对应的至少一个计划树以及用于执行计划树的至少一个数据引擎之后,针对各计划树,确定各数据引擎执行计划树的代价值,具体地,参见图4,图4是本申请实施例提供的确定各数据引擎执行计划树的代价值的过程的流程示意图,基于图4,针对各计划树,确定各数据引擎执行计划树的代价值的过程,可以通过以下步骤所实现,其中,针对各数据引擎,执行以下处理。
步骤1021,分别获取数据获取操作对应的第一初始代价值、以及数据执行操作对应的第二初始代价值;其中,数据获取操作为,数据引擎获取计划树对应的待操作数据时的获取操作,数据执行操作为,数据引擎针对待操作数据执行可执行语句所指示的操作时的执行操作。
需要说明的是,代价值也即数据引擎执行计划树对应的可执行语句时的成本,指的是执行计划树对应的可执行语句时所涉及的各种资源的消耗,这些资源可能包括CPU成本例如执行计划树对应的可执行语句中各种操作(如计算、逻辑处理等)所需的CPU计算时间、操作成本例如读取和写入数据所需的磁盘操作次数和时间、网络成本例如数据在不同节点之间传输所需的带宽和时间等;而代价值也即这些资源消耗的总和。
其中,对于计划树对应的待操作数据,例如当可执行语句指的是执行一个数据删除操作时,待操作数据指的是需要被删除的数据;而第一初始代价值指的是在执行本申请的技术方案之前,数据引擎执行数据获取操作时所涉及的各种资源消耗的总和,例如可以是用于计划树对应的待操作数据的存储介质的记录数,也即指在存储介质上可以存储的数据量;第二初始代价值指的是在执行本申请的技术方案之前,数据引擎执行数据执行操作时所涉及的各种资源消耗的总和。
步骤1022,获取至少一个成本要素,成本要素用于影响数据引擎执行计划树的代价值。
需要说明的是,成本要素包括多种,例如待操作数据的数据温度、数据引擎的执行效率、数据引擎的存算亲和性、计划树的执行复杂度等,接下来,以其中三种成本要素为例,对获取至少一个成本要素的过程进行说明。
在一些实施例中,至少一个成本要素包括待操作数据的数据温度,从而获取至少一个成本要素的过程,可以是,获取用于存储待操作数据的存储介质的被访问频率,并基于被访问频率,确定待操作数据的数据温度,具体地,获取用于存储待操作数据的存储介质的被访问频率以及多个频率区间;其中,每一个频率区间对应一个数据温度;基于被访问频率,从多个频率区间中,选取被访问频率所归属的目标频率区间;将目标频率区间对应的数据温度,确定为待操作数据的数据温度。
需要说明的是,数据温度指的是数据的活跃程度或被访问的频率,数据温度可以是冷、热以及中间温度,相应地,数据的数据温度为冷时,可以指示数据为冷数据,数据的数据温度为热时,可以指示数据为热数据,或者数据的数据温度为中间温度时,可以指示数据为中间温度数据,例如非冷数据以及非冷数据的普通缓存数据,其中,冷数据的数据温度小于中间温度数据的数据温度,中间温度数据的数据温度小于热数据的数据温度。
在实际实施时,数据的数据温度通过用于存储待操作数据的存储介质所确定,首先获取用于存储待操作数据的存储介质的被访问频率,以及预先设定的多个频率区间,例如可以是三个频率区间,第一个频率区间对应的数据温度为冷,也即指示相应存储介质中存储的数据对应冷数据,第二个频率区间对应的数据温度为中间温度,也即指示相应存储介质中存储的数据对应中间温度数据,第三个频率区间对应的数据温度为热,也即指示相应存储介质中存储的数据对应热数据;其中,被访问频率与数据温度成正比,被访问频率越高,数据的数据温度越高。这样,基于用于存储待操作数据的存储介质的被访问频率,从三个频率区间中,选取被访问频率所归属的目标频率区间,从而将目标频率区间对应的数据温度,确定为待操作数据的数据温度。
需要说明的是,还可以基于存储介质的被访问频率,对不同存储介质进行标记,其中,各存储介质的标记用于指示相应存储介质存储所存储数据的数据温度,例如存储冷数据的存储介质、存储热数据的存储介质等,从而确定用于存储待操作数据的存储介质之后,直接获取相应存储介质的标记,然后基于标记,得到相应存储介质所存储数据的数据温度,并将该数据温度,确定为待操作数据的数据温度。对此,本申请实施例不做限定。
在一些实施例中,至少一个成本要素包括数据引擎的执行效率,从而获取至少一个成本要素的过程,可以是,对待操作数据进行分析,得到待操作数据的数据量;获取数据引擎的引擎标识,并基于引擎标识,确定数据引擎所归属的引擎类型;基于数据引擎所归属的引擎类型以及数据量,对数据引擎的执行效率进行分析,得到数据引擎执行待操作数据时的执行效率。
需要说明的是,数据引擎的执行效率指的是数据引擎执行可执行语句所对应的计划树时的效率,为通过数据引擎在计划树时的速度、资源利用率、并发处理能力和稳定性等多个方面所确定的;其中,针对同一个计划树,不同的数据引擎的执行效率不同,如在小数据量下,MPP引擎中的Presto的效率明显优先Spark,而数仓引擎StarRocks的效率又明显优于大数据引擎(如Presto、Spark等);基于此,数据引擎执行待操作数据时的执行效率可以与待操作数据的数据量相关,从而,在确定待操作数据的数据量之后,基于待操作数据的数据量,确定数据引擎执行待操作数据时的执行效率。
在另一些实施例中,至少一个成本要素包括数据引擎的存算亲和性,从而获取至少一个成本要素的过程,可以是,获取用于存储待操作数据的存储介质的介质标识、以及数据引擎的引擎标识;基于介质标识,确定存储介质的位置,并基于引擎标识,确定数据引擎的位置;基于存储介质的位置以及数据引擎的位置,对数据引擎与存储介质间的紧密程度进行分析,得到数据引擎的存算亲和性。
需要说明的是,存算亲和性是指计算资源也即数据引擎和存储资源也即存储介质之间的亲和关系,或者说是它们之间的紧密程度,亲和性越高,引擎的执行效率越高。其中,高存算亲和性意味着数据引擎和存储介质是在同一个物理位置或者通过高速接口紧密连接,这样可以减少数据传输的时间,提高数据访问的速度,从而提升整体的性能;例如,CPU和主存储器之间的存算亲和性就很高,因为它们通过快速的总线连接。相反,低存算亲和性指的是数据引擎和存储介质相距较远,或者数据传输速率较低,这会导致数据访问延迟增加,影响性能;例如,在使用分布式系统或云计算时,数据可能存储在远程服务器上,而计算任务则在本地执行,这就降低了存算亲和性。
基于此,对于确定数据引擎的存算亲和性的过程,需要基于存储介质的介质标识以及数据引擎的引擎标识,来确定存储介质的位置以及数据引擎的位置,从而基于存储介质的位置以及数据引擎的位置来确定数据引擎的存算亲和性。
步骤1023,基于至少一个成本要素,获取数据引擎对应的至少一个代价系数。
在实际实施时,不同成本要素对应的不同的代价系数,如前文所述,至少一个成本要素包括待操作数据的数据温度、数据引擎的执行效率、数据引擎的存算亲和性、计划树的执行复杂度等。示例性地,当成本要素为数据温度时,数据引擎对应的代价系数可以是第一代价系数,当成本要素为数据引擎的执行效率时,数据引擎对应的代价系数可以是第二代价系数,当成本要素为数据引擎的存算亲和性时,数据引擎对应的代价系数可以是第三代价系数。当成本要素为待操作数据的数据温度、数据引擎的执行效率、数据引擎的存算亲和性,获取的至少一个代价系数可以是第一代价系数、第二代价系数以及第三代价系数。
步骤1024,基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值。
在实际实施时,当成本要素不同时,代价系数不同,从而导致基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值的过程也存在不同,接下来,以不同的成本要素为例,对基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值的过程进行说明。
在一些实施例中,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性中之一,基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值的过程,可以是,当至少一个成本要素包括待操作数据的数据温度、至少一个代价系数包括待操作数据的数据温度对应的第一代价系数时,将第一代价系数与第一初始代价值进行乘积处理,得到第一中间代价值,并将第一中间代价值与第二初始代价值进行求和,得到数据引擎执行计划树的代价值;
当至少一个成本要素包括数据引擎的执行效率、至少一个代价系数包括数据引擎的执行效率对应的第二代价系数时,将第二代价系数与第二初始代价值进行乘积处理,得到第二中间代价值,并将第二中间代价值与第一初始代价值进行求和,得到数据引擎执行计划树的代价值;
当至少一个成本要素包括数据引擎的存算亲和性、至少一个代价系数包括数据引擎的存算亲和性对应的第三代价系数时,将第三代价系数与第二初始代价值进行乘积处理,得到第三中间代价值,并将第三中间代价值与第一初始代价值进行求和,得到数据引擎执行计划树的代价值。
需要说明的是,当至少一个成本要素包括待操作数据的数据温度时,根据不同数据温度,代价系数的大小也不同,不同数据温度与代价系数的大小之间的对应关系可以是预先设定的,数据温度与代价系数呈负相关关系,温度越高,代价系数越低,例如当待操作数据的数据温度指示待操作数据为热数据时,第一代价系数为0.6,当待操作数据的数据温度指示待操作数据为中间温度数据时,第一代价系数为0.8,当待操作数据的数据温度指示待操作数据为冷数据时,第一代价系数为1。
需要说明的是,当至少一个成本要素包括数据引擎的执行效率时,根据不同数据引擎的执行效率,代价系数的大小也不同,不同执行效率与代价系数的大小之间的对应关系可以是预先设定的,数据引擎的执行效率与代价系数呈负相关关系,数据引擎的执行效率越高,代价系数越低。示例性地,针对数据引擎A、B、C、D、E,不同数据引擎的执行效率不同,五个数据引擎的执行效率从高到低依次为数据引擎E、数据引擎D、数据引擎C、数据引擎A以及数据引擎B,从而基于数据引擎的执行效率不同,第二代价系数也不同,也即数据引擎E对应的第二代价系数为0.5、数据引擎D对应的第二代价系数为0.7、数据引擎C对应的第二代价系数为0.8、数据引擎A对应的第二代价系数为1.0、数据引擎B对应的第二代价系数为1.3。
需要说明的是,当至少一个成本要素包括数据引擎的存算亲和性率时,根据不同数据引擎的存算亲和性,代价系数的大小也不同,不同存算亲和性与代价系数的大小之间的对应关系可以是预先设定的,数据引擎的存算亲和性与代价系数呈负相关关系,数据引擎的存算亲和性越高,代价系数越低。示例性地,当数据引擎为StarRocks,而存储介质为StarRocks内表时,则由于StarRocks存算一体的模式,则会导致数据引擎与存储介质之间的紧密程度较高,从而数据引擎的存算亲和性也会高,则第三代价系数会较小;当数据引擎为Native,而存储介质为JDBC数据源时,则数据引擎与存储介质之间的紧密程度小于数据引擎为StarRocks、存储介质为StarRocks内表时数据引擎与存储介质之间的紧密程度,如此,针对数据引擎为StarRocks,存储介质为StarRocks内表的情况以及数据引擎为Native,存储介质为JDBC数据源的情况,StarRocks数据引擎的存算亲和性高于Native数据引擎的存算亲和性,从而StarRocks数据引擎对应的第三代价系数小于Native数据引擎对应的第三代价系数,例如StarRocks数据引擎对应的第三代价系数可以是0.5,Native数据引擎对应的第三代价系数可以是0.8。
在实际实施时,第二代价系数与第三代价系数与第二初始代价值对应,也即乘积操作时需要与第二初始代价值相乘,而第一代价系数与第一初始代价值对应,也即乘积操作时需要与第一初始代价值相乘。基于此,当确定各成本要素时,如待操作数据的数据温度、或者数据引擎的执行效率、又或者数据引擎的存算亲和性,再确定相应具体的代价系数,从而再结合具体的代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值。
在一些实施例中,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性中之二,基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值的过程,可以是,当至少一个成本要素包括待操作数据的数据温度以及数据引擎的执行效率、至少一个代价系数包括待操作数据的数据温度对应的第一代价系数以及数据引擎的执行效率对应的第二代价系数时,将第一代价系数与第一初始代价值进行乘积处理,得到第一中间代价值,并将第二代价系数与第二初始代价值进行乘积处理,得到第二中间代价值;将第一中间代价值与第二中间代价值进行求和,得到数据引擎执行计划树的代价值;
当至少一个成本要素包括待操作数据的数据温度以及数据引擎的存算亲和性、至少一个代价系数包括待操作数据的数据温度对应的第一代价系数以及数据引擎的存算亲和性对应的第三代价系数时,将第一代价系数与第一初始代价值进行乘积处理,得到第一中间代价值,并将第三代价系数与第二初始代价值进行乘积处理,得到第三中间代价值;将第一中间代价值与第三中间代价值进行求和,得到数据引擎执行计划树的代价值;
当至少一个成本要素包括数据引擎的执行效率以及数据引擎的存算亲和性、至少一个代价系数包括数据引擎的执行效率对应的第二代价系数以及数据引擎的存算亲和性对应的第三代价系数时,将第二代价系数、第三代价系数以及第二初始代价值进行乘积处理,得到第四中间代价值,并将第四中间代价值与第一初始代价值进行求和,得到数据引擎执行计划树的代价值。
需要说明的是,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性中之二时,待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性与前文所述的相同,对此,本申请实施例不做赘述。
在实际实施时,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性中之二时,第二代价系数与第三代价系数与第二初始代价值对应,也即乘积操作时需要依次与第二初始代价值相乘,而第一代价系数与第一初始代价值对应,也即乘积操作时需要与第一初始代价值相乘。
在另一些实施例中,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性,也即,至少一个成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性,至少一个代价系数包括待操作数据的数据温度对应的第一代价系数、数据引擎的执行效率对应的第二代价系数以及数据引擎的存算亲和性对应的第三代价系数;从而,基于至少一个代价系数、第一初始代价值以及第二初始代价值,确定数据引擎执行计划树的代价值的过程,可以是,将第一代价系数与第一初始代价值进行乘积处理,得到第一中间代价值,并将第二代价系数、第三代价系数以及第二初始代价值进行乘积处理,得到第四中间代价值;将第一中间代价值与第四中间代价值进行求和,得到数据引擎执行计划树的代价值。
需要说明的是,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性时,待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性与前文所述的相同,对此,本申请实施例不做赘述。
在实际实施时,成本要素包括待操作数据的数据温度、数据引擎的执行效率以及数据引擎的存算亲和性时,第二代价系数与第三代价系数与第二初始代价值对应,也即乘积操作时需要依次与第二初始代价值相乘,而第一代价系数与第一初始代价值对应,也即乘积操作时需要与第一初始代价值相乘。
步骤103,针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树。
在实际实施时,针对各计划树,确定各数据引擎执行计划树的代价值之后,可以针对每个计划树,基于各数据引擎执行计划树的代价值,对各数据引擎进行排序,得到目标格式的排序结果,然后基于多个目标格式的排序结果,从针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树,具体包括,当计划树的数量为多个时,针对各数据引擎分别执行如下处理:基于各代价值,对多个计划树进行排序,得到第一排序结果;基于第一排序结果,从多个计划树中选取代价值最低的计划树,作为数据引擎的第一目标计划树。
需要说明的是,目标格式的排序结果可以是排序列表,示例性地,参见图5,图5是本申请实施例提供的基于各数据引擎执行计划树的代价值对各数据引擎进行排序的示意图,基于图5,这里存在4个计划树即计划树0-3,以及4个数据引擎即数据引擎Presto、Spark、Native、StarRocks,针对不同计划树,依据各代价值对数据引擎进行排序,得到如图5所指示的4个排序列表。
在实际实施时,针对各数据引擎,基于各代价值,从多个计划树中选取代价值最低的计划树,作为相应数据引擎的第一目标计划树,接上述示例,如图5所示,针对这4个数据引擎,从这4个计划树中,选取代价值最低的计划树,具体地,数据引擎Native对应的代价值最低的计划树为计划树1,数据引擎Spark对应的代价值最低的计划树为计划树2,数据引擎Presto和StarRocks对应的代价值最低的计划树均为计划树3,这样,即确定了每一个数据引擎的第一目标计划树。
步骤104,基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎。
在实际实施时,基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎的过程,可以是,当数据引擎的数量为多个时,基于各第一目标计划树对应的代价值,对多个数据引擎进行排序,得到第二排序结果;基于第二排序结果,从代价值最低的第一目标计划树对应的数据引擎起,依次对各数据引擎进行检测,直至检测结果表征相应数据引擎满足引擎选取条件;将满足引擎选取条件的数据引擎,确定为目标数据引擎。
需要说明的是,第二排序结果也可以是一个优先级表,表格中各数据引擎的优先级与相应数据引擎的第一目标计划树对应的代价值成负相关关系,也即数据引擎的第一目标计划树对应的代价值越小,相应数据引擎的优先级越高。基于此,从代价值最低的第一目标计划树对应的数据引擎起,依次对各数据引擎进行检测,也即是从优先级最高的第一目标计划树对应的数据引擎起,依次对各数据引擎进行检测。示例性地,参见图6,图6是本申请实施例提供的第二排序结果的示意图,基于图6,结合图5的示例,存在4个数据引擎即数据引擎Presto、Spark、Native、StarRocks,针对各数据引擎,数据引擎StarRocks的第一目标计划树对应的代价值最低,其次是数据引擎Presto的第一目标计划树对应的代价值,再其次是数据引擎Spark的第一目标计划树对应的代价值,最后是数据引擎Native的第一目标计划树对应的代价值,也就是说,各数据引擎的优先级从高到底依次为数据引擎StarRocks、Presto、Spark、Native。基于此,从数据引擎StarRocks开始进行检测,直至检测结果表征相应数据引擎满足引擎选取条件;将满足引擎选取条件的数据引擎,确定为目标数据引擎。
需要说明的是,引擎选取条件可以是预先设定的,例如可以是规定目标引擎类型,从而依次对各数据引擎进行检测时,将相应数据引擎的引擎类型与目标引擎类型进行匹配,直至匹配结果表征相应数据引擎的引擎类型和目标引擎类型相匹配,则确定相应数据引擎满足引擎选取条件。
示例性地,参见图7,图7是本申请实施例提供的目标引擎类型的示意图,基于图7,这里目标引擎类型包括MPP引擎、BSP引擎以及Native引擎,其中,StarRocks、Presto属于MPP引擎,Hive、Spark属于BSP引擎,从而当各数据引擎的优先级从高到低依次为StarRocks、Spark、Native、Presto、且目标引擎类型为BSP引擎时,则检测至StarRocks引擎时,确定数据引擎不满足引擎选取条件则继续对后续数据引擎进行检测,也即开始对Spark引擎进行检测,则检测结果会表征数据引擎满足引擎选取条件,然后将Spark引擎,确定为目标数据引擎。
在一些实施例中,获取用于执行所述计划树的至少一个数据引擎之后,还可以,对可执行语句进行语法分析,得到可执行语句包括的语法类型;基于可执行语句包括的语法类型,确定各数据引擎的可执行性;基于各数据引擎的可执行性,对至少一个数据引擎进行筛选,得到至少一个标准数据引擎;从而,针对各计划树,确定各数据引擎执行计划树的代价值的过程,可以是,针对各计划树,确定各标准数据引擎执行计划树的代价值;而针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树的过程,可以是,针对各标准数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树;而基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎的过程,可以是,基于各第一目标计划树对应的代价值,从至少一个标准数据引擎中,选取用于执行可执行语句的目标标准数据引擎。
需要说明的是,每个数据引擎的可执行范围不同,也即所支持的语法类型不同,例如针对LATERAL VIEW 行转列语法,Spark引擎支持也即可执行该语法类型,而Presto不支持引擎该语义也即不可执行该语法类型,因此,在获取用于执行所述计划树的至少一个数据引擎之后,对可执行语句进行语法分析,得到可执行语句包括的语法类型,从而基于可执行语句包括的语法类型,确定各数据引擎的可执行性,再基于各数据引擎的可执行性,对至少一个数据引擎进行筛选,得到至少一个标准数据引擎。如此,通过首先对数据引擎进行筛选,不仅可以提高后续数据引擎确定过程的效率,还可以避免所确定的数据引擎无法执行可执行语句的情况。
需要说明的是,这里标准数据引擎所涉及的过程,与前文所述的数据引擎所涉及的过程的相类似,对此,本申请实施例不做赘述。
在一些实施例中,针对各数据引擎,基于各代价值,从至少一个计划树中选取第一目标计划树之后,还可以,对各第一目标计划树进行转换,得到等价目标计划树,数据引擎执行等价目标计划树时的执行效率大于数据引擎执行第一目标计划树时的执行效率;针对各等价目标计划树,确定相应数据引擎执行等价目标计划树的等价代价值;当存在等价代价值小于相应第一目标计划树对应的代价值时,针对各等价目标计划树,确定各数据引擎执行等价目标计划树的等价代价值;针对各数据引擎,基于数据引擎执行等价目标计划树的等价代价值,从至少一个等价目标计划树中选取第二目标计划树;从而,基于各第一目标计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎的过程,可以是,基于各第二目标计划树对应的等价代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎。
需要说明的是,对各第一目标计划树进行转换,得到等价目标计划树的过程,与前文所述的对各计划树进行转换,得到等价计划树的过程相类似,对此,本申请实施例不做赘述;同时,当存在等价代价值小于相应第一目标计划树对应的代价值时,则重新确定每一个数据引擎执行每一个等价目标计划树时的等价代价值,从而针对各数据引擎,基于数据引擎执行等价目标计划树的等价代价值,从至少一个等价目标计划树中选取等价代价值最低的等价目标计划树,作为第二目标计划树,最后基于各第二目标计划树对应的等价代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎。
其中,针对各数据引擎,基于数据引擎执行等价目标计划树的等价代价值,从至少一个等价目标计划树中选取等价代价值最低的等价目标计划树,作为第二目标计划树的过程,与前文所述的针对各数据引擎,基于数据引擎执行计划树的代价值,从至少一个计划树中选取代价值最低的计划树,作为第一目标计划树的过程相类似;同时,基于各第二目标计划树对应的等价代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎的过程,与前文所述的基于各计划树对应的代价值,从至少一个数据引擎中,选取用于执行可执行语句的目标数据引擎的过程相类似;对此,本申请实施例不做赘述。
示例性地,当数据引擎有3个即数据引擎A、B、C,每一个数据引擎对应一个第一目标计划树即第一目标计划树1、2、3,对各第一目标计划树1、2、3进行转换,得到等价目标计划树1、2、3,然后针对各等价目标计划树,确定相应数据引擎执行等价目标计划树的等价代价值,如果等价目标计划树1对应的等价代价值小于第一目标计划树1对应的代价值,则重新确定每一个数据引擎执行每一个等价目标计划树时的等价代价值,也即针对等价目标计划树1,分别确定数据引擎A、B、C执行等价目标计划树1的等价代价值,针对等价目标计划树2,分别确定数据引擎A、B、C执行等价目标计划树2的等价代价值,针对等价目标计划树3,分别确定数据引擎A、B、C执行等价目标计划树3的等价代价值,然后针对各数据引擎,基于数据引擎执行等价目标计划树1、2、3的等价代价值,从三个等价目标计划树中选取等价代价值最低的等价目标计划树,作为第二目标计划树;最后,基于各第二目标计划树对应的等价代价值,从三个数据引擎中,选取用于执行可执行语句的目标数据引擎。
应用本申请上述实施例,在构建完可执行语句对应的至少一个计划树之后,针对各计划树对应的代价值,选取各数据引擎对应的第一目标计划树,这样,针对各数据引擎,存在对应的执行计划(即计划树),相较于多个数据引擎对应相同的执行计划的方案,针对各数据引擎,选取出更贴合每一个数据引擎的执行计划,从而提高了数据引擎在执行相应执行计划时的执行效率;同时,基于各第一目标计划树对应的代价值,从多个数据引擎中,选取最终的目标数据引擎,相较于相关技术中从多个数据引擎中随机选取数据引擎的方案,在引擎选择阶段根据计划树的代价值来进行数据引擎的选择,增强引擎选择过程的完备性,不仅降低了数据引擎的执行代价,也进一步提高了所确定的数据引擎的执行效率。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
相关技术中,大量SQL执行过程中,会选择不同的数据源和计算引擎,因此数据存储位置和计算引擎对SQL执行计划的生成具有至关重要的影响。然而,目前的技术方案存在以下问题:第一,无法感知数据存储介质:不同数据存储所生成的SQL执行计划保持不变。在湖仓一体的场景中,无法根据对应的湖表数据和仓表数据分布来优化执行计划,导致湖表到仓表的数据加热的优化效果无法在计划树优化阶段生效。第二,无法感知计算引擎:不同计算引擎的执行行为和能力各不相同的,相关技术中的计划树优化阶段,只能生成统一的SQL执行计划,无法感知计算引擎类型,生成不同的执行计划。第三,计划树优化与引擎选择阶段相互独立:在实际应用中,引擎选择与计划树的结果紧密相关联,计算引擎执行效率与计划树代价挂钩,但相关技术的方案将两者相互独立。
基于此,本申请实施例提供一种扩展数据存储、计算引擎的代价评估的方法和框架,第一提供一种全新的CBO代价模型,扩展已有代价模型,在CBO查询优化阶段,为用户提供更贴近执行环境和更灵活的查询计划(目标计划树),最终加速用户SQL查询性能;第二,提供一种优化方法,在最优计划树搜索过程中,支持计划树与计算引擎绑定,可搜索出多引擎的最优计划树集合;第三,提供一种全新的引擎选择方法,在引擎选择阶段,充分考虑计划树优化阶段COST代价因素(成本因素),优先匹配最低代价(代价值)的引擎(目标数据引擎)作为执行。
接下来,从产品侧对本申请的技术方案进行说明。
示例性地,tq_os_dev_db.v_iceberg_01 是湖仓分区表(可部分数据存储在湖表Iceberg中 部分数据存储在仓表StarRocks中),共两个分区C1、C2,在Iceberg湖表中保存中全量分区数据C1、C2,由于C2分区数据频繁访问,为提升访问效率,C2分区数据被加热到StarRocks表。基于本申请,如果执行相同的SQL,不同的引擎可以生成不同的执行计划,参见图8,图8是本申请实施例提供的不同引擎生成不同执行计划的示意图,例如针对SQL 查询语句(可执行语句)SELECT id FROM tq_os_dev_db.v_iceberg_01 where category in(‘C1’,‘C2’),该SQL 查询语句用于从一个名为‘tq_os_dev_db.v_iceberg_01’的表中会选择‘category’为‘C1’ 或‘C2’ 的记录,并返回这些记录的‘id’ 值。针对该SQL 查询语句,Spark引擎会基于图8中801所示的过程,生成计划1,即:
SELECT‘id’
FROM (SELECT‘id’,‘category’
FROM‘tq_os_dev_db’‘v_iceberg_01’) AS‘t’
WHERE‘category’IN (‘C1’,‘C2’);
其中,Spark引擎执行时,数据选择全部从Iceberg表直接读取,然后计划1用于指示从名为‘v_iceberg_01’的表中筛选出‘category’为‘C1’ 或‘C2’的记录,并返回这些行的‘id’值。
而针对该SQL 查询语句,StarRocks引擎会基于图8中802所示的过程,生成计划2,即:
SELECT * FROM (SELECT‘id’
FROM (SELECT‘id’,‘category’FROM‘default_catalog’‘tq_os_dev_db’‘v_iceberg_01’) AS‘t’WHERE‘category’IN(‘C2’)
UNION ALL
SELECT‘id’FROM (SELECT‘id’,‘category’FROM‘tq_os_dev_db’ ‘v_iceberg_01’AS‘v_iceberg_010’)AS‘t2’WHERE‘category’IN(‘C1’)) AS‘t5’;
其中,StarRocks引擎执行时,分区数据C1从Iceberg表读取,分区数据C2从StarRocks表读取,然后计划2用于指示从‘v_iceberg_01’表中选择所有‘category’为‘C2’的记录,并从‘v_iceberg_010’表中选择所有‘category’为‘C1’的记录,然后使用UNIONALL将这两个结果合并起来,并将合并结果作为临时表‘t5’返回。
接下来,从技术侧对本申请的技术方案进行说明。参见图9,图9是本申请实施例提供的扩展数据存储以及计算引擎的代价评估的方法的技术架构图,基于图9,本申请包括三方面:
第一,代价模型扩展:在已有代价模型上,增加四个额外的成本要素:数据存储介质、引擎计算效率、存算亲和性、引擎可执行性;
第二,最优计划树扩展:在计划树优化阶段,最优计划树的维护从一个扩展为多个,不同引擎可对应各自引擎特性的最优计划树;
第三,引擎选择扩展:在引擎选择阶段,引入计划树优化阶段的引擎作为优先推荐引擎。
对于代价模型的扩展过程。该扩展的核心在于算法创新,在已有的代价模型上,增加额外的成本要素,使得优化器可感知不同的数据存储介质和计算引擎。新增四个成本要素:数据存储介质、引擎计算效率、存算亲和性、引擎可执行性。
针对数据存储介质,在计划树中以TableScan节点也即表扫描节点标识数据存储类型,本申请根据不同的存储介质标记对应的数据访问成本,即对数据进行温度分层。访问效率高的数据标记为热数据,访问效率低的数据标记为冷数据,数据温度越高则计算成本越低,因此,在CBO优化搜索过程中,针对TableScan节点会优先考虑热数据加载。
需要说明的是,数据温度的分层信息存储在元数据中,目前支持三种类型:冷数据、缓存数据以及热数据,其中,冷数据是如普通表(如Iceberg表等)上存储的数据,存储在分布式存储上,而热数据是如本地磁盘存储的数据源库表(如MySQL表等)上存储的数据;其中,数据温度越高,则代价模型中的成本系数越小,计算代价越低,比如,如果冷数据对应的成本系数(代价系数)为1、缓存数据对应的成本系数为0.8、热数据对应的成本系数为0.6,则代价值可以是:
……公式(1);
其中 表示从TableScan节点获取数据的代价, 表示相应存储介质的记录数,为相应数据对应的成本系数。
针对引擎计算效率(执行效率),通常相同的SQL在不同的计算引擎的执行效率不同,如在小数据量下,MPP引擎中的Presto的效率明显优先Spark,而数仓引擎StarRocks的效率又明显优于大数据计算引擎(如Presto、Spark等)。根据引擎执行效率,为不同引擎设置不同的成本系数(代价系数)。示例性地,对于Native引擎,针对单源场景,可基于JDBC内置引擎执行,成本系数(代价系数)为1;对于SPARK/LIVY引擎,由于提交Spark执行,拉起Spark集群固定耗时约1分钟,所以成本系数为1.3;对于GLUTEN/LIVY引擎,由于提交到Gluten执行(向量化Spark集群),有固定的计算集群,无需每次执行拉起集群,所以成本系数为0.8;对于Presto引擎,由于提交到MPP引擎执行,有固定的计算集群,所以成本系数为0.7;对于StarRocks引擎,由于有极速MPP数据库,有固定的计算集群,所以成本系数为0.5。
需要说明的是,引擎计算效率越快,则代价模型中的计算系数越小,计算代价越低,具体公式如下:
……公式(2);
其中,为考虑引擎的执行效率之前引擎执行计划时的代价,为考虑引擎的执行效率之后引擎执行计划时的代价,为计算引擎的成本系数。
针对存算亲和性,相同的计算引擎,针对不同的存储介质其执行效率可能不同,例如StarRocks支持内表(本地存储)和外表(存储在外部),其内表的执行效率远高于外表。在计划树的TableScan节点,根据数据存储介质和计算引擎标识存算亲和性,亲和性越高,则计算效率越高。示例性地,对于StarRocks引擎以及StarRocks内表,由于StarRocks是存算一体模式,因此亲和性最高,成本系数为0.5;而对于Native引擎以及JDBC数据源,由于JDBC内置访问,因此成本系数为0.8;而对于其他场景,成本系数为1,无亲和性成本优化。
针对引擎可执行性,不同类型的计算引擎的可执行范围不同,如:对于LATERALVIEW 行转列语法,Spark支持,而Presto不支持该语义;而Function make_timestamp 是Spark内置函数,而Presto不支持。基于此,针对SQL语句,若引擎可执行,则成本系数默认为1;若引擎不可执行,则成本系数无穷大,则将该引擎从备选引擎中剔除。
对于最优计划树(第一目标计划树)扩展,相关技术中的优化器仅支持选择单个最优计划树,因此,通过最优计划树扩展,最优计划树的维护从一个扩展为多个,不同引擎可对应各自引擎特性的最优计划树,具体地,参见图10,图10是本申请实施例通过的最优计划树扩展的过程示意图,基于图10,输入为单个计划树,然后经过CBO优化以及RBO优化,输出为与引擎相关优化后的计划树集合。
需要说明的是,对于CBO优化扩展,示例性地,参见图11,图11是本申请实施例提供的CBO优化扩展过程的示意图,基于图11,具体包括三个步骤,第一,初始化改造,首先注册计划树,其中,除了注册当前计划树,需要额外注册其他引擎的RelNode也即计划树,保证对应多引擎的计划树都能够进入到CBO优化流程中;然后计算计划树的执行成本,具体地,结合代价模型扩展的过程,引入额外成本要素即数据存储介质、引擎计算效率、存算亲和性、引擎可执行性,从而计算出新的COST成本代价(代价值),其中,新的COST成本代价可以是一个列表,维护各个引擎的代价值;接着再进行最优计划树维护,具体地,RelSubset等价集中除了维护最优引擎的最优(代价最低)计划树外,还可以额外增加哈希表,用于维护各个引擎的最优计划树信息。
第二,搜索最优计划树改造,在搜索最优计划树时,基于优化规则转换得到的等价计划树,会重新注册并计算COST代价,若新计划树的COST代价更小,则触发父节点重新计算代价。这样,本申请基于新增的哈希表维护各个引擎的最小代价,若新计划树其中任意一个引擎的COST代价更低,即可触发父节点重新计算代价,最终在哈希表中维护各个引擎的最小代价计划树,从而保证了各个引擎对应的计划树为代价最小的计划树。示例性地,如图5和图6所示,针对各个计划树,不同的引擎最优代价的计划树可以不同。
第三,构建最优计划树改造,RelSubset等价集也即计划树等价集合维护各个引擎最优计划树的哈希表,基于哈希表遍历树节点,构建出各引擎最优计划树,并维护在该请求内存空间中,便于后续优化使用。
需要说明的是,对于RBO优化扩展,示例性地,参见图12,图12是本申请实施例提供的RBO优化扩展过程的示意图,基于图12,RBO优化扩展过程具体也包括三个步骤,第一,初始化,注册当前RelNode计划树,构建DAG有向无环图;第二,搜索最优计划树,按照优化规则的顺序应用规则,基于生成的新等价计划树迭代执行;第三,构建最优计划树,获取最终的计划树并返回;
其中,在RBO优化阶段,没有COST代价计算,因此无需在RBO优化阶段实现最优计划树的扩展,主要在RBO优化阶段外实现最优计划树的扩展,保证多引擎计划树在RBO初始化时都已注册,使得内存空间中多引擎的计划树都通过RBO转换处理。
对于引擎选择扩展,相关技术中引擎选择与优化阶段是相互独立的,引擎选择只能依赖规则进行顺序处理,例如,参见图13,图13是本申请实施例提供的引擎选择扩展的过程示意图,基于图13,引擎选择主要分为四类:第一类,指定引擎选择,用户强制指定执行引擎,直接使用对应引擎即可,无需进行选择引擎优化;第二类,MPP引擎选择,基于MPP引擎中的StarRocks、Presto、TQDB进行引擎选择优化,若满足条件,则优先使用对应引擎执行;第三类BSP引擎选择,基于BSP引擎中的Hive、Spark引擎选择优化,若满足条件,则使用对应引擎执行;第四类,Native引擎:如果是单数据源场景,则支持JDBC内置的Native引擎执行。
对此,本申请实施例在引擎选择阶段进行如下改造,在没有指定引擎场景,增加优化阶段生成的基于代价的引擎推荐,具体地,多引擎计划树的哈希表中除了维护引擎信息,也维护各引擎对应的COST代价值,根据COST代价值 从低到高依次匹配对应的引擎,若引擎满足选择规则,则直接使用该引擎,若不满足则继续匹配,也即这个操作的目标是:为了让代价最低的执行引擎被选中,优先以该引擎执行。示例性地,哈希表维护的引擎COST代价,从低到高依次为 StarRocks、Spark、Native、Presto引擎,若StarRocks匹配引擎选择规则,则优先选择StarRocks,若不匹配,则依次校验后续推荐引擎Spark是否匹配。
如此,不仅解决了SQL计划树优化阶段无法感知数据存储和计算引擎测问题,可根据数据存储与计算引擎特性,为用户提供更贴近执行环境和更灵活的查询计划,最终加速用户SQL查询性能;而且完善了引擎选择处理,在引擎选择阶段增加计划树成本作为重要考量因素之一,增强引擎选择完备性。
应用本申请上述实施例,在构建完可执行语句对应的至少一个计划树之后,针对各计划树对应的代价值,选取各数据引擎对应的第一目标计划树,这样,针对各数据引擎,存在对应的执行计划(即计划树),相较于多个数据引擎对应相同的执行计划的方案,针对各数据引擎,选取出更贴合每一个数据引擎的执行计划,从而提高了数据引擎在执行相应执行计划时的执行效率;同时,基于各第一目标计划树对应的代价值,从多个数据引擎中,选取最终的目标数据引擎,相较于相关技术中从多个数据引擎中随机选取数据引擎的方案,在引擎选择阶段根据计划树的代价值来进行数据引擎的选择,增强引擎选择过程的完备性,不仅降低了数据引擎的执行代价,也进一步提高了所确定的数据引擎的执行效率。
下面继续说明本申请实施例提供的数据引擎的确定装置455的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器450的数据引擎的确定装置455中的软件模块可以包括:
构建模块4551,用于构建可执行语句对应的至少一个计划树,并获取用于执行所述计划树的至少一个数据引擎;
确定模块4552,用于针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值;
第一选取模块4553,用于针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树;
第二选取模块4554,用于基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
在一些实施例中,所述确定模块4552,还用于针对各所述数据引擎,执行以下处理:分别获取数据获取操作对应的第一初始代价值、以及数据执行操作对应的第二初始代价值;其中,所述数据获取操作为,所述数据引擎获取所述计划树对应的待操作数据时的获取操作,所述数据执行操作为,所述数据引擎针对所述待操作数据执行所述可执行语句所指示的操作时的执行操作;获取至少一个成本要素,所述成本要素用于影响所述数据引擎执行所述计划树的代价值;基于所述至少一个成本要素,获取所述数据引擎对应的至少一个代价系数;基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值。
在一些实施例中,所述至少一个成本要素包括所述待操作数据的数据温度;所述确定模块4552,还用于获取用于存储所述待操作数据的存储介质的被访问频率、以及多个频率区间;其中,每一个所述频率区间对应一个数据温度;基于所述被访问频率,从所述多个频率区间中,选取所述被访问频率所归属的目标频率区间;将所述目标频率区间对应的数据温度,确定为所述待操作数据的数据温度。
在一些实施例中,所述至少一个成本要素包括所述数据引擎的执行效率;所述确定模块4552,还用于对所述待操作数据进行分析,得到所述待操作数据的数据量;获取所述数据引擎的引擎标识,并基于所述引擎标识,确定所述数据引擎所归属的引擎类型;基于所述数据引擎所归属的引擎类型以及所述数据量,对所述数据引擎的执行效率进行分析,得到所述数据引擎执行所述待操作数据时的执行效率。
在一些实施例中,所述至少一个成本要素包括所述数据引擎的存算亲和性;所述确定模块4552,还用于获取用于存储所述待操作数据的存储介质的介质标识、以及所述数据引擎的引擎标识;基于所述介质标识,确定所述存储介质的位置,并基于所述引擎标识,确定所述数据引擎的位置;基于所述存储介质的位置以及所述数据引擎的位置,对所述数据引擎与所述存储介质间的紧密程度进行分析,得到所述数据引擎的存算亲和性。
在一些实施例中,所述确定模块4552,还用于当所述至少一个成本要素包括所述待操作数据的数据温度、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第一中间代价值与所述第二初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的执行效率、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数时,将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值,并将所述第二中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的存算亲和性对应的第三代价系数时,将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值,并将所述第三中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在一些实施例中,所述确定模块4552,还用于当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的执行效率、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的执行效率对应的第二代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值;将所述第一中间代价值与所述第二中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值;将所述第一中间代价值与所述第三中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;当所述至少一个成本要素包括所述数据引擎的执行效率以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值,并将所述第四中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在一些实施例中,所述至少一个成本要素包括所述待操作数据的数据温度、所述数据引擎的执行效率以及所述数据引擎的存算亲和性,所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数、所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数;所述确定模块4552,还用于将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值;将所述第一中间代价值与所述第四中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
在一些实施例中,所述装置还包括筛选模块,所述筛选模块,用于对所述可执行语句进行语法分析,得到所述可执行语句包括的语法类型;基于所述可执行语句包括的语法类型,确定各所述数据引擎的可执行性;基于各所述数据引擎的可执行性,对所述至少一个数据引擎进行筛选,得到至少一个标准数据引擎;所述确定模块4552,还用于针对各所述计划树,确定各所述标准数据引擎执行所述计划树的代价值。
在一些实施例中,所述第一选取模块4553,还用于当所述计划树的数量为多个时,针对各所述数据引擎分别执行如下处理:基于各所述代价值,对多个计划树进行排序,得到第一排序结果;基于所述第一排序结果,从所述多个计划树中选取所述代价值最低的计划树,作为所述数据引擎的第一目标计划树。
在一些实施例中,所述第二选取模块4554,还用于当所述数据引擎的数量为多个时,基于各所述第一目标计划树对应的代价值,对多个数据引擎进行排序,得到第二排序结果;基于所述第二排序结果,从所述代价值最低的第一目标计划树对应的数据引擎起,依次对各所述数据引擎进行检测,直至检测结果表征相应所述数据引擎满足引擎选取条件;将满足所述引擎选取条件的所述数据引擎,确定为所述目标数据引擎。
在一些实施例中,所述构建模块4551,还用于构建对应所述可执行语句的至少一个语法树;对所述至少一个语法树进行转换,得到所述可执行语句对应的至少一个计划树。
在一些实施例中,所述构建模块4551,还用于构建对应所述可执行语句的初始计划树;对所述初始计划树进行转换,得到至少一个等价计划树,所述数据引擎执行所述等价计划树时的执行效率大于所述数据引擎执行所述初始计划树时的执行效率;将所述至少一个等价计划树,确定为所述至少一个计划树。
在一些实施例中,所述装置还包括转换模块,所述转换模块,用于对各所述第一目标计划树进行转换,得到等价目标计划树,所述数据引擎执行所述等价目标计划树时的执行效率大于所述数据引擎执行所述第一目标计划树时的执行效率;针对各所述等价目标计划树,确定相应所述数据引擎执行所述等价目标计划树的等价代价值;当存在所述等价代价值小于相应所述第一目标计划树对应的代价值时,针对各所述等价目标计划树,确定各所述数据引擎执行所述等价目标计划树的等价代价值;针对各所述数据引擎,基于所述数据引擎执行所述等价目标计划树的等价代价值,从至少一个等价目标计划树中选取第二目标计划树;所述第二选取模块4554,还用于基于各所述第二目标计划树对应的等价代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的数据引擎的确定方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据引擎的确定方法,例如,如图3示出的数据引擎的确定方法。
在一些实施例中,计算机可读存储介质可以是只读存储器(ROM,Read-OnlyMemory)、随即存储器(RAM,Random Access Memory)、可擦写可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
综上所述,通过本申请实施例具有以下有益效果:
(1)针对各数据引擎,存在对应的执行计划(即计划树),相较于多个数据引擎对应相同的执行计划的方案,针对各数据引擎,选取出更贴合每一个数据引擎的执行计划,从而提高了数据引擎在执行相应执行计划时的执行效率。
(2)相较于相关技术中从多个数据引擎中随机选取数据引擎的方案,在引擎选择阶段根据计划树的代价值来进行数据引擎的选择,增强引擎选择过程的完备性,不仅降低了数据引擎的执行代价,也进一步提高了所确定的数据引擎的执行效率。
(3)通过首先对数据引擎进行筛选,不仅可以提高后续数据引擎确定过程的效率,还可以避免所确定的数据引擎无法执行可执行语句的情况。
需要说明的是,在本申请实施例中,涉及到获取可执行语句等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (18)
1.一种数据引擎的确定方法,其特征在于,所述方法包括:
构建可执行语句对应的至少一个计划树,并获取用于执行所述计划树的至少一个数据引擎;
针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值;
针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树;
基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
2.如权利要求1所述的方法,其特征在于,所述确定各所述数据引擎执行所述计划树的代价值,包括:
针对各所述数据引擎,执行以下处理:
分别获取数据获取操作对应的第一初始代价值、以及数据执行操作对应的第二初始代价值;
其中,所述数据获取操作为,所述数据引擎获取所述计划树对应的待操作数据时的获取操作,所述数据执行操作为,所述数据引擎针对所述待操作数据执行所述可执行语句所指示的操作时的执行操作;
获取至少一个成本要素,所述成本要素用于影响所述数据引擎执行所述计划树的代价值;
基于所述至少一个成本要素,获取所述数据引擎对应的至少一个代价系数;
基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值。
3.如权利要求2所述的方法,其特征在于,所述至少一个成本要素包括所述待操作数据的数据温度;所述获取至少一个成本要素,包括:
获取用于存储所述待操作数据的存储介质的被访问频率、以及多个频率区间;
其中,每一个所述频率区间对应一个数据温度;
基于所述被访问频率,从所述多个频率区间中,选取所述被访问频率所归属的目标频率区间;
将所述目标频率区间对应的数据温度,确定为所述待操作数据的数据温度。
4.如权利要求2所述的方法,其特征在于,所述至少一个成本要素包括所述数据引擎的执行效率;所述获取至少一个成本要素,包括:
对所述待操作数据进行分析,得到所述待操作数据的数据量;
获取所述数据引擎的引擎标识,并基于所述引擎标识,确定所述数据引擎所归属的引擎类型;
基于所述数据引擎所归属的引擎类型以及所述数据量,对所述数据引擎的执行效率进行分析,得到所述数据引擎执行所述待操作数据时的执行效率。
5.如权利要求2所述的方法,其特征在于,所述至少一个成本要素包括所述数据引擎的存算亲和性;所述获取至少一个成本要素,包括:
获取用于存储所述待操作数据的存储介质的介质标识、以及所述数据引擎的引擎标识;
基于所述介质标识,确定所述存储介质的位置,并基于所述引擎标识,确定所述数据引擎的位置;
基于所述存储介质的位置以及所述数据引擎的位置,对所述数据引擎与所述存储介质间的紧密程度进行分析,得到所述数据引擎的存算亲和性。
6.如权利要求2所述的方法,其特征在于,所述基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值,包括:
当所述至少一个成本要素包括所述待操作数据的数据温度、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第一中间代价值与所述第二初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;
当所述至少一个成本要素包括所述数据引擎的执行效率、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数时,将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值,并将所述第二中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值;
当所述至少一个成本要素包括所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的存算亲和性对应的第三代价系数时,将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值,并将所述第三中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
7.如权利要求2所述的方法,其特征在于,所述基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值,包括:
当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的执行效率、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的执行效率对应的第二代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数与所述第二初始代价值进行乘积处理,得到第二中间代价值;将所述第一中间代价值与所述第二中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;
当所述至少一个成本要素包括所述待操作数据的数据温度以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第三代价系数与所述第二初始代价值进行乘积处理,得到第三中间代价值;将所述第一中间代价值与所述第三中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值;
当所述至少一个成本要素包括所述数据引擎的执行效率以及所述数据引擎的存算亲和性、所述至少一个代价系数包括所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数时,将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值,并将所述第四中间代价值与所述第一初始代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
8.如权利要求2所述的方法,其特征在于,所述至少一个成本要素包括所述待操作数据的数据温度、所述数据引擎的执行效率以及所述数据引擎的存算亲和性,所述至少一个代价系数包括所述待操作数据的数据温度对应的第一代价系数、所述数据引擎的执行效率对应的第二代价系数以及所述数据引擎的存算亲和性对应的第三代价系数;
所述基于所述至少一个代价系数、所述第一初始代价值以及所述第二初始代价值,确定所述数据引擎执行所述计划树的代价值,包括:
将所述第一代价系数与所述第一初始代价值进行乘积处理,得到第一中间代价值,并将所述第二代价系数、所述第三代价系数以及所述第二初始代价值进行乘积处理,得到第四中间代价值;
将所述第一中间代价值与所述第四中间代价值进行求和,得到所述数据引擎执行所述计划树的代价值。
9.如权利要求1所述的方法,其特征在于,所述获取用于执行所述计划树的至少一个数据引擎之后,所述方法还包括:
对所述可执行语句进行语法分析,得到所述可执行语句包括的语法类型;
基于所述可执行语句包括的语法类型,确定各所述数据引擎的可执行性;
基于各所述数据引擎的可执行性,对所述至少一个数据引擎进行筛选,得到至少一个标准数据引擎;
所述针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值,包括:
针对各所述计划树,确定各所述标准数据引擎执行所述计划树的代价值。
10.如权利要求1所述的方法,其特征在于,所述针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树,包括:
当所述计划树的数量为多个时,针对各所述数据引擎分别执行如下处理:
基于各所述代价值,对多个计划树进行排序,得到第一排序结果;
基于所述第一排序结果,从所述多个计划树中选取所述代价值最低的计划树,作为所述数据引擎的第一目标计划树。
11.如权利要求1所述的方法,其特征在于,所述基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎,包括:
当所述数据引擎的数量为多个时,基于各所述第一目标计划树对应的代价值,对多个数据引擎进行排序,得到第二排序结果;
基于所述第二排序结果,从所述代价值最低的第一目标计划树对应的数据引擎起,依次对各所述数据引擎进行检测,直至检测结果表征相应所述数据引擎满足引擎选取条件;
将满足所述引擎选取条件的所述数据引擎,确定为所述目标数据引擎。
12.如权利要求1所述的方法,其特征在于,所述构建可执行语句对应的至少一个计划树,包括:
构建对应所述可执行语句的至少一个语法树;
对所述至少一个语法树进行转换,得到所述可执行语句对应的至少一个计划树。
13.如权利要求1所述的方法,其特征在于,所述构建可执行语句对应的至少一个计划树,包括:
构建对应所述可执行语句的初始计划树;
对所述初始计划树进行转换,得到至少一个等价计划树,所述数据引擎执行所述等价计划树时的执行效率大于所述数据引擎执行所述初始计划树时的执行效率;
将所述至少一个等价计划树,确定为所述至少一个计划树。
14.如权利要求1所述的方法,其特征在于,所述针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树之后,所述方法还包括:
对各所述第一目标计划树进行转换,得到等价目标计划树,所述数据引擎执行所述等价目标计划树时的执行效率大于所述数据引擎执行所述第一目标计划树时的执行效率;
针对各所述等价目标计划树,确定相应所述数据引擎执行所述等价目标计划树的等价代价值;
当存在所述等价代价值小于相应所述第一目标计划树对应的代价值时,针对各所述等价目标计划树,确定各所述数据引擎执行所述等价目标计划树的等价代价值;
针对各所述数据引擎,基于所述数据引擎执行所述等价目标计划树的等价代价值,从至少一个等价目标计划树中选取第二目标计划树;
所述基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎,包括:
基于各所述第二目标计划树对应的等价代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
15.一种数据引擎的确定装置,其特征在于,所述装置包括:
构建模块,用于构建可执行语句对应的至少一个计划树,并获取用于执行所述计划树的至少一个数据引擎;
确定模块,用于针对各所述计划树,确定各所述数据引擎执行所述计划树的代价值;
第一选取模块,用于针对各所述数据引擎,基于各所述代价值,从所述至少一个计划树中选取第一目标计划树;
第二选取模块,用于基于各所述第一目标计划树对应的代价值,从所述至少一个数据引擎中,选取用于执行所述可执行语句的目标数据引擎。
16.一种电子设备,其特征在于,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现权利要求1至14任一项所述的数据引擎的确定方法。
17.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,用于引起处理器执行时,实现权利要求1至14任一项所述的数据引擎的确定方法。
18.一种计算机程序产品,包括计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时,实现权利要求1至14任一项所述的数据引擎的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410362694.7A CN117971888B (zh) | 2024-03-28 | 2024-03-28 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410362694.7A CN117971888B (zh) | 2024-03-28 | 2024-03-28 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117971888A true CN117971888A (zh) | 2024-05-03 |
CN117971888B CN117971888B (zh) | 2024-07-05 |
Family
ID=90858317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410362694.7A Active CN117971888B (zh) | 2024-03-28 | 2024-03-28 | 数据引擎的确定方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971888B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946600A (zh) * | 2021-10-21 | 2022-01-18 | 北京人大金仓信息技术股份有限公司 | 数据查询方法、装置、计算机设备和介质 |
CN115408384A (zh) * | 2022-08-04 | 2022-11-29 | 阿里云计算有限公司 | 数据库访问方法、设备及存储介质 |
US20230145846A1 (en) * | 2021-11-10 | 2023-05-11 | Jpmorgan Chase Bank, N.A. | Systems and methods for affinity-based distributed work pool scheduling |
CN116204579A (zh) * | 2021-11-30 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 计算引擎的选择方法、装置、设备、存储介质及程序产品 |
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
CN117056431A (zh) * | 2023-10-11 | 2023-11-14 | 中电数创(北京)科技有限公司 | 基于hbase亲和性计算的二阶段调度的分布式执行方法和系统 |
WO2024016946A1 (zh) * | 2022-07-18 | 2024-01-25 | 中兴通讯股份有限公司 | 代价估计方法、电子设备、存储介质和计算机程序产品 |
-
2024
- 2024-03-28 CN CN202410362694.7A patent/CN117971888B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946600A (zh) * | 2021-10-21 | 2022-01-18 | 北京人大金仓信息技术股份有限公司 | 数据查询方法、装置、计算机设备和介质 |
US20230145846A1 (en) * | 2021-11-10 | 2023-05-11 | Jpmorgan Chase Bank, N.A. | Systems and methods for affinity-based distributed work pool scheduling |
CN116204579A (zh) * | 2021-11-30 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 计算引擎的选择方法、装置、设备、存储介质及程序产品 |
WO2024016946A1 (zh) * | 2022-07-18 | 2024-01-25 | 中兴通讯股份有限公司 | 代价估计方法、电子设备、存储介质和计算机程序产品 |
CN115408384A (zh) * | 2022-08-04 | 2022-11-29 | 阿里云计算有限公司 | 数据库访问方法、设备及存储介质 |
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
CN117056431A (zh) * | 2023-10-11 | 2023-11-14 | 中电数创(北京)科技有限公司 | 基于hbase亲和性计算的二阶段调度的分布式执行方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117971888B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hagedorn et al. | The STARK framework for spatio-temporal data analytics on spark | |
Nehme et al. | Automated partitioning design in parallel database systems | |
Fan et al. | The Case Against Specialized Graph Analytics Engines. | |
US8326825B2 (en) | Automated partitioning in parallel database systems | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
WO2016018947A1 (en) | Systems and methods for a query optimization engine | |
US11423022B2 (en) | Hybrid declarative query compiler and optimizer framework | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
US10726006B2 (en) | Query optimization using propagated data distinctness | |
US20230126509A1 (en) | Database management system and method for graph view selection for a relational-graph database | |
Kruse et al. | RHEEMix in the data jungle: a cost-based optimizer for cross-platform systems | |
CN115033595A (zh) | 基于超级节点的查询语句处理方法、系统、装置和介质 | |
Peng et al. | Optimizing multi-query evaluation in federated RDF systems | |
Yan et al. | Generating application-specific data layouts for in-memory databases | |
EP3293645A1 (en) | Iterative evaluation of data through simd processor registers | |
Zou et al. | Lachesis: automatic partitioning for UDF-centric analytics | |
Floratos et al. | Sqloop: High performance iterative processing in data management | |
Hogan et al. | In-database graph analytics with recursive SPARQL | |
CN117971888B (zh) | 数据引擎的确定方法、装置、设备、存储介质及程序产品 | |
Xu et al. | Semantic connection set-based massive RDF data query processing in Spark environment | |
Reniers et al. | Schema design support for semi-structured data: Finding the sweet spot between NF and De-NF | |
Mihaylov et al. | Scalable learning to troubleshoot query performance problems | |
CN112948357A (zh) | 一种面向多模数据库OrientDB的调优机制及其构建方法 | |
Chernishev | Towards self-management in a distributed column-store system | |
CN112783758A (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 |