关系型数据库中的查询方法及装置转让专利

申请号 : CN201911076890.3

文献号 : CN111026776B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 鄢贵海江树浩周康康

申请人 : 中科驭数(北京)科技有限公司

摘要 :

本发明提供了一种关系型数据库中的查询方法及装置,其中,该方法包括:生成路径节点的阶段,调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在原始关系型数据库中生成包含设定路径节点的路径树;设定路径结构体符合原数据库的路径结构体类型标准;生成计划节点的阶段,调用设定计划节点函数根据设定路径节点生成包含设定计划结构体的设定计划节点,以在原始关系型数据库中生成包含设定计划节点的计划树;设定计划结构体符合原数据库的计划结构体类型标准;在执行计划节点的阶段,调用设定节点执行函数执行设定计划节点,以使根据设定计划节点的执行结果返回查询结果。通过上述方案能够便于关系型数据库与具体应用相适用。

权利要求 :

1.一种关系型数据库中的查询方法,其特征在于,包括:

在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点的路径树;其中,所述设定路径结构体符合所述原始关系型数据库的路径结构体类型标准;

在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点,以在所述原始关系型数据库中生成包含所述设定计划节点的计划树;其中,所述设定计划结构体符合所述原始关系型数据库的计划结构体类型标准;

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果。

2.如权利要求1所述的关系型数据库中的查询方法,其特征在于,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果,包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以利用外部硬件加速器执行所述设定计划节点中的至少部分操作,并根据所述外部硬件加速器的执行结果得到所述设定计划节点的执行结果,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果。

3.如权利要求1或2所述的关系型数据库中的查询方法,其特征在于,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点之前,还包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点进行节点初始化。

4.如权利要求3所述的关系型数据库中的查询方法,其特征在于,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点之后,还包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理生成的节点。

5.如权利要求4所述的关系型数据库中的查询方法,其特征在于,

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点进行节点初始化,包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点生成包含设定计划状态结构体的设定计划状态节点,初始化所述设定计划状态结构体的至少部分字段的值,以及分配内存空间;其中,所述设定计划状态结构体符合所述原始关系型数据库的计划状态结构体类型标准;

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数根据所述设定计划状态节点并利用所述内存空间执行操作,得到所述设定计划节点的执行结果;

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理生成的节点,包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理所述设定计划状态节点和所述内存空间。

6.如权利要求1所述的关系型数据库中的查询方法,其特征在于,

在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点的路径树,包括:在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,并根据所述查询语句调用原始路径节点函数生成原始路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点和所述原始路径节点的路径树;其中,所述设定路径节点和所述原始路径节点具有相同功能;

在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点之前,还包括:调用设定代价函数比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源;在执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源小于执行所述原始路径节点对应的原始计划节点所消耗的计算资源的情况下,执行在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点的步骤。

7.如权利要求6所述的关系型数据库中的查询方法,其特征在于,在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点之前,还包括:在执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源不小于执行所述原始路径节点对应的原始计划节点所消耗的计算资源的情况下,在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用与所述设定计划节点函数具有相同功能的原始计划节点函数根据所述原始路径节点生成原始计划节点;

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用与所述设定节点执行函数具有相同功能的原始节点执行函数执行所述原始计划节点,以使所述原始关系型数据库根据所述原始计划节点的执行结果返回查询结果。

8.如权利要求6或7所述的关系型数据库中的查询方法,其特征在于,

在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果,包括:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以利用外部硬件加速器执行所述设定计划节点中的至少部分操作,并根据所述外部硬件加速器的执行结果得到所述设定计划节点的执行结果,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果;

调用设定代价函数比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源,包括:调用设定代价函数计算执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源;其中,执行所述原始路径节点对应的原始计划节点所消耗的计算资源包括与所述外部硬件加速器进行数据交换所消耗的计算资源和所述外部硬件加速器执行所述设定计划节点中的至少部分操作所消耗的计算资源;

比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源。

9.如权利要求1所述的关系型数据库中的查询方法,其特征在于,

所述设定路径节点函数为排序路径函数,所述设定计划节点函数为排序计划节点函数,所述设定节点执行函数为排序节点执行函数;或者,所述设定路径节点函数为窗口聚合路径函数,所述设定计划节点函数为窗口聚合计划节点函数,所述设定节点执行函数为窗口聚合节点执行函数;或者,所述设定路径节点函数为连接路径函数,所述设定计划节点函数为连接计划节点函数,所述设定节点执行函数为连接节点执行函数。

10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9任一项所述方法的步骤。

11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求2或8所述方法的步骤;所述电子设备还包括:外部硬件加速器。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至9任一项所述方法的步骤。

说明书 :

关系型数据库中的查询方法及装置

技术领域

[0001] 本发明涉及数据库技术领域,尤其涉及一种关系型数据库中的查询方法及装置。

背景技术

