CN111209295B - 计算流图优化方法、数据库访问方法及装置 - Google Patents
计算流图优化方法、数据库访问方法及装置 Download PDFInfo
- Publication number
- CN111209295B CN111209295B CN201911358981.6A CN201911358981A CN111209295B CN 111209295 B CN111209295 B CN 111209295B CN 201911358981 A CN201911358981 A CN 201911358981A CN 111209295 B CN111209295 B CN 111209295B
- Authority
- CN
- China
- Prior art keywords
- node
- flow graph
- nodes
- computation flow
- identifier
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种计算流图优化方法、数据库访问方法及装置,其中,该计算流图优化方法包括:获取初始计算流图;基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同;将所述第一节点和所述第二节点合并为一个节点;根据合并节点后的初始计算流图得到优化后的计算流图。上述方案通过优化计算流图中的节点能够加快计算流图的运算效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种计算流图优化方法、数据库访问方法及装置。
背景技术
数据库本质上是一个与应用程序彼此独立的数据集合。利用SQL语言(StructuredQuery Language,结构化查询语言)能够对数据库执行各种操作,例如,存取数据、查询、更新及管理关系数据库。
然而,对数据库执行操作的过程中会涉及重复的运算操作,例如,不同运算操作均需从数据库的数据表中取某些数据。重复执行这些运算操作会降低数据库的执行效率。
发明内容
本发明提供了一种计算流图优化方法、数据库访问方法及装置,以加快计算流图的运算效率。
为了达到上述目的,本发明采用以下方案实现:
根据本发明实施例的一个方面,提供了一种计算流图优化方法,包括:获取初始计算流图;基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同;将所述第一节点和所述第二节点合并为一个节点;根据合并节点后的初始计算流图得到优化后的计算流图。
在一些实施例中,所述节点所接收的输入内容包括:节点所接收的参数值,和/或节点所接收的嵌套操作及嵌套操作的参数值。
在一些实施例中,基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同,包括:根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识;若确认所述第一标识和所述第二标识相同,则确认所述第一节点和所述第二节点的执行效果相同。
在一些实施例中,根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识,包括:从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前的第一节点,并根据所述第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识;从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第一节点之后的第二节点,并根据所述第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识。
在一些实施例中,将所述第一节点和所述第二节点合并为一个节点之后,且根据合并节点后的初始计算流图得到优化后的计算流图之前,所述方法还包括:从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第二节点之后的第三节点,并根据所述第三节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第三节点添加第三标识;若确认所述第三标识和所述初始计算流图中第四节点的第四标识相同,则确认所述第三节点和所述第四节点的执行效果相同;将所述第三节点和所述第四节点合并为一个节点;其中,所述第四标识是根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息,在添加所述第一标识之前、添加所述第一标识和所述第二标识之间、或添加所述第二标识和所述第三标识之前为所述第四节点添加的,相应地,所述第三节点在所述初始计算流图中的执行顺序位于所述第一节点之前、位于所述第一节点和所述第二节点之间、或位于所述第二节点和所述第三节点之间。
在一些实施例中,将所述第一节点和所述第二节点合并为一个节点,包括:将所述第一节点指向所述第二节点的输出节点,将所述第二节点的输入节点指向所述第一节点,删除所述第二节点的输入拓扑关系和输出拓扑关系,并对所述第二节点做放弃执行处理。
在一些实施例中,对所述第二节点做放弃执行处理,包括:为所述第二节点添加失能标识。
在一些实施例中,根据合并节点后的初始计算流图得到优化后的计算流图,包括:将所有执行效果相同的不同节点均完成节点合并的初始计算流图作为优化后的计算流图,并输出优化后的计算流图。
根据本发明实施例的另一个方面,提供了一种基于数据库访问的计算流图的优化方法,包括:利用上述任一实施例所述的计算流图优化方法对基于数据库访问的初始计算流图进行优化。
根据本发明实施例的又一个方面,提供了一种数据库访问方法,包括:接收并解析SQL语句,根据解析后的SQL语句生成语法树;基于所述语法树构建所述SQL语句的初始计算流图;利用上述任一实施例所述的基于数据库访问的计算流图的优化方法对所述初始计算流图进行优化;基于优化后的初始计算流图执行访问数据库的操作并返回执行结果。
根据本发明实施例的再一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述方法的步骤。
根据本发明实施例的又一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法的步骤。
本发明实施例的计算流图优化方法、基于数据库访问的计算流图的优化方法、数据库访问方法、电子设备及计算机可读存储介质,通过对于节点本身操作,节点接收的变量信息以及节点的入度信息作为一个集合进行统一考虑,若两个节点的集合在进行比较之后发现完全相同,则可以确认两个节点的执行效果完全相同,可以将两个节点合并为一个节点,这样就节省了执行节点的总个数,所以通过优化节点执行关系以及复用节点的方式,加快了计算流图的运算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例的计算流图优化方法的流程示意图;
图2是本发明一实施例的数据库访问方法的流程示意图;
图3是本发明一具体实施例的计算流图优化方法的流程示意图;
图4是本发明一具体实施例的基于数据库访问的计算流图的优化方法的代码示例;
图5是本发明一具体实施例中获取的初始计算流图的示意图;
图6是本发明一具体实施例中修改执行效果相同的节点的拓扑关系的示意图;
图7是本发明一具体实施例中将节点标记为失能的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
需要预先说明的是,下述实施例或示例的描述或其中所提及的特征可以以相同或类似的方式,与其他实施例或示例中的特征组合,或替换其他实施例或示例中的特征,以形成可能的实施方式。另外,本文所使用的术语“包括/包含”是指特征、要素、步骤或组件的存在,但并不排除还存在一个或多个其他特征、要素、步骤或组件。
许多软件或硬件的操作均可以通过建模得到相应的计算流图。其中,计算流图中的节点可以代表具体的运算操作,计算流图中的边可以代表数据的流向。例如,对于数据库而言,通过对数据库访问流程进行建模,能够将输入的SQL语句转化成计算流图。计算流图中的不同节点可以代表执行流程中不同阶段所要执行的运算操作,所以,若整个执行流程中存在重复的运算操作,则计算流图可以相应地体现出来。
基于此,本发明实施例提供了一种计算流图优化方法,通过对计算流图中的节点进行合并优化,能够减少执行流程中的重复运算操作。该计算流图优化方法能够用于对基于数据访问的计算流图进行优化,也能够用于对其他软件或硬件操作的进行优化。所以,本说明书主要是以对基于数据库访问的计算流图优化为例进行说明,并不应认为是对本发明的计算流图优化方法的应用场景的限定。
图1是本发明一实施例的计算流图优化方法的流程示意图。参见图1,该计算流图优化方法,可包括以下步骤S110至步骤S140。
下面将对步骤S110至步骤S140的具体实施方式进行详细说明。
步骤S110:获取初始计算流图。
该初始计算流图可以是根据软件或硬件的操作流程建立的计算流图。例如,对于数据库而言,该初始计算流图可以是根据输入的SQL语句建模得到的计算流图。
步骤S120:基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同。
需要说明的是,所述的第一节点和第二节点仅指计算流图中的某两个节点,该两个节点的具体情况,例如,执行顺序等,由其他描述来确定。
计算流图中包括节点和有向边,节点包含操作,有向边表示数据流向。计算流图中的节点对应相应的代码或硬件操作单元,通过执行计算流图可以执行相应代码或硬件操作。
节点本身的操作可以是包括操作关键词的信息。节点所接收的输入内容可包括:节点所接收的参数值,和/或节点所接收的嵌套操作及嵌套操作的参数值。节点的所有入度信息可以包括所有入度节点的信息,对于利用标识确认执行效果是否相同的情况,若入度节点已添加标识,可以通过比较入度节点的标识一致性来判断第一节点和第二节点的入度信息是否一致。
该步骤S120中,例如,对于基于数据库访问的计算流图中的节点(Select id)而言,节点本身的操作可以是Select,节点所接收的参数值可以是id,另一些情况中,操作Select的输入嵌套了另一个操作,嵌套操作还可以包含参数值。
在一些实施例中,可以通过为初始计算流图中的节点添加标识,并根据标识是否相同来判断初始计算流图中的两个节点的执行效果是否相同。
示例性地,上述步骤S120,即,基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同,具体地,可包括步骤:S121,根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识;S122,若确认所述第一标识和所述第二标识相同,则确认所述第一节点和所述第二节点的执行效果相同。
该示例中,通过比较标识确认初始计算流图中的两个计算是否具有相同执行效果,确认方式更方便,不易出错。
在其他示例中,对于初始计算流图中的两个节点,可以通过直接比较同类型的节点相关信息(包括节点本身的操作、节点所接收的输入内容、及节点的所有入度信息等类型的相关信息)来确认该两个节点的执行效果是否相同。
进一步地,可以根据初始计算流图中节点的执行顺序为节点添加标识。示例性地,上述步骤S121,即,根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识,更具体地,可包括步骤:S1211,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前的第一节点,并根据所述第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识;S1212,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第一节点之后的第二节点,并根据所述第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识。
本文对于节点或计算流图所述的执行顺序,可以指在执行该计算流图对应的操作流程是,节点的执行先后顺序。
在刚开始标识计算流图中的节点时,执行顺序最早的节点可以是那些节点入度为零的节点。在根据已添加标识的节点可以得到其出度节点,则可以继而对该出度节点添加标识,以此不断进行,可以达到按计算流图的执行顺序标识节点的目的。
在其他示例中,可以根据其他特定顺序或随机的顺序为初始计算流图中的节点添加标识。
步骤S130:将所述第一节点和所述第二节点合并为一个节点。
该步骤S130中,并为一个节点并不是特指新建一个点,而是指对于两个执行效果相同的点,只执行一次节点的各种方案。
在一些实施例中,可以从第一节点和第二节点中选择一个节点,并基于选择的节点生成合并后的节点,以通过执行一次合并后的节点即可代替执行第一节点和执行第二节点的效果。
示例性地,该步骤S130,即,将所述第一节点和所述第二节点合并为一个节点,具体地,可包括步骤:S131,将所述第一节点指向所述第二节点的输出节点,将所述第二节点的输入节点指向所述第一节点,删除所述第二节点的输入拓扑关系和输出拓扑关系,并对所述第二节点做放弃执行处理。
该示例中,通过将第二节点的输出、输出拓扑关系添加至第一节点,能够利用第一节点的执行效果代替执行第二节点,通过删除第一节点的输入、输出拓扑关系,并对其做放弃处理,能够避免执行第二节点,所以,以此能够减少运算操作次数。
在其他示例中,可以在第一节点和第二节点之外生成新的节点作为合并后的节点。
进一步地,可以通过将不希望执行的第二节点标识为失能,来避免在执行计算流图时识别出第二节点,从而达到不执行该第二节点的目的。
示例性地,上述步骤S131中,对所述第二节点做放弃执行处理的步骤,具体地,可包括步骤:为所述第二节点添加失能标识。这表示后续执行过程之中,执行模块将放弃对计算流图中带有失能标识的节点交付底层硬件的执行过程。
在其他示例中,可以通过删除不希望执行的该第二节点本身,来避免在执行计算流图时执行该第二节点,从而达到放弃执行该第二节点的目的。
在一些实施例中,除了对执行效果相同的上述第一节点和第二节点进行合并,还可以对初始计算流图中其他执行效果相同的多个节点进行合并。具体地,可以根据初始计算流图中节点的执行顺序为其中的节点添加标识。更具体地,在对一个节点添加标识后,可以从已为其他节点添加的标识中找到与刚为该节点添加的标识相同的标识对应的节点,继而可以对这样两个节点进行合并。
示例性地,在该步骤S130之后,且在后述步骤S140之前,图1所示的方法还可包括步骤:S151,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第二节点之后的第三节点,并根据所述第三节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第三节点添加第三标识;S152,若确认所述第三标识和所述初始计算流图中第四节点的第四标识相同,则确认所述第三节点和所述第四节点的执行效果相同;S160,将所述第三节点和所述第四节点合并为一个节点。
其中,所述第四标识是根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息,在添加所述第一标识之前、添加所述第一标识和所述第二标识之间、或添加所述第二标识和所述第三标识之前为所述第四节点添加的,相应地,所述第三节点在所述初始计算流图中的执行顺序位于所述第一节点之前、位于所述第一节点和所述第二节点之间、或位于所述第二节点和所述第三节点之间。
该示例中,可以依据初始计算流图的执行顺序依次为初始计算流图中的节点添加标识,并接着从已添加标记的节点中找出相同执行效果的节点,进行节点合并,从而可以实现边添加标识边进行节点合并优化,从而可以提高计算流图的优化效率。
对于上述为第四节点添加第四标识的三种执行时机,更具体地,说明如下:
若上述第四节点的第四标识是在为第一节点添加第一标识之前添加的,则在上述步骤S1211之前,各实施例的优化方法还可包括步骤:S1213,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第一节点之前的第四节点,并根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第四节点添加第四标识(该步骤S1213中,尚未添加标识的所有节点包含上述第一节点),在此情况下,上述步骤S1211和步骤S1212中,尚未添加标识的所有节点已不包含上述第四节点;
若上述第四节点的第四标识是在为第一节点添加第一标识之后且在为第二节点添加第二节点之前添加的,则在上述步骤S1211和步骤S1212之间,各实施例的优化方法还可包括步骤:S1214,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第一节点和所述第二节点之间的第四节点,并根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第四节点添加第四标识(该步骤S1214中,尚未添加标识的所有节点已不包含上述第一节点,但可包括上述第二节点),在此情况下,上述步骤S1212中,尚未添加标识的所有节点已不包含上述第四节点;
若上述第四节点的第四标识是在为第二节点添加第二节点之后添加的,则在上述步骤S1212之后,各实施例的优化方法还可包括步骤:S1215,从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第二节点之后的第四节点,并根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第四节点添加第四标识。
步骤S140:根据合并节点后的初始计算流图得到优化后的计算流图。
在一些实施例中,在该步骤S140之前,可以对初始计算流图中所有执行效果相同的多个节点进行节点合并(其中,可以是两个节点进行合并,或者两个以上节点进行合并)。在此情况下,该步骤S140,即,根据合并节点后的初始计算流图得到优化后的计算流图,具体地,可包括步骤:S141,将所有执行效果相同的不同节点均完成节点合并的初始计算流图作为优化后的计算流图,并输出优化后的计算流图。该步骤S141中,所有执行效果相同的不同节点可以仅包括上述第一节点和第二节点,或者,还可以包括上述第三节点和第四节点,再或者,还可以包括其他节点。
目前在数据库访问中使用计算流图表示其操作的方法很少,所以尚没有基于数据库访问的计算流图的优化方法。
为此,本发明实施例还提供了一种基于数据库访问的计算流图的优化方法,该方法可包括:利用上述任一实施例所述的计算流图优化方法对基于数据库访问的初始计算流图进行优化。
该基于数据库访问的初始计算流图可以是根据SQL语句建立的计算流图。SQL是结构化查询语言,是一种用于管理关系型数据库的语言。基于数据库访问的计算流图是由节点和有向边构成,每个节点代表一个数据库运算操作,每一条有向边代表节点之间的拓扑关系和数据流向。
本实施例中,在引入计算流图概念的基础之上,对于通过输入SQL语句所建立的计算流图进行节点优化操作,使用标识节点的方法,对于重复操作的节点进行鉴别,并通过已经执行好的,具有相同执行效果的节点进行替代,从而降低计算流图的实际运行开销,提升整体性能。
此外,本发明实施例还提供了一种数据库访问方法,如图2所示,该数据库访问方法,可包括以下步骤:
步骤S210:接收并解析SQL语句,根据解析后的SQL语句生成语法树;
步骤S220:基于所述语法树构建所述SQL语句的初始计算流图;
步骤S230:利用本发明任一实施例所述的基于数据库访问的计算流图的优化方法对所述初始计算流图进行优化;
步骤S240:基于优化后的初始计算流图执行访问数据库的操作并返回执行结果。
该步骤S210可以利用现有方法实现。该步骤S220中,可以根据每个操作关键词的操作作为节点粒度构建计算流图。该步骤S230的具体实施方式参见上述实施例所述的基于数据库访问的计算流图的优化方法。该步骤S240中,该数据库可以是软件数据库或硬件数据库(例如,现场可编程门阵列FPGA、图形处理器GPU)。对于查询类型的SQL语句而言,返回的执行结果可以是结果集,对于修改类型的SQL语句而言,返回的执行结果可以是数据库访问的执行状态,例如成功或失败。
本实施例中,在建立计算流图之后,优化已有的计算流图,来达到提高计算流图运行效率的目的。
基于与上述实施例所述方法相同的发明构思,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的计算流图优化方法、上述任一实施例所述的基于数据库访问的计算流图的优化方法、或上述任一实施例所述的数据库访问方法的步骤。该电子设备可以是计算机、服务器,或者可以是硬件,例如FPGA、GPU等。
另外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的计算流图优化方法、上述任一实施例所述的基于数据库访问的计算流图的优化方法、或上述任一实施例所述的数据库访问方法的步骤。
为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
图3是本发明一具体实施例的计算流图优化方法的流程示意图;图4是本发明一具体实施例的基于数据库访问的计算流图的优化方法的代码示例;图5是本发明一具体实施例中获取的初始计算流图的示意图;图6是本发明一具体实施例中修改执行效果相同的节点的拓扑关系的示意图;图7是本发明一具体实施例中将节点标记为失能的示意图。
参见图3和图4,以对基于数据库访问的计算流图的优化为例,在一具体实施例中,计算流图优化方法可包括以下步骤1~步骤4。
1.通过函数接口获取已经建立的好的计算流图,称为初始计算流图。
2.对初始计算流图的所有节点进行标识,具体标识方法可抽象为以下公式:
sign=nodeops+parameterops&value+∑input
其中,node元素代表节点本身的操作ops,parameter代表节点操作所接收的输入运算符以及具体参数数值ops&value,input代表节点的具体入度信息,累和运算∑代表所有的入度信息都被考虑在内。如图5~图7中所示,可以使用name属性作为标识。
3.对于相同标识的节点,可以判断该节点执行之后的效果是相同的,记为A、B节点,且B节点添加顺序在A节点之后。将A、B节点之中未执行的B节点标记失能(disable),并将A节点指向B节点的输出,将B节点的输入指向A节点,然后删除B的出度拓扑信息和入度拓扑信息。如图6所示,可以看出去节点2与节点5的标识相同,确认节点5可以被优化,所以将节点2添加指向原先节点5所指向的边,代替节点5在图中的功能,最后将节点5标记失能(disable),从而能够减少节点运算次数。
4.循环执行步骤3直到所有相同标识的节点都已经优化,输出优化后的计算流图。
本实施例中,对计算流图中的所有节点进行标识,对于标识重复的节点,根据先后顺序决定替代关系,并进行节点替代,将所有节点进行优化之后,输出优化后的计算流图。通过对于计算流图中节点进行标识,若两个节点的标识在进行比较之后发现完全相同,则可以确认两个节点的执行效果完全相同,用原有节点代替另一个相同节点,这样就节省了执行节点的总个数,加快计算流图的运算效率。
综上所述,本发明实施例的计算流图优化方法、基于数据库访问的计算流图的优化方法、数据库访问方法、电子设备及计算机可读存储介质,通过对于节点本身操作,节点接收的变量信息以及节点的入度信息作为一个集合进行统一考虑,若两个节点的集合在进行比较之后发现完全相同,则可以确认两个节点的执行效果完全相同,可以将两个节点合并为一个节点,这样就节省了执行节点的总个数,所以通过优化节点执行关系以及复用节点的方式,加快了计算流图的运算效率。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种计算流图优化方法,其特征在于,包括:
获取初始计算流图;
基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同;
将所述第一节点和所述第二节点合并为一个节点;
根据合并节点后的初始计算流图得到优化后的计算流图;
基于节点本身的操作、节点所接收的输入内容、及节点的所有入度信息确认所述初始计算流图中第一节点和第二节点的执行效果相同,包括:
根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识;
若确认所述第一标识和所述第二标识相同,则确认所述第一节点和所述第二节点的执行效果相同;
将所述第一节点和所述第二节点合并为一个节点,包括:
将所述第一节点指向所述第二节点的输出节点,将所述第二节点的输入节点指向所述第一节点,删除所述第二节点的输入拓扑关系和输出拓扑关系,并对所述第二节点做放弃执行处理;
对所述第二节点做放弃执行处理,包括:
为所述第二节点添加失能标识;
所述节点所接收的输入内容包括:节点所接收的参数值,和/或节点所接收的嵌套操作及嵌套操作的参数值;
根据所述初始计算流图中第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识,并根据所述初始计算流图中第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识,包括:
从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前的第一节点,并根据所述第一节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第一节点添加第一标识;
从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第一节点之后的第二节点,并根据所述第二节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第二节点添加第二标识。
2.如权利要求1所述的计算流图优化方法,其特征在于,将所述第一节点和所述第二节点合并为一个节点之后,且根据合并节点后的初始计算流图得到优化后的计算流图之前,所述方法还包括:
从所述初始计算流图中尚未添加标识的所有节点中选择执行顺序最靠前且执行顺序位于所述第二节点之后的第三节点,并根据所述第三节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息为所述第三节点添加第三标识;
若确认所述第三标识和所述初始计算流图中第四节点的第四标识相同,则确认所述第三节点和所述第四节点的执行效果相同;
将所述第三节点和所述第四节点合并为一个节点;
其中,所述第四标识是根据所述第四节点的节点本身的操作、节点所接收的输入内容、及节点的所有入度信息,在添加所述第一标识之前、添加所述第一标识和所述第二标识之间、或添加所述第二标识和所述第三标识之前为所述第四节点添加的。
3.如权利要求1至2任一项所述的计算流图优化方法,其特征在于,根据合并节点后的初始计算流图得到优化后的计算流图,包括:
将所有执行效果相同的不同节点均完成节点合并的初始计算流图作为优化后的计算流图,并输出优化后的计算流图。
4.一种基于数据库访问的计算流图的优化方法,其特征在于,包括:利用如权利要求1至3任一项所述的计算流图优化方法对基于数据库访问的初始计算流图进行优化。
5.一种数据库访问方法,其特征在于,包括:
接收并解析SQL语句,根据解析后的SQL语句生成语法树;
基于所述语法树构建所述SQL语句的初始计算流图;
利用如权利要求4所述的基于数据库访问的计算流图的优化方法对所述初始计算流图进行优化;
基于优化后的初始计算流图执行访问数据库的操作并返回执行结果。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911358981.6A CN111209295B (zh) | 2019-12-25 | 2019-12-25 | 计算流图优化方法、数据库访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911358981.6A CN111209295B (zh) | 2019-12-25 | 2019-12-25 | 计算流图优化方法、数据库访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209295A CN111209295A (zh) | 2020-05-29 |
CN111209295B true CN111209295B (zh) | 2021-02-26 |
Family
ID=70788272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911358981.6A Active CN111209295B (zh) | 2019-12-25 | 2019-12-25 | 计算流图优化方法、数据库访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209295B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN109033323A (zh) * | 2018-07-18 | 2018-12-18 | 中国人民解放军91776部队 | 一种基于算子的树形结构基础数据变更记录方法 |
CN109508412A (zh) * | 2018-11-20 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11222052B2 (en) * | 2011-02-22 | 2022-01-11 | Refinitiv Us Organization Llc | Machine learning-based relationship association and related discovery and |
CN105487381A (zh) * | 2015-12-29 | 2016-04-13 | 联想(北京)有限公司 | 一种处理方法及电子设备 |
-
2019
- 2019-12-25 CN CN201911358981.6A patent/CN111209295B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN109033323A (zh) * | 2018-07-18 | 2018-12-18 | 中国人民解放军91776部队 | 一种基于算子的树形结构基础数据变更记录方法 |
CN109508412A (zh) * | 2018-11-20 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111209295A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US10540350B2 (en) | Source code search engine | |
KR101781416B1 (ko) | 관련 데이터세트의 처리 | |
US10769147B2 (en) | Batch data query method and apparatus | |
US8719299B2 (en) | Systems and methods for extraction of concepts for reuse-based schema matching | |
JP5745932B2 (ja) | グラフデータに写像の像であるオブジェクトに対する操作を反映する方法、プログラム、および、システム | |
US20170154123A1 (en) | System and method for processing metadata to determine an object sequence | |
US20240020316A1 (en) | Data analysis processing apparatus, data analysis processing method, and program | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN111143470A (zh) | 跨平台数据库数据同步比对方法及装置 | |
US9971794B2 (en) | Converting data objects from multi- to single-source database environment | |
US9002899B2 (en) | Method of merging and incremental construction of minimal finite state machines | |
CN115618010A (zh) | 融合图谱的存储和处理方法及装置 | |
CN111209295B (zh) | 计算流图优化方法、数据库访问方法及装置 | |
CN117076563A (zh) | 一种应用于区块链的剪枝方法和装置 | |
JPWO2012115007A1 (ja) | 故障の木解析システム、故障の木解析方法及びプログラム | |
CN111190768B (zh) | 数据库执行错误恢复方法、数据库访问方法及装置 | |
CN113157934A (zh) | 知识图谱起源处理方法和系统、电子设备和存储介质 | |
CN112052341A (zh) | 知识图谱剪枝方法及装置 | |
CN113420023A (zh) | 一种数据处理方法、装置、电子设备及计算机存储介质 | |
US20080059468A1 (en) | Method, system, and program product for grouping statements against database objects | |
CN106168983B (zh) | 一种混合资源处理方法及装置 | |
CN117573199B (zh) | 一种模型差异对比分析方法、装置、设备及介质 | |
CN111159198B (zh) | 参数交易处理方法及装置、计算机设备及可读存储介质 | |
US20240118878A1 (en) | Method and system for determining optimization applicability on intermediate representation from program |
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 |