CN116401277A - 数据处理方法、装置、系统、设备及介质 - Google Patents
数据处理方法、装置、系统、设备及介质 Download PDFInfo
- Publication number
- CN116401277A CN116401277A CN202310318445.3A CN202310318445A CN116401277A CN 116401277 A CN116401277 A CN 116401277A CN 202310318445 A CN202310318445 A CN 202310318445A CN 116401277 A CN116401277 A CN 116401277A
- Authority
- CN
- China
- Prior art keywords
- target
- function
- data
- execution
- aggregation
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 230000002776 aggregation Effects 0.000 claims abstract description 173
- 238000004220 aggregation Methods 0.000 claims abstract description 173
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000005457 optimization Methods 0.000 claims abstract description 47
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 387
- 238000004364 calculation method Methods 0.000 claims description 35
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012502 risk assessment Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
-
- 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)
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供数据处理方法、装置、系统、设备及介质。该方法包括:响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;判断目标聚合函数中包含的参数类型与目标标量函数的关联关系是否符合执行优化规则;若符合执行优化规则,则对目标查询语句中的目标聚合函数和目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。按照此前得到的执行优化规则用目标标量函数替换目标聚合函数中的参数,并基于完成替换的目标聚合函数和目标标量函数同步执行对目标数据的取值任务,能够有效减少标量函数和目标聚合函数依次执行过程中标量函数循环计算的次数。能够提高分布式系统中数据处理效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据处理方法、装置、系统、设备及介质。
背景技术
随着计算机技术的快速发展,分布式系统得到了广泛的应用。比如,分布式系统用于满足大量数据存储及实时性的应用需求。
然而,随着分布式系统中数据量的增长,以及数据存取需求的增长,分布式系统资源难以满足用户的实际应用需求。尤其是当现有的分布式系统中系统资源有限并且系统扩展性较差时,无法通过资源扩展来提升系统的数据处理能力。因此,需要一种能够基于已有分布式系统资源实现对数据处理能力提升的解决方案。
发明内容
为解决或改善现有技术中存在的问题,本申请各实施例提供了数据处理方法、装置、系统、设备及介质。
第一方面,在本申请的一个实施例中,提供了一种数据处理方法。该方法包括:
响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
第二方面,本申请的一个实施例中,提供了一种数据处理装置,所述装置包括:
确定模块,用于响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断模块,用于判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
调整模块,用于若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
第三方面,本申请的一个实施例中,提供了一种数据处理系统,包括:
数据节点,用于存储包含目标数据的至少一个数据分组并执行计算任务;
服务器,用于执行第一方面所述的方法。
第四方面,在本申请的一个实施例中,提供了一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现第一方面所述的数据处理方法。
第五方面,在本申请的一个实施例中,提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的数据处理方法。
本申请实施例提供的技术方案,在分布式系统中包括多个数据节点;并且在分布式系统中还存储有多行目标数据。在确定待处理的目标查询语句和待处理的目标数据之后,会对目标查询语句进行处理,生成包含多个节点的抽象语法树。进一步确定在目标查询语句中包含的目标聚合函数和目标标量函数。当目标聚合函数中的参数类型与标量函数的匹配关系符合执行优化规则的情况下,按照此前得到的执行优化规则用目标标量函数替换目标聚合函数中的参数,并基于完成替换的目标聚合函数和目标标量函数同步执行对目标数据的取值任务,能够有效减少标量函数和目标聚合函数依次执行过程中标量函数循环计算的次数。能够提高分布式系统中数据处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据处理方法的流程示意图;
图2为本申请实施例提供的判断关联关系的流程示意图;
图3为本申请实施例提供的优化执行顺序的方法流程示意图;
图4为本申请实施例举例说明的基于调整后的执行顺序执行数据处理的流程示意图;
图5为本申请实施例举例说明的生成目标逻辑执行计划的示意图;
图6为本申请实施例举例说明的聚合函数随机取值过程的示意图;
图7为本申请实施例提供的一种数据处理装置的结构示意图;
图8为本申请实施例提供的一种数据处理系统的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下文描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
术语解释:
分布式系统:由多台分散的计算机,经互连网络的联接而形成的系统,系统的处理和控制功能分布在各个计算机上。
抽象语法树(Abstract Syntax Tree,AST):或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
结构化查询语言(Structured Query Language):简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
Antlr:是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。
arbitrary函数:返回x中任意一个非空的值。
在分布式系统的应用场景中,随着数据量的增长,以及数据存取需求的增长,分布式系统资源难以满足用户的实际应用需求。尤其是当现有的分布式系统中系统资源有限并且系统扩展性较差时,无法通过资源扩展来提升系统的数据处理能力。在数据处理过程中,比如日志存储服务过程中,经常会利用利用各种聚合函数实现数据处理,其中随机取值arbitrary函数就是其中一种常用的聚合函数(也就是下文所说的目标聚合函数),该聚合函数可以从隶属于同一分组的数据分组中随机选取其中一个非空值。在结构查询语言中,聚合函数的参数可以是多种类型,比如可以嵌套引用标量函数,也可以嵌套引用子查询语句。当嵌套引用子查询语句是,聚合函数的参数类型为标识符,该标识符对应的值为标量函数的处理结果。
在聚合函数执行计算任务过程中,如果数据分组中包含的目标数据有1000行,则先执行嵌套引用的标量函数,也就意味着先由标量函数执行1000次的计算任务。然后,由该聚合函数执行随机取值任务。需要说明的是,该聚合函数执行计算任务的时候,随机获取一个非空数值,换言之,理论上该聚合函数只需要获取标量函数执行1000次计算结果中的一个非空数值就可以了,标量计算函数对其他目标数据的计算处理任务都是冗余行为。在分布式系统资源有限的情况下,冗余的计算任务对整体工作效率的负面影响更加突出。因此,需要一种能够有效提高数据库系统应用场景中数据处理效率的技术方案。
下面将结合具体实施例对本申请实现的技术方案进行解释说明。
如图1为本申请实施例提供的数据处理方法的流程示意图。该方法的执行主体可以是服务器端。从图1中可以看到具体包括如下步骤:
101:响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数。
102:判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则。
103:若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
需要说明的是,本申请技术方案,可以应用于单机数据库系统,也可以应用于分布式数据库系统。为了便于理解,下述实施例将以应用于分布式数据库系统为了进行举例说明。
这里所说的目标查询语句是结构化查询语言SQL。例如,“select project,arbitrary(json_extract(content,'$.country'))FROM new_table group by project”。其中,arbitrary为目标聚合函数,json_extract(content,'$.country')为目标标量函数。
这里所说的数据处理请求,可以是由客户端向服务器端发起的日志存储请求、日志查询请求等。该服务器端可以是单机数据库系统中的服务器,也可以说分布式系统中的服务器(比如,协调节点)。
需要说明的是,这里所说的被目标聚合函数嵌套的目标标量函数,可以有多种表现形式,可以是直接嵌套标量函数本身,也可以是通过嵌套引用子查询语句的方式,但是子查询语句的数值是利用标量函数计算得到的。
在对目标查询语句进行分析处理的时候,可以采用Antlr4工具对目标查询语句执行词法语法分析,得到对应的抽象语法树(Abstract Syntax Tree,AST)。
在确定目标聚合函数以及目标标量函数之后,将具体分析目标聚合函数中限定的参数类型,比如,标识符类型、数值类型等。若参数类型为数值类型,则表示当前目标聚合函数不支持嵌套标量函数。若参数类型为标识符类型,则表示当前目标聚合函数支持嵌套标量函数、子查询语句等标识符类参数。
对目标聚合函数中包含的参数类型与目标标量函数的关联关系是否符合执行优化规则的判断过程将在下述实施例中具体举例说明,这里就不再重复赘述。
在经过上述判断过程得到判断结果为符合执行优化规则的情况下,会对目标查询语句中的目标聚合函数和目标标量函数的执行顺序进行调整。具体来说,此前目标聚合函数和嵌套应用的目标标量函数执行顺序为:先利用目标标量函数针对数据分组中所有行的目标数据进行计算处理,得到分别对应的多个处理结果,然后,在利用目标聚合函数从多个处理结果中随机选择一个作为所需随机取值。调整后,使得目标聚合函数和目标标量函数同步执行,也就是可以将目标标量函数针对一行目标数据执行处理作为目标聚合函数随机取值的结果。目标聚合函数执行随机取值的时候,不再需要等目标标量函数执行完对分组数据中所有行的处理结果,只需要目标标量函数提供一个结果就可以完成随机取值任务。能够有效减轻计算任务工作量,减少对数据库系统中硬件资源消耗,进而提高数据库系统(包括分布式系统和单机系统)的数据处理效率和能力。
在本申请的一个或者多个实施例中,如图2为本申请实施例提供的判断关联关系的流程示意图。从图2中可以看到,所述判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则,具体包括如下步骤:
201:判断所述目标聚合函数中参数的参数类型。
202:当所述参数类型为标识符时,判断所述标识符是否由所述目标标量函数对所述目标数据进行处理得到。
203:若判断结果为是,则判断所述目标标量函数是否被除所述目标聚合函数之外的其他函数引用。
204:若判断结果为否,则确定所述关联关系符合所述执行优化规则。
这里所说的符合执行优化规则是指目标聚合函数与目标标量函数存在直接或者间接的引用关系,目标聚合函数的参数类型为标识符类型,标识符是由目标标量函数对目标数据进行处理得到的,并且,目标标量函数仅被目标聚合函数引用,除此之外,没有被其他函数引用。
下面将针对上述判断过程具体展开说明。
在目标聚合函数设置的参数中,参数类型可以是多种类型,比如,数值类型、标识符类型等等。由于当标量函数作为被嵌套引用的参数的时候,属于标识符类型。因此,只有当目标聚合函数所设置的参数类型为标识符类型的时候,才有引用标量函数的可能,换言之,才能按照执行优化规则执行后续数据处理任务。当参数类型为非标识符类型时,不适用于按照执行优化规则执行后续数据处理任务。
在确定参数类型为标识符类型之后,进一步判断该标识符是否能够由目标标量函数对目标数据处理后得到,也就是,目标标量函数的输出结果能否作为目标聚合函数的参数被引用。这里所说的引用,可以是直接引用,也可以是间接引用。若标识符无法通过目标标量函数计算得到,则意味着目标聚合函数与目标标量函数之间不具有引用关系。
在确定目标标量函数与目标聚合函数之间具有引用关系之后,将进一步判断目标标量函数是否还被除了目标聚合函数之外的其他函数引用。当目标标量函数同时被其他函数引用的时候(也就是得到的抽象语法树中的节点或者逻辑执行计划中的逻辑节点对应目标标量函数,关联有其他引用函数),若对目标聚合函数和目标标量函数的执行顺序进行优化调整,可能会影响其他引用函数的执行结果的正确性。当然,若对引用该目标标量函数的其他函数进行风险分析后,发现优化目标聚合函数和目标标量函数的执行顺序后,不会对其他函数产生不良影响,则可以认为关联关系符合执行优化规则。比如,经过对这里所说的其他函数风险分析,其他函数是结果输出函数,也就是对目标标量函数的任何执行结果都无差别输出并存储,那么执行顺序优化调整不会对输出结果的正确性造成不良影响。
需要说明的是,这里所说的关联关系可以理解为目标聚合函数与目标标量函数的引用关系,以及目标聚合函数与其他函数之间的引用关系、目标标量函数与其他函数之间的引用关系。
具体分析关联关系的时候,可以基于抽象语法树进行分析,也可以基于逻辑执行计划进行分析。
此外,需要说明的是,上述判断过程的执行顺序,可以根据需要进行调整。虽然图2对应实施例利用标号限定了执行内容,但是不会对执行顺序进行限定。在实际应用中用户可以根据需要或实际情况对判断步骤的执行顺序进行调整,图2仅作为举例说明,并不构成对本申请技术方案的限制。
在本申请的一个或者多个实施例中,如图3为本申请实施例提供的优化执行顺序的方法流程示意图。从图3中可以看到,若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务,具体包括如下步骤:
301:当所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则时,判断所述目标查询语句中分组聚合语句类型。
302:若所述分组聚合语句类型为单分组聚合语句,则在所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
303:若所述分组聚合语句类型为多组聚合语句,则从多个分组中确定当前处理的任一单分组聚合语句;当所述任一单分组聚合语句的所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
如前文所述,经过上述判断后可知,目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则。进一步会对目标查询语句中分组聚合语句类型进行判断。一般来说,分组聚合语句类型有两种:单分组聚合和多分组聚合。针对不同类型分组聚合语句所生成的物理执行计划不同。下面将分两种情况分别展开说明。
如图4为本申请实施例举例说明的基于调整后的执行顺序执行数据处理的流程示意图。
首先判断目标查询语句中是否包含单分组聚合。
若是单分组聚合,则进一步执行如下步骤:第一步,判断数据分组中是否还有剩余的未处理数据,若没有未处理数据,则表示对当前数据分组中的所有数据都已经完成数据处理,则会进一步结束当前数据取值任务。
第二步,若有剩余的未处理数据,则判断当前目标聚合函数是否已经找到随机值,若已经找到了随机值,也就意味着目标聚合函数已经完成了对目标数据的取值任务,不再需要利用目标标量函数对目标数据进行数据处理。
第三步,若目标聚合函数还没有找到随机值,则会将目标标量函数上推,也就意味着将目标标量函数与目标聚合函数的执行顺序优化调整为同步执行。若采用同步执行的方式,则目标聚合函数不需要等目标标量函数执行完对数据分组中所有目标数据的数据处理任务就可以得到所需随机值。具体来说,由目标标量函数对分组数据中的任一目标数据进行数据处理得到处理结果,进而判断该处理结果是否为空,则返回继续执行第一步,直到数据分组中的所有目标数据都参与执行,并且不存在剩余未执行的目标数据。若执行结果为非空值,则可将该非空值作为目标聚合函数的随机值,也就意味着该目标聚合函数完成了取值任务,不再需要目标标量函数执行冗余的数据处理任务,能够有效提高目标聚合函数随机取值的效率。
第四步,若是多分组聚合,则会针对多个分组中各个分组逐一处理。具体来说,判断当前正在处理的目标数据分组中是否还有剩余的未处理数据,若没有未处理数据,则表示对当前目标数据分组中的所有数据都已经完成数据处理,则会进一步判断是否还有其他数据分组,若没有其他数据分组则结束当前数据取值任务。
第五步,若有剩余的未处理数据或者还有其他数据分组且其他数据分组中有未处理数据时,则判断当前目标聚合函数是否已经找到随机值,若已经找到了随机值,也就意味着目标聚合函数已经完成了对目标数据的取值任务,不再需要利用目标标量函数对目标数据进行数据处理。
第六步,若目标聚合函数还没有找到随机值,则会将目标标量函数上推,也就意味着将目标标量函数与目标聚合函数的执行顺序优化调整为同步执行。若采用同步执行的方式,则目标聚合函数不需要等目标标量函数执行完对数据分组中所有目标数据的数据处理任务就可以得到所需随机值。具体来说,由目标标量函数对当前数据分组中的任一目标数据进行数据处理得到处理结果,进而判断该处理结果是否为空,则返回继续执行第四步,直到数据分组中的所有目标数据都参与执行,并且不存在剩余未执行的目标数据。若执行结果为非空值,则可将该非空值作为该当前目标数据分组的随机值,也就意味着该目标聚合函数完成了对其中一个数据分组的取值任务,还需要基于步骤四、步骤五和步骤六继续执行对其他分组的取值。当完成对所有数据分组的取值任务后,可以结束目标聚合函数的取值任务。在执行针对各个分组取值任务时,不再需要目标标量函数执行冗余的数据处理任务,能够有效提高目标聚合函数随机取值的效率。
为了便于理解,下面将通过具体实施例举例说明。
假设,存在一个目标查询语句1:Select json_extract(content,'$.country')from(select project,arbitrary(content)FROM new_table),由于该语句当中没有groupby关键词,则可知该目标查询语句为单分组聚合,也就是所有数据都在一个默认的全局分组中,相当于从全部目标数据随机取一个数据作为该目标聚合函数的随机取值。
再假设,存在一个目标查询语句2:Select project,json_extract(content,'$.country')from(select project,arbitrary(content)FROM new_table group byproject),由于该语句当中有group by关键词,则可知该目标查询语句为多分组聚合,也就是所有数据分别在不同的数据分组中,相当于从不同分组中目标数据随机取一个数据作为该目标聚合函数在该分组的随机取值。
具体取值过程可参见图4对应实施例,这里就不再重复赘述。
在本申请的一个或者多个实施例中,接收到所述数据处理请求之后,还包括:
对所述目标查询语句分析处理,生成抽象语法树;
根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划。
在确定目标查询语句之后,可以利用Antlr4工具对目标查询语句执行词法语法分析,得到抽象语法树(Abstract Syntax Tree,AST)。在得到抽象语法树之后,进一步对抽象语法树进行语义分析,对抽象语法树进行有效性检查,检查对应的表、列、函数、表达式是否有对应的元数据,将抽象语法树转换为逻辑执行计划,也就是关系代数表达式。具体来说,在得到抽象语法树之后,还需要进一步根据在目标查询语句中嵌套函数类型(比如,嵌套目标标量函数、嵌套子查询语句),针对不同嵌套函数类型对抽象语法树转换处理,得到包含多个逻辑节点的逻辑执行计划。
需要说明的是,在本方案中逻辑节点用于确定目标聚合函数与目标标量函数之间的关联关系,以及目标标量函数与其他函数之间的关联关系,以便判断是否符合执行优化规则。
通过上述方式,对目标查询语句进行分析处理后得到包含有多个逻辑节点的逻辑执行计划,以便利用逻辑执行计划分析出目标查询语句中目标聚合函数与目标标量函数之间的关联关系,从而为后续对目标聚合函数与目标标量函数的执行顺序是否能够优化提供参考依据。
此外,得到的逻辑执行计划还能够进一步优化,具体优化方式包括如下步骤:
根据所述目标数据与数据节点之间的存储关系,将所述逻辑节点划分为局部计算阶段和全局计算阶段;
根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点;
根据所述局部计算节点与所述局部计算阶段的对应关系,以及全局计算节点与所述全局计算阶段的对应关系,生成所述目标逻辑执行计划。
在实际应用中,当数据库中数据量很大时,满足数据处理快速响应以及稳定性需求,往往会进行数据库分片,也就是,目标数据会分别存储在不同的节点当中。容易理解的是,目标数据若在不同数据节点之间传输,会占用一定的网络资源并且数据传输过程会存在延迟,影响目标处理效率,尤其是当目标数据量很大的情况下,目标数据传输对整体效率影响也更加突出。
因此,可以进一步分析并确定各个目标数据所在的数据节点,同一数据分组中的多个目标数据可能被存储在不同的数据节点中。在对数据节点进行划分的时候,不需要受到数据分组的约束,而是以能够提高数据处理效率为目标进行划分。比如,可以将不同数据分组中的多个目标数据划分到同一个局部计算节点中。
在确定目标数据与数据节点之间的存储关系之后,可以根据存储关系对逻辑执行计划进行优化,换言之,将逻辑执行计划中各个逻辑节点划分为局部计算阶段和全局计算阶段。
在至少一个局部计算节点中执行局部计算阶段的计算任务,在全局计算节点执行全局计算任务。由于分布式系统中有多个局部计算节点,因此,可以采用并行执行的方式在多个局部计算节点执行局部计算任务,能够有效提高对目标数据的处理效率。将局部计算阶段的输出结果作为全局计算阶段的输入,利用全局计算节点执行相应的全局计算任务。通过上述方式,能够有效提高分布式系统并行执行目标聚合函数随机取值任务的工作效率。
举例来说,如图5为本申请实施例举例说明的生成目标逻辑执行计划的示意图。从图5中可以看到,逻辑执行计划中包含有多个逻辑节点,在各个逻辑节点分别对应于目标聚合函数或目标标量函数,同时还分析得到各个目标聚合函数与目标标量函数之间的关联关系、各个目标标量函数与其他函数之间的关联关系。在系统关系树状图中可以看到分布式系统中各个数据节点之间的关联关系,以及各个数据节点所存储的目标数据有哪些。进而,可以建立局部计算阶段与局部计算节点之间的对应关系,以及建立全局计算阶段与全局计算节点之间的对应关系,进而,根据对应关系对逻辑执行计划进行优化,得到目标逻辑执行计划。能够有效提高分布式系统并行执行目标聚合函数随机取值任务的工作效率。
在本申请的一个或者多个实施例中,所述根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点,包括:
根据所述目标数据的分片规则,确定各所述目标数据分别对应的所述数据节点;
将用于对靠近所述数据节点的所述目标数据进行数据处理的所述逻辑节点提交到局部计算节点;以及,
将多个局部计算节点的计算结果发送给所述全局计算节点进行全局计算。
在实际应用中,当目标数据的数量很大时,可以将目标数据分片存储。也就是,将整体目标数据分为多个小的数据块,分别存储在不同的数据节点当中,由多个数据节点共同完成数据存储,并协助完成后续数据处理任务,通过分片方式,能够有效提高数据处理效率。
经过分片处理的目标数据分布在不同数据节点,可以有主控节点(或称协调节点)对各数据节点进行协调管理,实现负载均衡。通过协调节点中建立的数据索引关系可以知道各个目标数据与数据节点之间的存储关系。优选的,可以利用目标数据所在的数据节点作为局部计算节点执行对应的逻辑节点的计算任务。当然,还有可能有的数据节点中存储的目标数据的数量超过其数据处理能力,此时需要其他数据节点帮忙协助处理。因此,这里所说的靠近目标数据的数据节点,可以理解为目标数据所在的数据节点,也可以是基于亲和性规则确定的其他数据节点,换言之,选择数据传输代价小的数据节点作为与目标数据靠近的节点。通过上述方式,能够在满足多个局部计算节点并行执行局部计算任务的同时,进一步有效提高局部计算的数据处理效率。
在本申请的一个或者多个实施例中,所述根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划,包括:
当所述目标查询语句中所述目标聚合函数中嵌套函数类型为子查询函数,则将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
当所述目标聚合函数中嵌套参数为标量函数时,则将所述标量函数转换为子查询语句;
基于嵌套有所述子查询语句的所述目标聚合函数,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划。
举例来说,存在一个目标查询语句“select project,arbitrary(json_extract(content,
'$.country'))FROM new_table group by project”,该查询语句嵌套有目标标量函数json_extract(content,'$.country'),该函数无法直接被SQL分析引擎使用,需要对其进行转换,将其转换为嵌套子查询语句的方式,比如:“select project,arbitrary(country)from(select project,json_extract(content,'$.country')as country FROMnew_table)temp group by project”。
经过上述转换后,可以得到目标查询语句对应的抽象语法树以及包含多个逻辑节点的逻辑执行计划。通过上述转换方式,使得目标聚合函数嵌套不同类型函数被转换为嵌套子查询语句,实现嵌套函数统一化,方便后续生成结构相同的逻辑执行计划。
在本申请的一个或者多个实施例中,基于调整后的执行顺序执行数据处理任务,包括:
确定所述目标标量函数执行对多个所述目标数据处理任务的所述局部计算阶段分别对应的所述局部计算任务;
并行执行多个所述局部计算任务,得到多个局部计算结果;
确定所述目标聚合函数对多个所述局部计算结果进行随机取值任务的全局计算阶段对应的全局计算任务;
执行所述全局计算任务,得到所述目标查询语句对应的随机取值数据。
在实际应用中,作为一优选方案,可以将数据分组中的目标数据存储在至少一个数据节点中,将该至少一个数据节点作为执行局部计算阶段任务的局部计算节点。在该局部计算节点上执行逻辑节点对应的目标标量函数,假设该目标标量函数执行对该局部计算节点中目标数据的计算任务的时候,得到了非空值,则可以将该非空值提供给全局计算节点对应的目标聚合函数,作为该目标聚合函数的随机取值的任务结果。
通过上述方式,执行目标聚合函数的随机取值任务的时候,通过将调整执行顺序后的目标标量函数和目标聚合函数,与分布式系统中数据节点建立对应关系,能够实现目标标量函数与目标聚合函数同步执行,以及多个局部计算节点并行执行,能够有效提高聚合函数从大量目标数据中执行随机取值任务的工作效率。
为了便于理解,下面将通过具体实施例对本申请技术方案实现过程进行举例说明。如图6为本申请实施例举例说明的聚合函数随机取值过程的示意图。
本方案执行随机取值任务可以分为四部分:逻辑计划节点构建、逻辑阶段划分、标量函数上推(将标量函数与聚合函数执行顺序进行调整)、物理执行计划生成。本实施例中,以目标聚合函数为arbitrary函数为例进行说明。
第一部分:逻辑计划节点构建,用于构造对应的逻辑计划节点。SQL语句无法直接被计算机执行,因此,需要对其进行分析转换,得到可被计算机识别的抽象语法树AST。
具体来说,采用Antlr4工具对SQL语句执行词法语法分析,得到抽象语法树AST,然后根据聚合函数嵌套函数类型转换为不同的逻辑计划节点。这个Antlr4步骤得的的AST是最基本的最原始的节点,而最终的逻辑节点是经过AST执行优化(转换)之后的节点。
聚合函数嵌套可以分为两类,一类是聚合函数嵌套标量函数。比如:“selectproject,arbitrary(json_extract(content,'$.country'))FROM new_table group byproject”。
另一类是聚合函数嵌套子查询。比如:“select project,arbitrary(country)from(select project,json_extract(content,'$.country')as country FROM new_table)temp group by project”。
第二部分:逻辑计划拆分,用于逻辑执行计划拆分为局部计算阶段和全局计算阶段。需要说明的是,分布式系统具有多数据节点,可以执行逻辑计划拆分,若是单机数据库系统则无法拆分为局部计算阶段和全局计算阶段。
为了充分应用分布式系统的硬件资源,按照大量目标数据的分片规则,在靠近目标数据分片的数据节点(比如,直接访问本机数据节点中的目标数据,可以避免不必要的网络开销)上执行局部计算阶段,再将局部计算阶段的结果作为全局计算阶段的输入。避免所有目标数据均在同一个数据节点上处理,在保证正确性的前提下,尽量提升对目标数据进行局部计算的并行效率。
第三部分:标量函数上推,将嵌套子查询中隶属于arbitrary函数参数的列上推。
分析逻辑执行计划前后节点的关联关系,确认arbitrary函数参数的类型是否为标识符,如果此标识符对应的数据由目标数据经过目标标量函数执行计算得到,并且这个标量函数不被其他函数引用则可以用这个目标标量函数代替arbitrary函数的参数。
第四部分,物理执行计划生成,生成随机函数和内嵌标量函数同步执行的物理执行计划。
如果当前目标查询语句没有groupby,则表示目标查询语句为单分组聚合。则遍历目标数据的数据分组,如果随机值存在,则结束。如果随机值不存在,则执行内嵌标量函数。如果标量函数结果为非空,则将此结果作为聚合函数的随机值。如果标量函数结果为空,则继续执行。
如果当前目标查询语句没有groupby,则表示目标查询语句为多分组聚合。则遍历数据集,如果当前数据分组的随机值存在,则继续执行。如果当前数据分组的随机值不存在,则执行内嵌标量函数。如果标量函数结果非空,则将此结果作为此分组的随机值。如果标量函数结果为空,则继续执行。
基于同样的思路,本身实施例还提供一种数据处理装置。如图7为本申请实施例提供的一种数据处理装置的结构示意图。从图7中可以看到,应用于服务器端,所述装置包括:
确定模块71,用于响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数。
判断模块72,用于判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则。
调整模块73,用于若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
可选地,判断模块72,用于判断所述目标聚合函数中参数的参数类型;
当所述参数类型为标识符时,判断所述标识符是否由所述目标标量函数对目标数据进行处理得到;
若判断结果为是,则判断所述目标标量函数是否被除所述目标聚合函数之外的其他函数引用;
若判断结果为否,则确定所述关联关系符合所述执行优化规则。
调整模块73,用于当所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则时,判断所述目标查询语句中分组聚合语句类型;
若所述分组聚合语句类型为单分组聚合语句,则在所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
调整模块73,用于若所述分组聚合语句类型为多组聚合语句,则从多个分组中确定当前处理的任一单分组聚合语句;
当所述任一单分组聚合语句的所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
可选地,还包括生成模块74,用于对所述目标查询语句分析处理,生成抽象语法树;
根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划。
可选地,生成模块74,用于根据所述目标数据与数据节点之间的存储关系,将所述逻辑节点划分为局部计算阶段和全局计算阶段;
根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点;
根据所述局部计算节点与所述局部计算阶段的对应关系,以及全局计算节点与所述全局计算阶段的对应关系,生成所述目标逻辑执行计划。
可选地,生成模块74,用于根据所述目标数据的分片规则,确定各所述目标数据分别对应的所述数据节点;
将用于对靠近所述数据节点的所述目标数据进行数据处理的所述逻辑节点提交到局部计算节点;以及,
将多个局部计算节点的计算结果发送给所述全局计算节点进行全局计算。
可选地,生成模块74,用于当所述目标查询语句中所述目标聚合函数中嵌套函数类型为子查询函数,则将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
当所述目标聚合函数中嵌套参数为标量函数时,则将所述标量函数转换为子查询语句;
基于嵌套有所述子查询语句的所述目标聚合函数,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划。
可选地,还包括执行模块75,用于确定所述目标标量函数执行对多个所述目标数据处理任务的所述局部计算阶段分别对应的所述局部计算任务;
并行执行多个所述局部计算任务,得到多个局部计算结果;
确定所述目标聚合函数对多个所述局部计算结果进行随机取值任务的全局计算阶段对应的全局计算任务;
执行所述全局计算任务,得到所述目标查询语句对应的随机取值数据。
基于同样的思路,本身实施例还提供一种数据处理系统。如图8为本申请实施例提供的一种数据处理系统的结构示意图。从图8中可以看到,所述系统包括:多个数据节点81和服务器82。
其中,数据节点81用于存储包含目标数据的至少一个数据分组并执行计算任务。
服务器82,用于响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
服务器82,用于判断所述目标聚合函数中参数的参数类型;
当所述参数类型为标识符时,判断所述标识符是否由所述目标标量函数对目标数据进行处理得到;
若判断结果为是,则判断所述目标标量函数是否被除所述目标聚合函数之外的其他函数引用;
若判断结果为否,则确定所述关联关系符合所述执行优化规则。
服务器82,用于当所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则时,判断所述目标查询语句中分组聚合语句类型;
若所述分组聚合语句类型为单分组聚合语句,则在所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
服务器82,用于若所述分组聚合语句类型为多组聚合语句,则从多个分组中确定当前处理的任一单分组聚合语句;
当所述任一单分组聚合语句的所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
服务器82,用于对所述目标查询语句分析处理,生成抽象语法树;
根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划。
服务器82,用于根据所述目标数据与数据节点之间的存储关系,将所述逻辑节点划分为局部计算阶段和全局计算阶段;
根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点;
根据所述局部计算节点与所述局部计算阶段的对应关系,以及全局计算节点与所述全局计算阶段的对应关系,生成所述目标逻辑执行计划。
服务器82,用于根据所述目标数据的分片规则,确定各所述目标数据分别对应的所述数据节点;
将用于对靠近所述数据节点的所述目标数据进行数据处理的所述逻辑节点提交到局部计算节点;以及,
将多个局部计算节点的计算结果发送给所述全局计算节点进行全局计算。
服务器82,用于当所述目标查询语句中所述目标聚合函数中嵌套函数类型为子查询函数,则将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
当所述目标聚合函数中嵌套参数为标量函数时,则将所述标量函数转换为子查询语句;
基于嵌套有所述子查询语句的所述目标聚合函数,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划。
服务器82,用于确定所述目标标量函数执行对多个所述目标数据处理任务的所述局部计算阶段分别对应的所述局部计算任务;
并行执行多个所述局部计算任务,得到多个局部计算结果;
确定所述目标聚合函数对多个所述局部计算结果进行随机取值任务的全局计算阶段对应的全局计算任务;
执行所述全局计算任务,得到所述目标查询语句对应的随机取值数据。
本申请一个实施例还提供一种电子设备。该电子设备为计算单元中主节点电子设备。如图9为本申请实施例提供的一种电子设备的结构示意图。该电子设备包括存储器901、处理器902及通信组件903;其中,
所述存储器901,用于存储程序;
所述处理器902,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
处理器902,用于判断所述目标聚合函数中参数的参数类型;
当所述参数类型为标识符时,判断所述标识符是否由所述目标标量函数对目标数据进行处理得到;
若判断结果为是,则判断所述目标标量函数是否被除所述目标聚合函数之外的其他函数引用;
若判断结果为否,则确定所述关联关系符合所述执行优化规则。
处理器902,用于当所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则时,判断所述目标查询语句中分组聚合语句类型;
若所述分组聚合语句类型为单分组聚合语句,则在所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
处理器902,用于若所述分组聚合语句类型为多组聚合语句,则从多个分组中确定当前处理的任一单分组聚合语句;
当所述任一单分组聚合语句的所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
处理器902,用于对所述目标查询语句分析处理,生成抽象语法树;
根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划。
处理器902,用于根据所述目标数据与数据节点之间的存储关系,将所述逻辑节点划分为局部计算阶段和全局计算阶段;
根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点;
根据所述局部计算节点与所述局部计算阶段的对应关系,以及全局计算节点与所述全局计算阶段的对应关系,生成所述目标逻辑执行计划。
处理器902,用于根据所述目标数据的分片规则,确定各所述目标数据分别对应的所述数据节点;
将用于对靠近所述数据节点的所述目标数据进行数据处理的所述逻辑节点提交到局部计算节点;以及,
将多个局部计算节点的计算结果发送给所述全局计算节点进行全局计算。
处理器902,用于当所述目标查询语句中所述目标聚合函数中嵌套函数类型为子查询函数,则将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
当所述目标聚合函数中嵌套参数为标量函数时,则将所述标量函数转换为子查询语句;
基于嵌套有所述子查询语句的所述目标聚合函数,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划。
处理器902,用于确定所述目标标量函数执行对多个所述目标数据处理任务的所述局部计算阶段分别对应的所述局部计算任务;
并行执行多个所述局部计算任务,得到多个局部计算结果;
确定所述目标聚合函数对多个所述局部计算结果进行随机取值任务的全局计算阶段对应的全局计算任务;
执行所述全局计算任务,得到所述目标查询语句对应的随机取值数据。
上述存储器901可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器
(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
进一步地,本实施例中的所述处理器902可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
上述处理器902在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图9所示,电子设备还包括:电源组件904等其它组件。
本申请实施例还提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行图1对应实施例所述的方法。
基于上述实施例,在分布式系统中包括多个数据节点;并且在分布式系统中还存储有多行目标数据。在确定待处理的目标查询语句和待处理的目标数据之后,会对目标查询语句进行处理,生成包含多个节点的抽象语法树。进一步确定在目标查询语句中包含的目标聚合函数和目标标量函数。当目标聚合函数中的参数类型与标量函数的匹配关系符合执行优化规则的情况下,按照此前得到的执行优化规则用目标标量函数替换目标聚合函数中的参数,并基于完成替换的目标聚合函数和目标标量函数同步执行对目标数据的取值任务,能够有效减少标量函数和目标聚合函数依次执行过程中标量函数循环计算的次数。能够提高分布式系统中数据处理效率。
此外,当用户需要对应用相关功能的修改时(比如,用户发现应用存在故障),可以将修改需求发送给对应的控制台,进而通过对适配参数进行修改就能够满足用户的修改需求,而不需要调整应用或云端操作系统的底层代码,能够有效提高应用维护效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种数据处理方法,应用于服务器端,所述方法包括:
响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
2.根据权利要求1所述的方法,所述判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则,包括:
判断所述目标聚合函数中参数的参数类型;
当所述参数类型为标识符时,判断所述标识符是否由所述目标标量函数对目标数据进行处理得到;
若判断结果为是,则判断所述目标标量函数是否被除所述目标聚合函数之外的其他函数引用;
若判断结果为否,则确定所述关联关系符合所述执行优化规则。
3.根据权利要求1所述的方法,若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务,包括:
当所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系符合所述执行优化规则时,判断所述目标查询语句中分组聚合语句类型;
若所述分组聚合语句类型为单分组聚合语句,则在所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
4.根据权利要求3所述的方法,还包括:
若所述分组聚合语句类型为多组聚合语句,则从多个分组中确定当前处理的任一单分组聚合语句;
当所述任一单分组聚合语句的所述目标聚合函数未确定随机取值的情况下,将所述标量函数的执行结果作为所述目标聚合函数的取值任务的任务结果。
5.根据权利要求1或4所述的方法,接收到所述数据处理请求之后,还包括:
对所述目标查询语句分析处理,生成抽象语法树;
根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划。
6.根据权利要求5所述的方法,所述根据所述目标查询语句对应的待处理的目标数据与数据节点的存储关系,对所述逻辑执行计划进行优化处理,得到优化后的目标逻辑执行计划,包括:
根据所述目标数据与数据节点之间的存储关系,将所述逻辑节点划分为局部计算阶段和全局计算阶段;
根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点;
根据所述局部计算节点与所述局部计算阶段的对应关系,以及全局计算节点与所述全局计算阶段的对应关系,生成所述目标逻辑执行计划。
7.根据权利要求6所述的方法,所述根据所述目标数据与数据节点之间的存储关系,将多个所述数据节点划分为局部计算节点和全局计算节点,包括:
根据所述目标数据的分片规则,确定各所述目标数据分别对应的所述数据节点;
将用于对靠近所述数据节点的所述目标数据进行数据处理的所述逻辑节点提交到局部计算节点;以及,
将多个局部计算节点的计算结果发送给所述全局计算节点进行全局计算。
8.根据权利要求5所述的方法,所述根据所述目标查询语句中嵌套函数类型,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划,包括:
当所述目标查询语句中所述目标聚合函数中嵌套函数类型为子查询函数,则将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划;
当所述目标聚合函数中嵌套参数为标量函数时,则将所述标量函数转换为子查询语句;
基于嵌套有所述子查询语句的所述目标聚合函数,将所述抽象语法树转换为包含多个逻辑节点的逻辑执行计划。
9.根据权利要求6所述的方法,基于调整后的执行顺序执行数据处理任务,包括:
确定所述目标标量函数执行对多个所述目标数据处理任务的所述局部计算阶段分别对应的所述局部计算任务;
并行执行多个所述局部计算任务,得到多个局部计算结果;
确定所述目标聚合函数对多个所述局部计算结果进行随机取值任务的全局计算阶段对应的全局计算任务;
执行所述全局计算任务,得到所述目标查询语句对应的随机取值数据。
10.一种数据处理装置,所述装置包括:
确定模块,用于响应于数据处理请求,确定目标查询语句中包含的目标聚合函数和目标标量函数;
判断模块,用于判断所述目标聚合函数中包含的参数类型与所述目标标量函数的关联关系是否符合执行优化规则;
调整模块,用于若符合所述执行优化规则,则对所述目标查询语句中的所述目标聚合函数和所述目标标量函数的执行顺序进行调整,以便基于调整后的执行顺序执行数据处理任务。
11.一种数据处理系统,所述系统包括:
数据节点,用于存储包含目标数据的至少一个数据分组并执行计算任务;
服务器,用于执行权利要求1至9中任一项所述的方法。
12.一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现上述权利要求1至9中任一项所述的方法。
13.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310318445.3A CN116401277A (zh) | 2023-03-23 | 2023-03-23 | 数据处理方法、装置、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310318445.3A CN116401277A (zh) | 2023-03-23 | 2023-03-23 | 数据处理方法、装置、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116401277A true CN116401277A (zh) | 2023-07-07 |
Family
ID=87013670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310318445.3A Pending CN116401277A (zh) | 2023-03-23 | 2023-03-23 | 数据处理方法、装置、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401277A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370400A (zh) * | 2023-12-05 | 2024-01-09 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
-
2023
- 2023-03-23 CN CN202310318445.3A patent/CN116401277A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370400A (zh) * | 2023-12-05 | 2024-01-09 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
CN117370400B (zh) * | 2023-12-05 | 2024-02-13 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905595A (zh) | 一种数据查询方法、装置及计算机可读存储介质 | |
US20170083573A1 (en) | Multi-query optimization | |
CN111177148B (zh) | 一种水电数据库自动建表分表的方法 | |
CN102799622A (zh) | 基于MapReduce扩展框架的分布式SQL查询方法 | |
CN105677812A (zh) | 一种数据查询方法及数据查询装置 | |
US20160306847A1 (en) | Apparatus and Method for Using Parameterized Intermediate Representation for Just-In-Time Compilation in Database Query Execution Engine | |
CN111352950B (zh) | 数据库表等值连接的优化方法、装置、服务器及存储介质 | |
CN104424018A (zh) | 分布式计算事务处理方法及装置 | |
CN104504154A (zh) | 一种数据聚合查询的方法及装置 | |
CN111897891B (zh) | 数据处理方法及装置 | |
US11132363B2 (en) | Distributed computing framework and distributed computing method | |
CN111581234A (zh) | Rac多节点数据库查询方法、装置及系统 | |
US20140379691A1 (en) | Database query processing with reduce function configuration | |
CN116401277A (zh) | 数据处理方法、装置、系统、设备及介质 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
Fan et al. | Graph algorithms: parallelization and scalability | |
CN116756150B (zh) | 一种Mpp数据库大表关联加速方法 | |
CN108228654A (zh) | 一种大数据分布式存储方法和系统 | |
Lai et al. | {GLogS}: Interactive graph pattern matching query at large scale | |
US11599540B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
CN111221888A (zh) | 大数据分析系统及方法 | |
CN116501761A (zh) | 查询优化方法、设备及存储介质 | |
CN111046066A (zh) | 远程数据库对象的优化方法、装置、设备及存储介质 | |
CN110413642B (zh) | 一种应用无感知的分片数据库解析及优化方法 | |
CN113568930A (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 |