[0002] 随着数字时代的到来,各种应用场景中对海量数据的调取愈发频繁,对数据库的处理需求更加多样化,而且人们对数据的即时处理需求也大大增加,因此对数据库的处理过程进行加速迫在眉睫。
[0003] 在关系型数据库中,主要采用关系模型来组织数据,以行和列的方式来储存数据。多张数据表之间存在着复杂的关系。对于每一个查询语句,例如select*from A,B,C where A.a=B.b=C.c,都会先被查询编译器转化成一棵逻辑计划树,这个树上的节点就是类似于连接、排序、扫描等操作,然后再转化成路径树,再接着将每个节点变成对应的计划节点,形成物理计划执行树。随着数据表数量的增加,这些物理节点操作在通用处理器上执行显得非常费时。

发明内容

[0004] 本发明提供了一种关系型数据库中的查询方法及装置,以便于关系型数据库与具体应用相适用。
[0005] 为了达到上述目的,本发明采用以下方案实现:
[0006] 根据本发明实施例的一个方面,提供了一种关系型数据库中的查询方法,包括:
[0007] 在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点的路径树;其中,所述设定路径结构体符合所述原始关系型数据库的路径结构体类型标准;
[0008] 在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点,以在所述原始关系型数据库中生成包含所述设定计划节点的计划树;其中,所述设定计划结构体符合所述原始关系型数据库的计划结构体类型标准;
[0009] 在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果。
[0010] 根据本发明实施例的另一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。
[0011] 在一些实施例中,所述电子设备还包括:外部硬件加速器。
[0012] 根据本发明实施例的又一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。
[0013] 本发明实施例的关系型数据库中的查询方法、电子设备及计算机可读存储介质,能够实现在关系型数据库扩展新的节点,不易导致由于修改数据库源代码而产生漏洞降低安全性。新扩展的节点的具体内容可以根据需要进行设置,所以扩展的节点能够便于关系型数据库与具体应用相适用,从而提高数据的专用性,进而提高数据库的执行效率。因为建立的是一整套节点(包括路径、计划、执行),所以数据库在查询优化阶段就能够选择更优路径,达到数据库查询优化的全局最优,例如,选择硬件加速,以加速数据库中的计算密集型操作。

附图说明

[0014] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0015] 图1是本发明一实施例的关系型数据库中的查询方法的流程示意图;
[0016] 图2是本发明一实施例的查询方法的实现过程流程示意图;
[0017] 图3是本发明一实施例中的逻辑树示意图;
[0018] 图4是本发明一实施例中的路径树示意图;
[0019] 图5是本发明一实施例中的计划树示意图。

具体实施方式

[0020] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0021] 通过升级硬件、建立索引、扩大内存、利用GPU(Graphics Processing Unit,图形处理器)高速并行等手段能够加速关系型数据库的处理过程。通过大量修改关系型数据库中每个节点的内部源代码,使数据库与具体应用相适用,也能加速关系型数据库的处理过程。但是,这些措施都比较耗时费力,而且修改数据库源代码极容易产生不为察觉的Bug,造成安全性大打折扣。
[0022] 上述加速数据库性能的方法无法从根本上解决通用处理器效率低下的问题,并且升级硬件耗费大量财力,建立索引则会占据大量硬盘空间,使得插入操作费时。若修改数据库自身节点的实现源码耗时耗力,还会使得原本数据库软件产生未知Bug,加大了使用风险。
[0023] 发明人在对数据库Postgresql源码分析后,发现如果仅仅是针对执行模块函数加速,会使得丢失掉数据库本身自带的执行方法,导致陷入必须二选一的境地,缺乏灵活性。
[0024] 发明人在进行数据库加速方案的研究时,发现数据库中的操作都是以一棵树状结构展现的,例如,在查询语句被编译成查询树,查询树进而被转化路径树,路径树接着被转化成计划树。例如,在Postgresql数据库中逻辑上的连接节点对应到路径树上有三类:NestPath,MergePath,HashPath,分别对应物理计划节点NestLoop,MergeJoin,HashJoin三类节点,每种节点之间是独立的路径。因此,如果采用基于节点的方式,就完全可以构建新的节点,并单独对此节点采取加速,而不影响数据库本身自带的节点。
[0025] 而且发明人发现,树中的每一个节点并不是执行时候才确定的,而且逻辑计划树并不是直接转化为物理计划树,而是先将查询树改造路径树,路径树再变成物理计划树,在逻辑计划树变成路径树的时候实际上就已经相当于确定了物理计划树。所以可以在将查询树改造成路径树的时候添加新的节点。
[0026] 现有数据库是在通用处理器上运行的,这会导致这些节点操作的运行需要花费大量时间,而可以将需要处理的元组的核心数据提取出来,调用外部硬件加速器的核函数,从而根据核函数的返回值快速确定新的节点所需要向上层节点返回的元组,达到大幅加速的目的。
[0027] 基于上述创造性发现,本发明实施例提供了一种关系型数据库中的查询方法,基于新增节点使现有关系型数据库与具体应用相适用,能够提高关系型数据库的专用性,从而可以加速关系型数据库的处理过程。
[0028] 图1是本发明一实施例的关系型数据库中的查询方法的流程示意图。如图1所示,在一些实施例中,该方法可包括以下步骤S110~步骤S130。
[0029] 下面将对步骤S110~步骤S130的具体实施方式进行详细说明。
[0030] 步骤S110:在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点的路径树;其中,所述设定路径结构体符合所述原始关系型数据库的路径结构体类型标准。
[0031] 原始关系型数据库是指,在执行查询语句时,能够调用由本发明各实施例的方法进行查询处理,从而返回查询结果的各种关系型数据库。该原始关系型数据库可以是现有的关系型数据库,例如,PostgreSQL数据库、MySQL数据库等。
[0032] 该查询语句可以是手动或自动输入至关系型数据库的SQL语句,可以涉及排序、连接、聚合等操作。将查询语句输入至关系型数据库后,该查询语句可以被编译成查询树,查询树进而被转化路径树,路径树接着被转化成计划树。在原始关系型数据库根据查询语句生成路径节点的阶段,数据库生成各种路径节点,例如,NestPath、MergePath、HashPath,各路径节点通过路径连接形成路径树。在原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,各路径节点被转化为计划节点。在原始关系型数据库执行计划树中的计划节点的阶段,各计划节点被执行,从而能够返回查询结果。
[0033] 不同查询语句所涉及的操作不同,不同路径节点函数具有不同功能,不同设定计划节点函数具有不同功能,不同设定节点执行函数也具有不同功能,所以可以根据不同查询语句选择相应的设定路径节点函数,进而选择相应的设定计划节点函数,进一步选择相应的设定节点执行函数,从而基于新的节点完成某种操作。例如,当查询语句包含order by等语句时,执行查询语句时涉及排序操作,则可以选择涉及排序的设定路径节点函数、设定计划节点函数、设定节点执行函数等执行相应操作。
[0034] 该步骤S110中,该设定路径节点函数的作用是创建新的设定路径节点,可以通过原始关系型数据库中负责生成路径的函数调用该设定路径节点函数,或者,通过新编写的代码调用该设定路径节点函数,从而实现在原始关系型数据库中接入新的节点。该设定路径节点在路径树中的位置,可以根据其中的路径和该设定路径节点的作用确定,例如,若该设定路径节点的作用是为实现排序操作,则该设定路径节点在路径树中的位置可以类似于Sort路径节点在路径树中的位置。
[0035] 可以通过调用该设定路径节点函数创建该设定路径结构体,作为设定路径节点,或者,该设定路径节点还可以包含其他内容。其中,该设定路径结构体符合所述原始关系型数据库的路径结构体类型标准是指该设定路径结构体所涉及的数据类型要能被原始关系型数据库所识别,以此,便于实现原始关系型数据库接入新的节点。例如,该设定路径结构体的结构体类型与原始关系型数据库中的路径结构体类型一致,而且,该设定路径结构体中所包含的数据类型与原始关系型数据库中的路径结构体所包含的数据类型。
[0036] 利用本发明各实施例的方法,能够在原始关系型数据库增加新的节点,例如增加新的排序相关节点,通过选择与具体应用相适应的新的节点,能够提高数据库查询速度。与此同时,原始关系型数据库中可以存在于该新的节点具有相同功能的节点,例如,数据库包含原Sort节点。一些实施例中,可以直接利用新的节点代替原有的同功能的节点来执行相应操作,或者,另一些实施例中,可以在增加新的节点后,保留原有的同功能的节点。在同时存在新的节点和原有节点的情况下,可以选择性地执行其中一个节点。
[0037] 示例性地,该步骤S110,即,在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点的路径树,具体地,可包括步骤:S111,在原始关系型数据库根据查询语句生成路径节点的阶段,根据所述查询语句调用设定路径节点函数生成包含设定路径结构体的设定路径节点,并根据所述查询语句调用原始路径节点函数生成原始路径节点,以在所述原始关系型数据库中生成包含所述设定路径节点和所述原始路径节点的路径树;其中,所述设定路径节点和所述原始路径节点具有相同功能。该步骤S111中,类似于选择设定路径节点函数的方式,可以根据该查询语句涉及的操作(例如,排序)选择相应的原始路径节点函数,如此一来,数据库在执行查询语句时,生成的路径树中同时包含新的路径节点和原路径节点,后续可以根据具体情况选择路径节点执行查询语句。
[0038] 选择的路径节点不同,所消耗的资源不同,可以选择消耗资源较少的路径执行查询语句。示例性地,在执行后续步骤S120(生成计划树)之前,即,在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点之前,各实施例所述的查询方法,还可包括步骤:S140,调用设定代价函数比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源;S150,在执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源小于执行所述原始路径节点对应的原始计划节点所消耗的计算资源的情况下,执行步骤S120。
[0039] 其中,该设定计划节点可以是指后续步骤S120中所述的设定计划节点。调用设定代价函数比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源可以均为相应的节点对应消耗的计算资源,或者,可以均为相应的节点所在路径对应消耗的计算资源。所计算资源只要能够比较两种节点所对应消耗的计算资源的差异情况即可。
[0040] 该步骤S140和S150中,通过比较分别走新增节点和原节点时消耗的计算资源,只有在新增节点消耗资源较少的情况下,才选择新增节点执行查询语句的操作,以此,能够保证新增节点不降低原数据库的执行性能。
[0041] 在另一些实施例中,在执行后续步骤S120之前,即,在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点之前,各实施例所述的查询方法,还可包括步骤:S160,在执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源不小于执行所述原始路径节点对应的原始计划节点所消耗的计算资源的情况下,在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用与所述设定计划节点函数具有相同功能的原始计划节点函数根据所述原始路径节点生成原始计划节点;S170,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用与所述设定节点执行函数具有相同功能的原始节点执行函数执行所述原始计划节点,以使所述原始关系型数据库根据所述原始计划节点的执行结果返回查询结果。
[0042] 上述步骤S160,所述设定计划节点函数和原始计划节点函数例如均为执行排序操作的函数,则原始计划节点函数可以为原始关系型数据库中的排序函数。上述步骤S170中,所述设定节点执行函数和原始节点执行函数例如均为执行排序操作的函数。
[0043] 该实施例中,若判断按新增节点所在路径执行查询语句所消耗的计算资源不小于按原节点所在路径执行查询语句所消耗的计算资源,则可按原路径执行查询语句。
[0044] 步骤S120:在所述原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,调用设定计划节点函数根据所述设定路径节点生成包含设定计划结构体的设定计划节点,以在所述原始关系型数据库中生成包含所述设定计划节点的计划树;其中,所述设定计划结构体符合所述原始关系型数据库的计划结构体类型标准。
[0045] 在原始关系型数据库根据路径树中的路径节点生成计划节点的阶段,各路径节点被转化为计划节点。该设定计划节点函数的作用是将该设定路径节点转化为设定计划节点,可以通过原始关系型数据库中创建计划的入口函数调用该设定计划节点函数,或者,通过新编写的代码调用该设定计划节点函数,从而实现将新节点中的路径节点转化为计划节点。
[0046] 可以调用设定计划节点函数创建设定计划结构体,作为该设定计划节点,或者,该设定计划节点还可以包含其他内容。其中,该设定计划结构体符合所述原始关系型数据库的计划结构体类型标准是指该设定计划结构体所涉及的数据类型要能被原始关系型数据库所识别,以此,便于实现原始关系型数据库接入新的节点。例如,该设定计划结构体的结构体类型与原始关系型数据库中的计划结构体类型(计划节点的结构体)一致,而且,该设定计划结构体中所包含的数据类型与原始关系型数据库中的计划结构体(计划节点的结构体)所包含的数据类型。
[0047] 该设定路径节点与该设定计划节点相对应,例如,该设定路径节点为顺序扫描表A的路径,则该设定计划节点为顺序扫描表A的执行计划。
[0048] 步骤S130:在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果。
[0049] 在所述原始关系型数据库执行计划树中的计划节点的阶段,各计划节点被执行,而且,在该阶段,还可以执行其他过程,例如,在执行计划节点之前进行节点初始化,在执行计划节点之后进行节点清理。
[0050] 该设定节点执行函数的作用是执行该设定计划节点对应的操作,例如,执行排序过程。可以通过原始关系型数据库中负责执行节点的函数调用该设定节点执行函数执行该设定计划节点。
[0051] 该设定节点执行函数可以根据需要进行设计。在一些实施例中,可以设计设定节点执行函数,使得关系型数据库对接外部硬件加速器,以提高操作执行效率(如加速排序过程)。
[0052] 示例性地,该步骤S130,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果,具体地,可包括步骤:S1311,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,以利用外部硬件加速器执行所述设定计划节点中的至少部分操作,并根据所述外部硬件加速器的执行结果得到所述设定计划节点的执行结果,以使所述原始关系型数据库根据所述设定计划节点的执行结果返回查询结果。
[0053] 该步骤S1311中,该设定节点执行函数可以是能够与原始关系型数据库对接,能与外部硬件加速器,并能利用外部硬件加速器加速该设定计划节点的处理过程(例如排序)的函数。该外部硬件加速器是基于硬件实现的加速设备,例如,为GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)等加速设备。
[0054] 举例而言,若查询语句涉及排序操作,上述步骤S1311,具体实施方式可包括步骤:
[0055] S13111,将从设定计划节点的设定计划结构体提取的元组排序所用数据存储至在内存中申请的基础数据类型的数组中,以及将从设定计划结构体拷贝的元组存储至在内存中申请的设定计划结构体类型的元组数组中;
[0056] S13112,通过设定核函数输出所述基础数据类型的数组中存储的元组排序所用数据,以利用能够识别所述基础数据类型的数据的外部硬件加速器对所述元组排序所用数据进行排序计算;
[0057] S13113,接收通过所述设定核函数返回的排序计算结果,以及依据所述排序计算结果,并利用所述设定计划结构体类型的元组数组中的元组向设定计划结构体中的元组数组进行赋值,以排序所述设定计划结构体中的元组;
[0058] S13114,设定节点执行函数返回排序后的所述设定计划结构体中的元组至原始关系型数据库,以使原始关系型数据库根据排序后的所述设定计划结构体中的元组返回查询结果。
[0059] 在一些实施例中,该步骤S13111中,将从设定计划节点的设定计划结构体提取的元组排序所用数据存储至在内存中申请的基础数据类型的数组中,具体地,可包括步骤:在内存中申请基础数据类型的数组,并从设定计划结构体提取元组排序所用数据中的单键值和相应的元组索引,将提取的单键值和相应的元组索引存储至申请的基础数据类型的数组中。更具体地,可以在内存中申请基础数据类型的数组对应的内存空间,并利用设定节点初始化函数对申请的基础数据类型的数组进行初始化,以从设定计划结构体提取的元组排序所用数据中的单键值和相应的元组索引存储至申请的基础数据类型的数组对应的内存空间中。
[0060] 该步骤S13112中,通过设定核函数输出所述基础数据类型的数组中存储的元组排序所用数据,以利用能够识别所述基础数据类型的数据的外部硬件加速器对所述元组排序所用数据进行排序计算,具体地,可包括步骤:通过设定核函数输出申请的基础数据类型的数组中存储的单键值和相应的元组索引,以利用能够识别所述基础数据类型的数据的外部硬件加速器对单键值进行排序计算,从而返回排序后的单键值对应的元组索引。
[0061] 该步骤S13111中,将从设定计划结构体拷贝的元组存储至在内存中申请的设定计划结构体类型的元组数组中,具体地,可包括步骤:在内存中申请设定计划结构体类型的元组数组,并将从设定计划结构体的原始元组数组中的全部元组拷贝至申请的设定计划结构体类型的元组数组。
[0062] 该步骤S13113中,接收通过所述设定核函数返回的排序计算结果,以及依据所述排序计算结果,并利用所述设定计划结构体类型的元组数组中的元组向设定计划结构体中的元组数组进行赋值,以排序所述设定计划结构体中的元组,具体地,可包括步骤:接收通过所述设定核函数返回的排序后的单键值对应的元组索引;根据排序后的单键值对应的元组索引,利用申请的设定计划结构体类型的元组数组中存储的元组向设定计划结构体的原始元组数组赋值,以按排序后的单键值排序设定计划结构体中的元组。
[0063] 在另一些实施例中,该步骤S13111中,将从设定计划节点的设定计划结构体提取的元组排序所用数据存储至在内存中申请的基础数据类型的数组中,具体地,可包括步骤:在内存中申请基础数据类型的第一数组和第二数组,并从设定计划结构体提取的元组排序所用数据中的多键值、相应的元组索引及相应的键值属性,将提取的多键值和相应的元组索引存储至申请的基础数据类型的第一数组中,将提取的键值属性存储至申请的基础数据类型的第二数组中。更具体地,可以在内存中申请基础数据类型的第一数组对应的内存空间和第二数组对应的内存空间,并利用设定节点初始化函数对申请的基础数据类型的第一数组和第二数组进行初始化,以从设定计划结构体提取的元组排序所用数据中的多键值、相应的元组索引及相应的键值属性,并将提取的多键值和相应的元组索引与提取的键值属性分别存储至申请的基础数据类型的第一数组对应的内存空间和申请的基础数据类型的第二数组对应的内存空间。进一步具体地,可以在内存中申请基础数据类型的第一数组对应的内存空间和第二数组对应的内存空间,并利用设定节点初始化函数对申请的基础数据类型的第一数组和第二数组进行初始化,以从设定计划结构体提取的元组排序所用数据中的多键值、相应的元组索引及相应的键值属性;将设定节点执行函数中元组排序所用数据中的非基础数据类型的输入参数转化为基础数据类型,并将提取的多键值和相应的元组索引存储至申请的基础数据类型的第一数组对应的内存空间,将提取的键值属性存储至申请的基础数据类型的第二数组对应的内存空间,将转化为基础数据类型后的输入参数存储至其余内存空间。
[0064] 该步骤S13112中,通过设定核函数输出所述基础数据类型的数组中存储的元组排序所用数据,以利用能够识别所述基础数据类型的数据的外部硬件加速器对所述元组排序所用数据进行排序计算,具体地,可包括步骤:通过设定核函数输出基础数据类型的第一数组中存储的多键值和相应的元组索引与基础数据类型的第二数组中存储的键值属性,以利用能够识别所述基础数据类型的数据的外部硬件加速器根据所述键值属性识别所述多键值中的各种键值,并对所述多键值进行排序计算,从而返回排序后的多键值对应的元组索引。
[0065] 该步骤S13111中,将从设定计划结构体拷贝的元组存储至在内存中申请的设定计划结构体类型的元组数组中,具体地,可包括步骤:在内存中申请设定计划结构体类型的元组数组;将从设定计划结构体的原始元组数组中的全部元组拷贝至申请的设定计划结构体类型的元组数组。
[0066] 该步骤S13113中,接收通过所述设定核函数返回的排序计算结果,以及依据所述排序计算结果,并利用所述设定计划结构体类型的元组数组中的元组向设定计划结构体中的元组数组进行赋值,以排序所述设定计划结构体中的元组,具体地,可包括步骤:接收通过所述设定核函数返回的排序后的多键值对应的元组索引;根据排序后的多键值对应的元组索引,利用申请的设定计划结构体类型的元组数组中存储的元组向设定计划结构体的原始元组数组赋值,以按排序后的多键值排序设定计划结构体中的元组。
[0067] 在一些实施例中,上述步骤S13113之后,可以利用设定清理函数进行清理,可包括步骤:回收申请的基础数据类型的数组对应的内存空间和设定计划结构体类型的元组数组对应的内存空间,并将基础数据类型的数组的指针和设定计划结构体类型的指针置空。
[0068] 在所述原始关系型数据库执行计划树中的计划节点的阶段,各计划节点被执行,而且,在该阶段,还可以执行其他过程,例如,在执行计划节点之前进行节点初始化,在执行计划节点之后进行节点清理。
[0069] 示例性地,上述步骤S130之前,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点之前,各实施例所述的查询方法,还可包括步骤:S180,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点进行节点初始化。
[0070] 该步骤S180中,该设定节点初始化函数的作用可以是对设定节点执行函数在执行时所需的内存空间(如数组)、字段等进行初始化,所以,该设定节点初始化函数的具体功能可以根据设定节点执行函数的具体实现方式确定。在节点初始化过程中,例如,可以开辟需要存储元组数据的内存空间,可以对一些字段的值(例如属性值)进行初始化。
[0071] 进一步地,上述步骤S180,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点进行节点初始化,具体地,可包括步骤:S181,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点初始化函数根据所述设定计划节点生成包含设定计划状态结构体的设定计划状态节点,初始化所述设定计划状态结构体的至少部分字段的值,以及分配内存空间;其中,所述设定计划状态结构体符合所述原始关系型数据库的计划状态结构体类型标准。
[0072] 该步骤S181中,设定节点初始化函数的作用是为设定节点执行函数做准备,具体初始化内容可根据设定节点执行函数确定。调用设定节点初始化函数,可以根据所述设定计划节点生成包含设定计划状态结构体,作为设定计划状态节点;或者,该设定计划状态节点还可包含其他内容。初始化的设定计划状态结构体的至少部分字段的值,例如,可以是结构体中的属性值。分配的内存空间可以是存储(或暂存)获取或提取的元组的数据的数组的内存空间。
[0073] 所述设定计划状态结构体符合所述原始关系型数据库的计划状态结构体类型标准,可以是指,设定计划状态结构体的类型与原始关系型数据库的计划状态结构体的类型一致,设定计划状态结构体中的数据的类型与原始关系型数据库的计划状态结构体中的数据的类型一致。
[0074] 在一些实施例中,上述步骤S130之后,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点之后,各实施例所述的查询方法,还可包括步骤:S190,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理生成的节点。
[0075] 该步骤S190中,该设定节点清理函数的作用是清理节点执行过程在数据库中残留的痕迹,可以对节点执行过程中申请的内存空间、指针等进行清理。该设定节点清理函数的具体清理内容可以根据设定节点执行函数等的执行内容确定。
[0076] 在上述步骤S181中,调用设定节点初始化函数根据所述设定计划节点生成包含设定计划状态结构体的设定计划状态节点,初始化所述设定计划状态结构体的至少部分字段的值,以及分配内存空间,在此情况下,上述步骤S130,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数执行所述设定计划节点,具体地,可包括步骤:S1321,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点执行函数根据所述设定计划状态节点并利用所述内存空间执行操作,得到所述设定计划节点的执行结果。
[0077] 该步骤S1321中,内存空间可以用于存储拷贝的元组和元组排序所用数据。设定计划状态节点具体地可以用于执行上述步骤S13111至步骤S13114。
[0078] 在各实施例的所述的方法包含上述步骤S181的情况下,上述步骤S190,即,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理生成的节点,具体地,可包括步骤:S191,在所述原始关系型数据库执行计划树中的计划节点的阶段,调用设定节点清理函数清理所述设定计划状态节点和所述内存空间。该步骤S191可以防止野指针。
[0079] 在一些实施例中,上述步骤S130的具体实施方法包括上述步骤S1311,在此情况下,上述步骤S140,即,调用设定代价函数比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源,具体地,可包括步骤:S141,调用设定代价函数计算执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源;其中,执行所述原始路径节点对应的原始计划节点所消耗的计算资源包括与所述外部硬件加速器进行数据交换所消耗的计算资源和所述外部硬件加速器执行所述设定计划节点中的至少部分操作所消耗的计算资源;S142,比较执行所述设定路径节点对应的所述设定计划节点所消耗的计算资源和执行所述原始路径节点对应的原始计划节点所消耗的计算资源。
[0080] 该步骤S141中,该设定代价函数可以计算执行新的计划几点(设定计划节点)消耗的资源,并可以计算原计划节点所消耗的资源,具体计算方式可以根据现有的资源消耗评估方式进行计算。新增节点消耗的计算资源可以包括向外部硬件加速器传输数据消耗的资源,也可以包括该外部硬件加速器所消耗的资源,还可以包括,该外部硬件加速器返回数据到关系型数据库所消耗的资源。
[0081] 本发明实施例的查询方法中,新增节点的各函数的具体实现方式不做限定,可根据具体应用进行设计,从而使用不同应用情况。当查询语句涉及不同操作时,新增节点对应的各函数有所不同。
[0082] 在一些实施例中,查询语句涉及排序,在此情况下,各函数可以为涉及排序的函数,例如,所述设定路径节点函数为排序路径函数,所述设定计划节点函数为排序计划节点函数,所述设定节点执行函数为排序节点执行函数。在另一些实施例中,查询语句涉及窗口聚合,在此情况下,各函数可以为涉及聚合的函数,例如,所述设定路径节点函数为窗口聚合路径函数,所述设定计划节点函数为窗口聚合计划节点函数,所述设定节点执行函数为窗口聚合节点执行函数。在又一些实施例中,查询语句涉及连接操作,在此情况下,各函数可以为涉及连接的函数,例如,所述设定路径节点函数为连接路径函数,所述设定计划节点函数为连接计划节点函数,所述设定节点执行函数为连接节点执行函数。此外,各结构体(例如,设定路径结构体、设定计划结构体、设定计划状态结构体等)可以设置标识符等。
[0083] 本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。该电子设备可以是计算机、服务器等,可以是原数据库系统的执行主体。
[0084] 本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤;所述电子设备还包括:外部硬件加速器。该实施例中,该电子设备可以是计算机、服务器等,可以是原数据库系统的执行主体,除此之外,该电子设备还包括外部硬件加速器,用于加速查询语句中所涉及的操作。
[0085] 本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。
[0086] 在一些具体实施例中,为了解决目前数据库软件在通用处理器上运行效率低的问题,可以通过基于节点修改关系型数据库的源码。这种方法相当于在查询生成物理路径阶段让查询执行自动多了一条可选的路径,相比于直接修改源码中的函数,安全性大大增加。在执行计划的阶段,可以调用能够实现与外部硬件加速器对接的函数,依靠外部硬件加速器加快查询语句的执行速度。基于节点的关系型数据库加速方法可包括以下步骤S1~S3:
[0087] S1,创建及添加路径节点;
[0088] 该步骤S1具体地可包括以下步骤S11~S13:
[0089] S11,新建路径结构体,用来表示新建的路径节点;
[0090] S12,新建函数用来添加新建的路径节点函数;
[0091] S13,在数据库生成路径节点阶段调用步骤S12中添加的函数;
[0092] S2,创建及添加计划节点;
[0093] 该步骤S2具体地可包括以下步骤S21~S23:
[0094] S21,新建计划结构体,用来表示新建的路径节点对应的计划节点;
[0095] S22,新建函数用来添加新建的计划节点函数;
[0096] S23,在数据库生成计划节点阶段调用步骤S22中添加的函数;
[0097] S3,创建计划状态节点及新建计划节点初始化、执行、清理函数;
[0098] 该步骤S3具体地可包括以下步骤S31~S36:
[0099] S31,新建计划状态结构体,用来表示新建的计划节点对应的计划状态节点;
[0100] S32,新建新创建的计划节点的节点初始化函数;
[0101] S33,在数据库节点初始化函数里面调用步骤S32中的函数;
[0102] S34,新建新创建的计划节点的节点执行函数;
[0103] 该步骤S34,具体地可包括步骤:S341,在计划节点执行函数里面调用为对接外部硬件加速器提供的函数,达到加速目的;
[0104] S35,新建新创建的计划节点的节点清理函数;
[0105] S36,在数据库节点清理函数里面调用步骤S35中的函数。
[0106] 本实施例中,基于节点的通用加速方式,能够使得加速方案灵活易于扩展,安全性增加;通过外部硬件加速器加速数据库执行过程,能够大大提升加速效果,减少查询时间。基于节点的方式使得易于扩展更多的节点,例如,对于排序、连接、聚合等节点,都可以构建本实施例的加速节点。并且,可以利用外部硬件加速器提高查询执行速度。对于每一套硬件,有一些灵活的参数可以自由设置,以便于决定用硬件执行的消耗,这可以用来与CPU的消耗进行对比。以便于让数据库优化器决定用不用硬件加速。研究结果表明,在任何一台CPU上的加速效果都达到了10倍以上加速。另外,应用硬件加速大大降低了能量消耗,节省了大量的查询时间成本。
[0107] 为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
[0108] 下面将以加速Postgresql数据库中的排序节点为例,说明本发明实施例的查询方法的实现过程。参见图2至图5,在Postgresql数据库中新增排序节点的方法包括以下过程:
[0109] 1新建及添加排序路径。
[0110] 1.1向Postgresql数据库源码中添加关于新建节点路径的结构体,以新建Sort节点为例,可命名为KPUSortPath,相应地,为该结构体在PostgreSQL中的节点标识符字段加入新的节点标识符,可命名为T_KPUSortPath。
[0111] 1.2添加创建排序路径函数,命名为create_KPUsort_path。
[0112] 1.3为了在步骤1.2中计算新加的KPUSortPath的代价,因此新建cost_KPUsort,在这个函数里面可以针对硬件设置一些变量的值,例如,处理每一条元组的硬件加速器KPU的消耗是多少,将元组从CPU传进硬件加速器KPU需要的消耗又是多少,这些都是可以定制的,以此可以方便PostgreSQL在查询优化的时候自行根据代价比较决定是按照哪种路径执行。
[0113] 1.4下面在PostgreSQL数据库源码里面调负责生成排序路径的函数以调用create_KPUsort_path函数。以此可以让KPUSortPath真正被调用。这里的添加可以不是完全将数据库原本的SortPath添加路径变为KPUSortPath添加,而可以是既生成SortPath,又生成KPUSortPath,并利用查询优化模块比较它们的总的花费,最后决定到底选择哪条路径,以此可以起到灵活可扩展的作用。
[0114] 2生成排序计划节点。
[0115] 2.1PostgreSQL数据库需要为每一个路径节点创建对应的计划节点,所以需要为KPUSortPath节点创建一个计划节点,命名为结构体KPUSort。同步骤1.1中一样,需要为它添加一个标识符,命名为T_KPUSort。
[0116] 2.2下面新建创建排序计划函数,这个函数根据传入的KPUSortPath创建对应的KPUSort节点,命名为create_KPUsort_plan。
[0117] 2.3下面在PostgreSQl数据库源码中的创建计划的入口函数中调用步骤2.2中的函数,这样在含有order by的sql语句中,KPUSort计划节点就会真正的被添加到计划树上面。
[0118] 3查询执行时候的源码修改。
[0119] 3.1第一步是建立计划状态结构体。命名为KPUSortState结构体。同时在源码中加入T_KPUSortState标识符标识添加的KPUSortState结构体。
[0120] 3.2定义节点初始化函数,命名为ExecInitKPUSort函数,此函数的作用是根据计划节点转化为计划状态节点,并分配空间盛放从下层节点中要排序的元组,初始化KPUSortState一些字段的值。
[0121] 3.3在PostgreSQL数据库源码中负责初始化节点的函数里面调用步骤3.2中的ExecInitKPUSort函数。
[0122] 3.4定义排序执行函数,命名为ExecKPUSort函数,这个函数是执行排序过程的,在这个函数里面,将待排序元组的待排序列传给公司提供的KPU排序函数,根据返回的索引值快速向上面节点返回结果元组,从而大大加快整体查询过程。
[0123] 3.5接着定义节点清理函数,命名为ExecEndKPUSort函数。此函数的作用是释放在ExecInitKPUSort里面申请的空间。
[0124] 3.6最后为每个KPUSortState计划状态节点调用清理函数ExecEndKPUSort。
[0125] 如此一来,对于SQL语句select*from A,B where A.a=B.a order by A.a,增加节点之后的数据库执行的逻辑计划树,路径树和物理计划树如图3至图5。
[0126] 综上所述,本发明实施例的关系型数据库中的查询方法、电子设备及计算机可读存储介质,通过在数据库生成路径节点的阶段,调用设定路径节点函数生成包含符合路径结构体类型标准的设定路径结构体的设定路径节点,从而生成包含该设定路径节点的路径树,通过在生成计划节点的阶段,调用设定计划节点函数生成包含符合计划结构体类型标准的设定计划结构体的设定计划节点,从而生成包含该设定计划节点的计划树,以及在执行计划节点的阶段,调用设定节点执行函数执行该设定计划节点,从而能够根据该设定计划节点的执行结果返回查询结果。如此一来,本发明实施例能够实现在关系型数据库扩展新的节点,不易导致由于修改数据库源代码而产生漏洞降低安全性。新扩展的节点的具体内容可以根据需要进行设置,所以扩展的节点能够便现有关系型数据库与具体应用相适用,从而提高数据的专用性,进而提高数据库的执行效率。本发明实施例中,因为建立的是一整套节点(包括路径、计划、执行),所以数据库在查询优化阶段就能够选择更优路径,达到数据库查询优化的全局最优,例如,选择硬件加速,以加速数据库中的计算密集型操作。
[0127] 在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
[0128] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0129] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0130] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0131] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0132] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。