CN107729421A - 存储过程的执行方法、装置及存储介质 - Google Patents
存储过程的执行方法、装置及存储介质 Download PDFInfo
- Publication number
- CN107729421A CN107729421A CN201710892803.6A CN201710892803A CN107729421A CN 107729421 A CN107729421 A CN 107729421A CN 201710892803 A CN201710892803 A CN 201710892803A CN 107729421 A CN107729421 A CN 107729421A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- storage node
- data storage
- information
- 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 570
- 230000008569 process Effects 0.000 title claims abstract description 403
- 238000012545 processing Methods 0.000 claims abstract description 87
- 238000005192 partition Methods 0.000 claims abstract description 56
- 238000013500 data storage Methods 0.000 claims description 542
- 238000004590 computer program Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种存储过程的执行方法、装置及存储介质,属于大数据技术领域。所述方法应用于分布式数据库,包括:目标数据存储节点接收第一数据存储节点发送的第一数据信息和第一步骤指示信息;基于第一数据信息、第一步骤指示信息和存储的目标存储过程的拓扑信息,对第一数据进行存储过程处理,得到第二数据;基于第二数据、存储的分区信息和第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息,并向第二数据存储节点发送第二数据信息和第二步骤指示信息。如此,每个数据存储节点可以直接对数据进行处理,并将数据处理结果发送给第二数据存储节点,而不用再回传给数据存储节点管理器,减少了数据传输量,提高了存储过程的执行效率和运行性能。
Description
技术领域
本申请涉及大数据技术领域,特别涉及一种执行存储过程的执行方法、装置及存储介质。
背景技术
近年来,随着数据量的高速增长,分布式数据库技术得到了快速发展。分布式数据库是指通过网络将物理上分散的多个数据存储节点连接起来组成逻辑上集中的数据库,可以将海量数据分区存储在各个数据存储节点中,解决了数据库的扩展性问题。分布式数据库可以通过调用和执行存储过程来完成相应业务,存储过程是一种存储在数据库中的可调用对象,实质是一组能够实现特定功能的SQL(Structured Query Language,结构化查询语言)语句集合,即存储过程包括多个运算步骤,具体可以通过存储过程名和输入数据进行调用。而且,在分布式数据库架构中,对于某个被调用的存储过程,若该存储过程执行所需的数据被存储在多个数据存储节点中,那么该存储过程的执行必需由多个数据存储节点交互完成。
相关技术中,分布式数据库通常采用主从控制方式执行存储过程,也即是,当某一数据存储节点接收到存储过程的调用请求时,如果该数据存储节点具有存储过程管理功能,则该数据存储节点即可作为存储节点管理器(Master),对执行该存储过程的多个数据存储节点进行统一管理和调度。首先,存储节点管理器可以基于第一数据和存储的分区信息,确定用于处理第一数据的第一个数据存储节点,其中,第一数据为存储过程的调用请求携带的输入数据,分区信息用于指示数据的存储位置,该第一个数据存储节点是指存储有该第一数据的数据存储节点。然后,存储节点管理器将第一数据和该存储过程的第一个运算步骤发送给第一个数据存储节点,以指示第一个数据存储节点基于第一数据执行第一个运算步骤,得到第二数据。之后,该第一个数据存储节点需要将第二数据回传给存储节点管理器,以便存储节点管理器继续基于存储的分区信息,确定用于处理第二数据的第二数据存储节点,并将第二数据和该存储过程的第二个运算步骤发送给该第二个数据存储节点,以指示该第二个数据存储节点基于该第二数据执行第二个运算步骤,得到第三数据。之后,该第二个数据存储节点再继续将第三数据回传给存储节点管理器,以便存储节点管理器重复执行调用下一个数据存储节点的步骤,直至调用到执行该存储过程的最后一个数据存储节点,使得该最后一个数据存储节点执行该存储过程的最后一个运算步骤,得到最后一个数据,并将该最后一个数据作为输出数据回传给存储节点管理器。
上述主从控制方式中,执行存储过程的每个数据存储节点都需要从存储节点管理器接收数据,还需要将数据的处理结果回传给数据存储节点,因此存储节点管理器与各个数据存储节点之间将存在大量数据传输,影响了存储过程的执行效率和运行性能。
发明内容
为了解决相关技术存在的存储节点管理器与各个数据存储节点之间传输的数据量较大,影响存储过程的执行效率和运行性能的问题,本申请提供了一种存储过程的执行方法、装置及存储介质。所述技术方案如下:
第一方面,提供了一种存储过程的执行方法,应用于分布式数据库;所述分布式数据库包括的多个数据存储节点用于执行目标存储过程,所述多个数据存储节点中的第一数据存储节点、目标数据存储节点和第二数据存储节点为顺序执行所述目标存储过程的三个数据存储节点;所述方法包括:
所述目标数据存储节点接收所述第一数据存储节点发送的第一数据信息和第一步骤指示信息,所述第一数据信息为第一数据或者所述第一数据的指示信息,所述第一数据为所述目标存储过程被执行时所需的数据,所述第一步骤信息用于指示所述目标数据存储节点需要执行的第一运算步骤在所述目标存储过程包括的多个运算步骤中的位置;
所述目标数据存储节点基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行存储过程处理,得到第二数据,所述目标存储过程的拓扑信息用于指示所述目标存储过程包括的多个运算步骤和所述多个运算步骤的执行顺序;
所述目标数据存储节点基于所述第二数据、分区信息和所述第一步骤指示信息,确定所述第二数据存储节点和第二步骤指示信息,并向所述第二数据存储节点发送第二数据信息和所述第二步骤指示信息,所述分区信息用于指示数据的存储位置,所述第二步骤指示信息用于指示所述第二数据存储节点需要执行的第二运算步骤在所述目标存储过程包括的多个运算步骤中的位置,所述第二数据信息为所述第二数据或者所述第二数据的指示信息。
其中,目标数据存储节点为用于执行目标存储过程的多个数据存储节点中的任一数据存储节点,第一数据存储节点为按照目标存储过程的执行顺序排列的目标数据存储节点的上一个数据存储节点,第二数据存储节点为按照目标存储过程的执行顺序排列的目标数据存储节点的下一个数据存储节点。
本发明实施例中,每个数据存储节点均可以通过自身直接对接收的数据进行处理,然后确定下一个数据存储节点,并将数据处理结果直接发送给下一个数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
在具体实现中,当所述第一数据存储节点为输入节点时,所述第一数据为所述输入节点基于所述目标存储过程的调用请求获取的输入数据,所述输入节点为所述分布式数据库中接收到所述目标存储过程的调用请求的数据存储节点;
当所述第一数据存储节点为中间节点时,所述第一数据为所述中间节点基于接收的数据信息对数据进行处理得到的数据处理结果,所述中间节点是指用于执行所述目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点。
本发明实施例中,该第一数据可以为输入节点发送的初始输入数据,即用户在调用目标存储过程时输入的数据,也可以为中间节点发送的中间数据,即在执行目标存储过程包括的任一运算步骤的过程中所产生的数据。相应地,目标数据存储节点可以为输入节点的下一个数据存储节点,也可以为任一中间节点的下一个数据存储节点。
在具体实现中,所述目标数据存储节点基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行存储过程处理,得到第二数据,包括:
所述目标数据存储节点基于所述第一数据信息确定所述第一数据;
所述目标数据存储节点基于所述第一步骤指示信息和所述目标存储过程的拓扑信息,确定所述目标数据存储节点需要执行的第一运算步骤;
所述目标数据存储节点基于所述第一数据执行所述第一运算步骤,得到所述第二数据。
其中,目标存储过程的拓扑信息用于指示该目标存储过程内部的执行逻辑,具体用于指示该目标存储过程包括的多个运算步骤和该多个运算步骤的执行顺序。
本发明实施例中,由于目标数据存储节点存储有目标存储过程的拓扑信息,因此在目标存储过程被执行的过程中,目标数据存储节点即可直接根据上一个数据存储节点发送的步骤指示信息以及自身存储的目标存储过程的拓扑信息确定自身需要执行的运算步骤,并可以向下一个数据存储节点发送步骤指示信息,以指示下一个数据存储节点需要执行的运算步骤。
如此,无需存储节点管理器的调度和管理,多个数据存储节点即能够顺序执行目标存储过程,且能够将产生的中间数据顺序传递,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
在具体实现中,所述目标数据存储节点基于所述第一数据信息确定所述第一数据,包括:
当所述第一数据信息为所述第一数据的指示信息时,所述目标数据存储节点基于所述第一数据的指示信息从存储的数据中获取所述第一数据。
其中,该第一数据信息可以为第一数据的索引信息等。本发明实施例中,当第一数据的数据量较大时,第一数据存储节点可以将第一数据转换为第一数据的指示信息,并将第一数据的指示信息发送给目标数据存储节点,从而减小数据传输量,提高存储过程的执行效率。
在另一实施例中,所述方法还包括:
所述目标数据存储节点接收所述第一数据存储节点发送的所述目标存储过程的标识,
基于所述目标存储过程的标识,获取所述目标存储过程的拓扑信息;和/或,
所述目标数据存储节点向所述第二数据存储节点发送所述目标存储过程的标识。
本发明实施例中,当每个数据存储节点存储有多个存储过程的拓扑信息时,各个用于执行目标存储过程的数据存储节点之间还可以传递目标存储过程的标识,以指示下一个数据存储节点当前所执行是那个存储过程,并根据所传递的目标存储过程的标识从存储的多个存储过程的拓扑信息中获取目标存储过程的拓扑信息,作为确定执行运算步骤的依据,从而提高了执行存储过程的准确度。
在具体实现中,当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中除最后一个运算步骤之外的其他运算步骤时,所述第二步骤指示信息用于指示所述第一运算步骤的下一个运算步骤;
当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中的最后一个运算步骤时,所述第二步骤指示信息用于指示输出步骤,所述输出步骤用于指示将接收到的数据作为所述目标存储过程的输出数据进行输出。
在具体实现中,所述目标数据存储节点基于所述第二数据、分区信息和所述第一步骤指示信息,确定所述第二数据存储节点和第二步骤指示信息,包括:
所述目标数据存储节点基于所述第二数据和分区信息,从所述分布式数据库中确定预先存储有所述第二数据的数据存储节点;
所述目标数据存储节点将预先存储有所述第二数据的数据存储节点,确定为所述第二数据存储节点。
本发明实施例中,由于目标数据存储节点存储有分区信息,因此在目标存储过程被执行的过程中,目标数据存储节点即可直接根据处理得到的第二数据和存储的分区信息,确定预先存储有该第二数据的数据存储节点,并将预先存储有该第二数据的数据存储节点确定为用于处理该第二数据的第二数据存储节点。
如此,无需将处理得到的中间数据发送给存储节点管理器,由存储节点管理器调度下一个数据存储节点,目标数据存储节点自身可根据存储的分区信息确定下一个数据存储节点,并将中间数据发送给下一个数据存储节点进行处理,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
在具体实现中,所述基于所述第二中间数据、存储的分区信息和所述第一步骤指示信息,确定下一个数据存储节点和第二步骤指示信息,包括:
基于所述第一步骤指示信息和所述目标存储过程的拓扑信息确定所述第二步骤指示信息。
具体地,基于所述第一步骤指示信息和所述目标存储过程的拓扑信息确定所述第二步骤指示信息,包括:
所述目标数据存储节点基于所述第一步骤指示信息和所述目标存储过程的拓扑信息,确定所述目标数据存储节点需要执行的第一运算步骤在所述目标存储过程包括的多个运算步骤中的位置;
所述目标数据存储节点基于所述第一运算步骤在所述目标存储过程包括的多个运算步骤中的位置的下一个位置,确定所述第二步骤指示信息。
在另一实施例中,所述方法还包括:
当所述目标数据存储节点接收到上传的所述目标存储过程时,对所述目标存储过程进行拓扑编译,得到所述目标存储过程的拓扑信息;
所述目标数据存储节点将所述目标存储过程的拓扑信息发送给所述分布式数据库中除所述目标数据存储节点之外的其他数据存储节点。
本发明实施例中,当分布式数据库中的任一数据存储节点接收到上传的目标存储过程时,均可以对该目标存储过程进行拓扑编译,得到该目标存储过程的拓扑信息,然后将该目标存储过程的拓扑信息发送给该分布式数据库中除该数据存储节点之外的其他数据存储节点。
如此,保证了分布式数据库中的任一数据存储节点均预先存储有目标存储过程的拓扑信息,则当任一数据存储节点需要执行目标存储过程时,即能够根据存储的目标存储过程的拓扑信息确定需要执行的运算步骤,保证了在没有存储节点管理器的调度下,各个数据存储节点的顺序执行。
具体地,所述目标数据存储节点对所述目标存储过程进行拓扑编译,得到所述目标存储过程的拓扑信息,包括:
所述目标数据存储节点对所述目标存储过程进行分解处理,得到多个运算步骤,基于所述多个运算步骤和所述多个运算步骤的执行顺序确定所述目标存储过程的拓扑信息;或者,
所述目标数据存储节点对所述目标存储过程进行分解处理,得到多个运算步骤,按照所述多个运算步骤的执行顺序,在所述多个运算步骤之前增加输入步骤,并在所述多个运算步骤之后增加输出步骤,得到所述目标存储过程的拓扑信息,所述输入步骤用于对所述目标存储过程的输入数据进行输入,所述输出步骤用于对所述目标存储过程的输出数据进行输出。
第二方面,提供了一种存储过程的执行装置,所述存储过程的执行装置具有实现上述第一方面中所述存储过程的执行方法行为的功能。所述存储过程的执行装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的存储过程的执行方法。
第三方面,提供了一种存储过程的执行装置,所述存储过程的执行装置的结构中包括处理器和存储器,所述存储器用于存储支持存储过程的执行装置执行上述第一方面所提供的存储过程的执行方法的程序,以及存储用于实现上述第一方面所提供的存储过程的执行方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的存储过程的执行方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的存储过程的执行方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请提供的技术方案带来的有益效果是:
本申请中,分布式数据库中用于执行目标存储过程的多个数据存储节点中的任一数据存储节点均可以接收第一数据存储节点发送的第一数据信息,然后基于存储的目标存储过程的拓扑信息对第一数据直接进行处理,得到第二数据,基于第二数据和存储的分区信息确定用于处理第二数据的下一个存储节点,最后将第二数据信息发送给第二数据存储节点,使得下一个数据库存储基于存储的目标存储过程的拓扑信息对第二数据进行处理。也即是,每个数据存储节点均可以通过自身直接对数据进行处理,然后确定第二数据存储节点,并将数据处理结果直接发送给第二数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
附图说明
图1A是一种分布式数据库100的系统架构图;
图1B是本发明实施例提供的一种存储过程的执行系统架构图;
图1C是相关技术提供的一种存储过程的执行流程示意图;
图1D是本发明实施例提供的一个数据存储节点10的逻辑结构示意图;
图1E是本发明实施例提供的一种数据存储节点10的硬件结构示意图;
图1F是本发明实施例提供的一种存储过程的执行方法的流程图;
图1G是本发明实施例提供的一种存储过程的拓扑信息的示意图;
图1H是本发明实施例提供的另一种存储过程的拓扑信息的示意图;
图2A是本发明实施例提供的一种存储过程的执行系统架构图;
图2B是本发明实施例提供的另一种存储过程的执行方法的流程图;
图3是本发明实施例提供的另一种存储过程的执行流程示意图;
图4A是本发明实施例提供的一种存储过程的执行装置的结构示意图;
图4B是本发明实施例提供的一种处理模块402的结构示意图;
图4C是本发明实施例提供的一种确定模块403的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本发明实施例提供的存储过程执行方法进行详细说明之前,首先对本发明实施例的应用场景进行介绍。
本发明实施例应用于利用分布式数据库处理相关业务的场景中,该业务可以为查询业务、比对业务等等。以查询业务为例,可以基于分布式数据库中各数据存储节点存储的数据,利用分布式数据库查询某个人的曾祖父的年龄、查询某个人的财务情况等信息。在分布式数据库处理业务的过程中,通常需要通过调用和执行存储过程来完成业务。
在对本发明实施例的应用场景进行介绍之后,为了便于理解本发明实施例提供的存储过程的执行方法,接下来将对本发明实施例的系统架构进行介绍。
图1A是一种分布式数据库100的系统架构图,如图1A所示,分布式数据库100包括多个在物理上分散的数据存储节点10,该多个数据存储节点10可以通过网络连接。
其中,每个数据存储节点10均具有自己局部的用于存储数据的数据库,通过网络互相连接之后即可组成一个全局的逻辑上集中、物理上分布的大型数据库,即分布式数据库。具体地,每个数据存储节点10可以为终端或者服务器等能够存储数据的节点。
分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发量。其具体可以采用分库分表技术将海量的数据分片存储到分布式数据库的各个存储节点中。概括来讲,分库分表技术是指按照既定的分区策略将大表的数据分片存储到各个存储节点,或者将大表切分成各个数据量较小的业务子表,并将各个子表按照既定的分区策略存储到各个存储节点。
利用上述分布式数据库100能够处理相应业务,本发明实施例中,以所处理的业务需要通过调用和执行存储过程来完成为例。图1B是本发明实施例提供的一种存储过程的执行系统架构图,如图1B所示,该系统架构包括客户端200和分布式数据库100,客户端200和分布式数据库100之间可以通过网络连接。
实际实现中,客户端200可以向分布式数据库100发送存储过程的调用请求,则该分布式数据库100中的某个数据存储节点10即可接收到该存储过程的调用请求,并根据该存储过程的调用请求调用存储过程,然后与其他数据存储节点10交互执行该存储过程。
其中,接收该存储过程的调用请求的数据存储节点10可以由客户端200指定,也可以由分布式数据库100根据预先设置的业务处理逻辑指定,本发明实施例对此不做限定。
需要说明的是,图1B仅是以客户端200为分布式数据库100之外的实体为例进行说明,而实际应用中,客户端200还可以为分布式数据库100中的任一数据存储节点10。也即是,当任一数据存储节点10获取到用户触发的或者预设条件触发的存储过程的调用请求时,即可根据该存储过程的调用请求调用存储过程,然后与其他数据存储节点10交互执行该存储过程。
还需要说明的是,图1A和图1B仅以分布式数据库100包括3个数据存储节点10为例,本领域技术人员可以理解,图1A和图1B中示出的数据存储节点10的数目并不构成对分布式数据库100的限定,实际应用中,分布式数据库100可以包括比图示更多或更少的数据存储节点10,本发明实施例对此不做限定。
为了便于理解本发明实施例提供的存储过程的执行方法的发明点,先对相关技术提供的存储过程的执行流程进行简单介绍。图1C是相关技术提供的一种存储过程的执行流程示意图。如图1C所示,分布式数据库100至少包括数据存储节点A、数据存储节点B、数据存储节点C和数据存储节点M,且各个数据存储节点可以通过网络互相连接。
假设该分布式数据库100待执行存储过程S,且存储过程S的语义为“假如@name存在曾祖父则查询其曾祖父的年龄”,则该存储过程S包括3个运算步骤,分别为运算步骤S1:查询@name的父亲的名字,运算步骤S2:根据@name的父亲查询@name的祖父的名字,运算步骤S3:根据@name的祖父的名称查询@name的曾祖父的年龄。其中,@name为存储过程S的待输入数据,可以为任一人名。
另外,假设图1C所示的分布式数据库中的各个数据存储节点均存储有不同的数据列表,每个数据列表用于存储人名、对应的父亲的名字和父亲的年龄。也即是,不同的数据列表可以按照人名进行数据分区,从而存储在不同的存储节点中。例如,如图1C所示,数据存储节点A存储有数据列表1,数据存储节点B存储有数据列表2,数据存储节点C存储有数据列表3。而且,数据存储节点M存储有分区信息,该分区信息用于指示数据的存储位置,即可以指示不同人名的存储节点。
如果按照相关技术提供的主从控制方式执行存储过程S,则如图1C所示,当数据存储节点M接收到存储过程S的调用请求之后,数据存储节点M即可作为存储节点管理器(Master)。假设存储过程S的调用请求携带的输入数据为Z3,即@name为Z3,则该存储过程S的执行流程可以包括以下步骤1)-7):
1)数据存储节点M根据存储过程S的调用请求调用存储过程S,并确定存储过程S包括的运算步骤和执行顺序。然后,存储过程节点M基于Z3和存储的分区信息确定存储有Z3的数据存储节点A,并将Z3和运算步骤S1发送给数据存储节点A。
2)数据存储节点A基于Z3执行运算步骤S1,即从存储的数据列表1中查询Z3的父亲的名字为Z2,然后将Z2回传给数据存储过程节点M。
3)数据存储节点M基于Z2和存储的分区信息确定存储有Z2的数据存储节点B,并将Z2和运算步骤S2发送给数据存储节点B。
4)数据存储节点B基于Z2执行运算步骤S2,即从存储的数据列表2中查询Z2的父亲的名字为Z1,然后将Z1回传给数据存储过程节点M。
5)数据存储节点M基于Z1和存储的分区信息确定存储有Z1的数据存储节点C,并将Z1和运算步骤S3发送给数据存储节点C。
6)数据存储节点C基于Z1执行运算步骤S3,即从存储的数据列表3中查询Z1的父亲的年龄为85,然后将85回传给数据存储节点M。
7)数据存储节点M接收到85之后,即可将85作为该存储过程S的输出数据进行输出。
由图1C所示,数据存储节点A、数据存储节点B和数据存储节点C中的每个数据存储节点均需要从数据存储节点M接收数据,且需要将数据的处理结果再回传给数据存储节点M,即执行存储过程的各个数据存储节点与存储节点管理器之间有大量的数据传输,而且,由于需要存储节点管理器需要对数据进行汇总,再进行存储过程的各个运算步骤的调度,因此还会导致执行存储过程的各数据存储节点需要进行等待。
也即是,采用的主从控制方式在执行存储过程的过程中伴随着数据的汇总、数据存储节点的等待和大量的数据传输,因此会大大影响存储过程的执行效率和运行性能。
在对相关技术提供的存储过程的执行流程进行简单介绍之后,接下来将对本发明实施例提供的存储过程的执行流程进行简单介绍。
本发明实施例中,结合上述图1A或图1B所示的分布式数据库100,假设该分布式数据库100包括的多个数据存储节点用于执行目标存储过程,且该多个数据存储节点中的第一数据存储节点、目标数据存储节点和第二数据存储节点为顺序执行目标存储过程的三个数据存储节点,其中,目标数据存储节点可以为用于执行目标存储过程的多个数据存储节点中的任一数据存储节点,第一数据存储节点为按照目标存储过程的执行顺序排列的目标数据存储节点的上一个数据存储节点,第二数据存储节点为按照目标存储过程的执行顺序排列的目标数据存储节点的下一个数据存储节点,则目标数据存储节点可以用于执行以下步骤1)-3):
1)目标数据存储节点接收第一数据存储节点发送的第一数据信息和第一步骤指示信息,该第一数据信息为第一数据或者该第一数据的指示信息,该第一数据为该目标存储过程被执行时所需的数据,该第一步骤信息用于指示该目标数据存储节点需要执行的第一运算步骤在该目标存储过程包括的多个运算步骤中的位置;
2)目标数据存储节点基于该第一数据信息、该第一步骤指示信息和存储的该目标存储过程的拓扑信息,对该第一数据进行处理,得到第二数据,该目标存储过程的拓扑信息用于指示该目标存储过程包括的多个运算步骤和该多个运算步骤的执行顺序;
3)目标数据存储节点基于该第二数据、存储的分区信息和该第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息,并向该第二数据存储节点发送第二数据信息和该第二步骤指示信息,该分区信息用于指示数据的存储位置,该第二步骤指示信息用于指示该第二数据存储节点需要执行的第二运算步骤在该目标存储过程包括的多个运算步骤中的位置,该第二数据信息为该第二数据或者该第二数据的指示信息。
也即是,执行存储过程的每个数据存储节点均可以通过自身直接对数据进行处理,然后确定第二数据存储节点,并将数据处理结果直接发送给第二数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
在一个具体实施例中,可以在分布式数据库100中的每个数据存储节点10中配置流处理模块,并在每个数据存储节点10存储分区信息,以使每个数据存储节点10通过配置的流处理模块和存储的分区信息实现本发明实施例提供的存储过程的执行方法。
图1D是本发明实施例提供的一个数据存储节点10的逻辑结构示意图,如图1D所示,该数据存储节点10包括流处理模块11和分区信息12。流处理模块11用于执行存储过程,分区信息12用于指示数据的存储位置。
其中,分区信息12可以为列表或者分区策略等形式。
其中,流处理模块11包括拓扑管理器11a和路径规划模块11b。
拓扑管理器11a用于存储至少一个存储过程的拓扑信息,每个存储过程的拓扑信息用于指示该存储过程包括的多个运算步骤和多个运算步骤的执行顺序。进一步地,该拓扑管理器11a还可以用于对上传的目标存储过程进行拓扑编译,得到该目标存储过程的拓扑信息,并可以指示该数据存储节点10将该目标存储过程的拓扑信息发送其他数据存储节点10。
路径规划模块11b用于执行存储过程的分区调度和运算操作。分区调度是指基于数据和存储的分区信息,确定用于处理该数据的下一个存储节点。运算操作是指确定该数据存储节点10需要执行的运算步骤,并基于数据执行该运算步骤。具体可以基于步骤指示信息和存储的存储过程的拓扑信息,确定需要执行的运算步骤。
在对本发明实施例提供的存储过程的执行方法进行说明之前,先对本发明实施例涉及的数据存储节点的结构进行详细介绍。
图1E是本发明实施例提供的一种数据存储节点10的硬件结构示意图。参见图1E,该数据存储节点10包括处理器13,通信总线14,存储器15以及至少一个通信接口16。本领域技术人员可以理解,图1E中示出的数据存储节点10的结构并不构成对数据存储节点10的限定,实际应用中,数据存储节点10可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,本发明实施例对此不做限定。
处理器13可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线14可包括一通路,在上述组件之间传送信息。
存储器15可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。
存储器15可以是独立存在,通过通信总线14与处理器13相连接。存储器15也可以和处理器13集成在一起。本发明实施例中,存储器15可以用于存储数据,比如可以用于存储分区信息、存储过程的拓扑信息或者第一数据存储节点发送的信息等,并且,该存储器15也可以用于存储用于执行本发明实施例提供的存储过程的执行方法的一个或多个运行程序和/或模块。
通信接口16,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
在具体实现中,作为一种实施例,处理器13可以包括一个或多个CPU,例如图1C中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,UE还可以包括输出设备17和输入设备18。
其中,输出设备17和处理器13通信,可以以多种方式来显示信息。例如,输出设备17可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。
其中,输入设备18和处理器13通信,可以以多种方式接收用户的输入。例如,输入设备18可以是键盘、触摸屏设备或传感设备等。
上述的数据存储节点10可以是终端或者其他具有数据存储功能的节点。在具体实现中,数据存储节点10可以是手机、便携式电脑、网络服务器、掌上电脑(Personal DigitalAssistant,PDA)、平板电脑、无线用户设备(User Equipment,UE)、通信设备或者嵌入式设备等。本发明实施例不限定数据存储节点10的类型。
其中,存储器15用于存储执行本申请方案的程序代码,并由处理器13来控制执行。处理器13用于执行存储器15中存储的程序代码。例如,图1E中所示的数据存储节点10可以通过处理器13以及存储器15中的程序代码,来实现下述图1F和图2B实施例所述的方法。
接下来将结合上述图1A或图1B,对发明实施例提供的存储过程的执行方法进行详细介绍。图1F是本发明实施例提供的一种存储过程的执行方法的流程图,该方法应用于上述图1A或图1B该的分布式数据库,该分布式数据库包括的多个数据存储节点用于执行目标存储过程,该多个数据存储节点中的第一数据存储节点、目标数据存储节点和第二数据存储节点为顺序执行目标存储过程的三个数据存储节点。参见图1F,该方法包括如下步骤:
步骤101:第一数据存储节点向目标数据存储节点发送第一数据信息和第一步骤指示信息。
其中,目标数据存储节点可以用于执行目标存储过程的多个数据存储节点中的任一数据存储节点,第一数据存储节点是指按照目标存储过程的执行顺序排列的目标数据存储节点的上一个数据存储节点,第二数据存储节点是指按照目标存储过程的执行顺序排列的目标数据存储节点的下一个数据存储节点。
其中,目标存储过程可以为分布式数据库调用的任一存储过程。需要说明的是,本发明实施例所述的存储过程并不是存储数据的过程,而是一种存储在数据库中的可调用对象,类似于一种可调用的函数,实际应用中可以通过存储过程名和输入数据进行调用。存储过程实质是一组能够实现特定功能的SQL语句集合,即存储过程包括多个运算步骤,该多个运算步骤即为其对应的SQL语句集合,每个运算步骤为对应SQL语句集合中的一个SQL语句。具体地,每个运算步骤可以用于进行查询处理,当然也可以用于进行其他处理,本发明实施例对此不做限定。
其中,第一数据信息为第一数据或者第一数据的指示信息,第一数据为目标数据存储节点执行目标数据存储节点所包括的第一运算步骤时所需的数据。第一数据的指示信息可以用于指示第一数据或者第一数据的存储位置,根据第一数据的指示信息能够获取第一数据。
其中,第一步骤信息用于指示该目标数据存储节点需要执行的第一运算步骤在该目标存储过程包括的多个运算步骤中的位置,也即是,用于指示该目标数据存储节点需要执行的第一运算步骤为该目标存储过程包括的多个运算步骤中的第几个运算步骤,且该多个运算步骤为已按照执行先后顺序排列的多个运算步骤。
示例的,该第一步骤指示信息可以为数值。比如,当该第一步骤信息用于指示该目标存储过程包括的多个运算步骤中的第1个运算步骤时,该第一步骤指示信息可以为数值1。当该第一步骤信息用于指示该目标存储过程包括的多个运算步骤中的第2个运算步骤时,该第一步骤指示信息可以为数值2等。
其中,该第一数据存储节点可以为输入节点,也可以为中间节点。输入节点是指该分布式数据库中接收到目标存储过程的调用请求的数据存储节点,中间节点是指用于执行该目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点,具体为用于执行该目标数据存储节点所执行的第一运算步骤的上一个运算步骤的数据存储节点。
本发明实施例中,根据该第一数据存储节点的不同,该第一数据和该第一步骤指示信息的获取方式和含义相应有所不同,具体包括以下两种:
1)当该第一数据存储节点为输入节点时,该第一数据为该输入节点基于目标存储过程的调用请求获取的输入数据,该第一步骤指示信息为该输入节点基于该目标存储过程的调用请求确定得到,且该第一步骤指示信息用于指示该目标存储过程包括的多个运算步骤中的第一个运算步骤。
其中,该目标存储过程的调用请求用于调用该目标存储过程,可以携带该目标存储过程的标识和输入数据。该目标存储过程的标识用于唯一标识该目标存储过程,具体可以为该目标存储过程的名称或者编号等。该输入数据是指调用该目标存储过程所使用的输入参数,具体可以为用户发起业务时针对该目标存储过程输入的数据。
实际应用中,该目标存储过程的调用请求可以由用户通过客户端触发,该客户端可以为分布式数据库之外的实体,也可以为该分布式数据库中的任一数据存储节点,本发明实施例对此不做限定。
当分布式数据库中的任一数据存储节点接收到该目标存储过程的调用请求时,该数据存储节点即可作为输入节点。且该输入节点当接收到该目标存储过程的调用请求时,可以根据该目标存储过程调用请求携带的目标存储过程的标识和输入数据调用该目标存储过程,并可以执行输入步骤,该输入步骤是指在调用该目标存储过程的过程中获取输入数据。获取输入数据之后,该输入节点即可将该输入数据作为该第一数据,并基于该第一数据和存储的分区信息,确定用于处理该第一数据的第二数据存储节点即目标数据储存节点,然后向该目标数据存储节点发送第一数据信息和第一步骤指示信息。
2)当该第一数据存储节点为中间节点时,该第一数据为该中间节点基于接收的数据信息对数据进行存储过程处理得到的数据处理结果,该中间节点是指用于执行该目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点,具体为用于执行该目标数据存储节点所执行的第一运算步骤的上一个运算步骤的数据存储节点。
其中,该第一步骤指示信息为该第一数据存储节点基于接收到步骤指示信息确定得到,且该第一步骤指示信息用于指示该第一数据存储节点所执行的运算步骤的下一个运算步骤。
其中,对数据进行存储过程处理是指基于该数据执行当前需要执行的运算步骤,比如根据该数据进行查询处理,以查询与该数据相关的其他数据。
也即是,当该第一数据存储节点为中间节点时,该第一数据存储节点与该目标数据存储节点的处理方式相同,可以按照该目标数据存储节点的方式进行处理,得到第一数据信息和第一步骤指示信息,然后向该目标数据存储节点发送第一数据信息和第一步骤指示信息。
步骤102:目标数据存储节点接收第一数据存储节点发送的第一数据信息和第一步骤指示信息。
步骤103:目标数据存储节点基于该第一数据信息、该第一步骤指示信息和存储的该目标存储过程的拓扑信息,对该第一数据进行存储过程处理,得到第二数据。
其中,对第一数据进行存储过程处理是指基于该第一数据执行第一运算步骤,比如当该第一运算步骤为查询步骤时,可以根据该第一数据进行查询处理,该第二数据即为查询得到的与该第一数据相关的其他数据。
其中,目标存储过程的拓扑信息用于指示该目标存储过程内部的执行逻辑,具体用于指示该目标存储过程包括的多个运算步骤和该多个运算步骤的执行顺序,也即是,该目标存储过程的拓扑信息可以包括该目标存储过程包括的多个运算步骤,且该多个运算步骤为已按照执行先后顺序排列的多个运算步骤。
在一个实施例中,该目标存储过程的拓扑信息可以包括按照执行先后顺序排列的多个拓扑节点,该多个拓扑节点与该多个运算步骤一一对应,即每个拓扑节点用于指示该多个运算步骤中的一个运算步骤,而且,该多个拓扑节点还可以通过箭头连线相连,箭头连线用于指示该多个拓扑节点执行顺序。例如,假设目标存储过程包括3个运算步骤,则参见图1G,该目标存储过程的拓扑信息可以包括3个拓扑节点,分别为拓扑节点1、拓扑节点2和拓扑节点3,且这三个拓扑节点通过如图1G所示箭头连线相连。其中,拓扑节点1用于指示该目标存储包括的3个运算步骤中的第一个运算步骤,拓扑节点2用于指示3个运算步骤中的第二个运算步骤,拓扑节点3用于指示3个运算步骤中的第三个运步骤。
进一步地,该标存储过程的拓扑信息还可以用于指示输入步骤和输出步骤,且该输入步骤的执行顺序在该多个运算步骤之前,该多个输出步骤的执行顺序在该多个运算步骤之后。也即是,该标存储过程的拓扑信息可以包括多个执行步骤,该多个执行步骤包括按照执行先后顺序排列的输入步骤、该目标存储过程包括的多个运算步骤和输出步骤。
其中,输入步骤用于指示对目标存储过程的输入数据进行输入,具体用于在调用目标存储过程的过程中获取输入数据;输出步骤用于对目标存储过程的输出数据进行输出,具体用于将执行该目标存储过程的多个数据存储节点中的最后一个数据存储节点的数据处理结果作为输出数据进行输出。
在一个实施例中,该目标存储过程的拓扑信息可以包括按照执行先后顺序排列的多个拓扑节点,该多个拓扑节点与多个执行步骤一一对应。其中,该多个拓扑节点中的第一个拓扑节点用于指示输入步骤,最后一个拓扑节点用于指示输出步骤,第一个拓扑节点和最后一个拓扑节点之间的拓扑节点用于指示该目标存储过程包括的多个运算步骤。而且,该多个拓扑节点还可以通过箭头连线相连,箭头连线用于指示该多个拓扑节点执行顺序。
例如,假设目标存储过程包括3个运算步骤,则参见图1H,该目标存储过程的拓扑信息可以包括5个拓扑节点,分别为拓扑节点1、拓扑节点2、拓扑节点3、拓扑节点4和拓扑节点5,且这5个拓扑节点通过如图1H所示箭头连线相连。其中,拓扑节点1用于指示输入步骤,拓扑节点2、拓扑节点3、拓扑节点4分别用于指示该目标存储包括的3个运算步骤中的第一个运算步骤、第二个运算步骤和第三个运步骤,拓扑节点5用于指示输出步骤。
该目标数据存储节点存储有该目标存储过程的拓扑信息,该目标存储过程的拓扑信息可以为该目标数据存储节点在接收到上传的目标存储过程时,对该目标存储过程进行拓扑编译得到,也可以为该分布式数据库中的其他数据存储节点在接收到上传的目标存储过程时,对该目标存储过程进行拓扑编译得到该目标存储过程的拓扑信息之后,将该目标存储过程的拓扑信息向该目标数据存储节点发送得到。
也即是,当该分布式数据库中的任一数据存储节点接收到上传的目标存储过程时,均可以对该目标存储过程进行拓扑编译,得到该目标存储过程的拓扑信息,然后将该目标存储过程的拓扑信息发送给该分布式数据库中除该数据存储节点之外的其他数据存储节点。
比如,当该目标数据存储节点接收到上传的目标存储过程时,可以对该目标存储过程进行拓扑编译,得到该目标存储过程的拓扑信息,然后将该目标存储过程的拓扑信息发送给该分布式数据库中除该目标数据存储节点之外的其他数据存储节点。
具体地,任一数据存储节点可以通过配置的拓扑管理器对存储过程进行拓扑编译,并通过拓扑管理器对得到的存储过程的拓扑信息进行存储,然后通过拓扑管理器向其他的数据存储节点进行发送。
具体地,目标数据存储节点对目标存储过程进行拓扑编译,得到目标存储过程的拓扑信息可以包括以下两种实现方式:
第一种实现方式:对该目标存储过程进行分解处理,得到多个运算步骤,基于该多个运算步骤和该多个运算步骤的执行顺序确定该目标存储过程的拓扑信息。
具体地,可以对该目标存储过程以单个SQL语句为单位进行分解,得到多个SQL语句,该多个SQL语句即为该多个运算步骤。
第二种实现方式:对该目标存储过程进行分解处理,得到多个运算步骤,然后按照该多个运算步骤的执行顺序,在该多个运算步骤之前增加输入步骤,并在该多个运算步骤之后增加输出步骤,得到该目标存储过程的拓扑信息。
其中,该输入步骤用于对该目标存储过程的输入数据进行输入,该输出步骤用于对该目标存储过程的输出数据进行输出。
进一步地,当该分布式数据库中的任一数据存储节点检测到对目标存储过程的更新操作和删除操作时,还可以对已存储的目标存储过程的拓扑信息进行更新或删除,并可以指示其他数据存储节点对存储的目标存储过程的拓扑信息进行更新或删除。
具体地,任一数据存储节点可以通过配置的拓扑管理器对存储过程上传、更新或删除操作进行响应。实际应用中,用户可以在任一数据存储节点的管理系统中,执行对存储过程的上传、更新和删除操作。
在一个实施例中,当该分布式数据库中的任一数据存储节点接收到对目标存储过程的更新指令时,还可以对更新后的目标存储过程进行拓扑编译,得到更新后的目标存储过程的拓扑信息,然后将更新后的目标存储过程的拓扑信息与已存储的目标存储过程的拓扑信息进行替换。而且,该数据存储节点还可以向其他数据存储节点发送该更新后的目标存储过程的拓扑信息和更新指令,以使其他数据存储节点对存储的目标存储过程的拓扑信息进行更新,也即是,将更新后的目标存储过程的拓扑信息与已存储的目标存储过程的拓扑信息进行替换。
在另一实施例中,当该分布式数据库中的任一数据存储节点接收到对目标存储过程的删除指令时,还可以对存储的目标存储过程的拓扑信息进行删除,然后向其他数据存储节点发送该目标存储过程的拓扑信息的删除指令,以使其他数据存储节点对存储的目标存储过程的拓扑信息进行删除。
本发明实施例中,基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行处理,得到第二数据可以包括如下步骤1)-3):
1)基于该第一数据信息确定该第一数据。
具体地,基于该第一数据信息确定该第一数据可以包括以下三种实现方式:
第一种实现方式:当该第一数据信息为第一数据时,可以直接将该第一数据信息确定为该第一数据。
第二种实现方式:当该第一数据信息为该第一数据的指示信息,且该第一中间信息的指示信息用于指示该第一数据时,可以基于预设转换规则,将该第一中间信息的指示信息转换为该第一数据。
例如,当该第一数据的指示信息为该第一数据的哈希值时,即可按照预设哈希算法,将该第一数据的哈希值转换为该第一数据。
第三种实现方式:当该第一数据信息为该第一数据的指示信息,且该第一中间信息的指示信息用于指示该第一数据的存储位置时,可以基于该第一数据的指示信息,从该目标数据存储节点存储的数据中获取该第一数据。
2)基于该第一步骤指示信息和该目标存储过程的拓扑信息,确定该目标数据存储节点需要执行的第一运算步骤。
由于该第一步骤指示信息用于指示该目标数据存储节点需要执行的第一运算步骤在该目标存储过程包括的多个运算步骤中的位置,即用于指示该第一运算步骤为该多个运算步骤中的第几个运算步骤,且该目标存储过程的拓扑信息用于指示该目标存储过程包括的多个运算步骤和该多个运算步骤的执行顺序,因此,基于该第一步骤指示信息和该目标存储过程的拓扑信息,即能够确定该目标数据存储节点需要执行的第一运算步骤。
例如,假设目标存储过程包3个运算步骤,分别为按照执行先后顺序排列的运算步骤1、运算步骤2和运算步骤3,当该第一步骤指示信息用于该目标数据存储节点需要执行的第一运算步骤为该目标存储过程包括的多个运算步骤中的第2个运算步骤,则该目标数据存储节点即可基于该目标存储过程的拓扑信息,确定该目标存储过程包括的多个运算步骤中的第2个运算步骤为运算步骤2,然后将运算步骤2确定为该目标数据存储节点需要执行的第一运算步骤。
3)基于该第一数据执行该第一运算步骤,得到该第二数据。
具体地,可以基于该第一数据,执行该第一运算步骤对应的SQL语句,得到该第二数据。
例如,假设该第一数据为人名Z3,该第一运算步骤对应的SQL语句的语义为查询某个人名的父亲的名字,则该目标数据储存节点即可从存储的数据(如列表)中查询Z3的父亲的名字,得到Z2,Z2即为第二数据。
进一步地,由于目标数据存储节点可能存储有多个存储过程的拓扑信息,为了使得目标数据存储节点在接收到第一步骤指示信息之后,能够确定要基于哪个存储过程的拓扑信息来确定第一运算步骤,该第一数据存储节点向该目标数据存储节点发送第一数据信息和第一步骤指示信息的同时,还要向该目标数据存储节点发送所调用的目标存储过程的标识,相应地,该目标数据存储节点也需要向第二数据存储节点发送给目标存储过程的标识。也即是,需要在各个数据存储节点之间传递目标存储过程的标识。
进一步地,为了确定具体执行哪个存储过程,该目标存储节点还可以接收第一数据存储节点发送的目标存储过程的标识,基于目标存储过程的标识,获取目标存储过程的拓扑信息;和/或,向第二数据存储节点发送目标存储过程的标识。
其中,目标存储过程的标识用于唯一标识目标存储过程。也即是,当分布式数据库中的每个数据存储节点存储有多个存储过程的拓扑信息时,各个用于执行目标存储过程的数据存储节点之间还可以传递目标存储过程的标识,以指示下一个数据存储节点当前所执行是那个存储过程。
具体地,目标数据存储节点可以基于目标存储过程的标识,从存储的多个存储过程的拓扑信息中获取目标存储过程的拓扑信息。
在一个具体实施例中,目标数据存储节点可以在基于第一数据信息、第一步骤指示信息和存储的目标存储过程的拓扑信息对第一数据进行处理之前,接收第一数据存储节点发送的目标存储过程的标识,然后基于目标存储过程的标识,从存储的至少一个存储过程的拓扑信息中确定目标存储过程的拓扑信息。并在基于该第一数据信息、第一步骤指示信息和存储的目标存储过程的拓扑信息,对第一数据进行处理之后,向第二数据存储节点发送目标存储过程的标识,以使第二数据存储节点基于接收的目标存储过程的标识,获取目标存储过程的拓扑信息。
进一步地,第目标数据存储节点可以在向第二数据存储节点发送第二数据信息和第二步骤指示信息的同时,向该第二数据存储节点发送该目标存储过程的标识。
步骤104:目标数据存储节点基于该第二数据、存储的分区信息和该第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息。
其中,该分区信息用于指示数据的存储位置,该第二步骤指示信息用于指示该第二数据存储节点需要执行的第二运算步骤在该目标存储过程包括的多个运算步骤中的位置,也即是,用于指示该第二运算步骤为该多个运算步骤中的哪个运算步骤。
具体地,基于该第二数据、存储的分区信息和该第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息包括如下步骤1)-2):
1)基于该第一步骤指示信息和目标存储过程的拓扑信息确定该第二步骤指示信息。
具体地,可以基于该第一步骤指示信息和目标存储过程的拓扑信息,确定该目标数据存储节点需要执行的第一运算步骤在该目标存储过程包括的多个运算步骤中的位置;然后基于该第一运算步骤在该目标存储过程包括的多个运算步骤中的位置的下一个位置,确定该第二步骤指示信息。
其中,当该第一运算步骤信息用于指示该第一运算步骤为该目标存储过程包括的多个运算步骤中除最后一个运算步骤之外的其他运算步骤时,该第二步骤指示信息用于指示该第一运算步骤的下一个运算步骤;当该第一运算步骤信息用于指示该第一运算步骤为该目标存储过程包括的多个运算步骤中的最后一个运算步骤时,该第二步骤指示信息用于指示输出步骤,该输出步骤用于指示将接收到的数据作为该目标存储过程的输出数据进行输出。
2)基于该第二数据和存储的分区信息,确定用于处理该第二数据的该第二数据存储节点。
具体地,可以基于该第二数据和存储的分区信息,从该分布式数据库中确定预先存储有该第二数据的数据存储节点;然后将预先存储有该第二数据的数据存储节点,确定为该第二数据存储节点。
进一步地,该目标数据存储节点还可以在确定该第二步骤指示信息用于指示该第一运算步骤的下一个运算步骤时,执行基于该第二数据和存储的分区信息,确定用于处理该第二数据的该第二数据存储节点的步骤。而当确定该第二步骤指示信息用于指示输出步骤时,该目标数据存储节点还可以将输出节点确定为该第二数据存储节点,以便该第二数据存储节点将该第二数据作为该目标存储过程的输出数据进行输出。
为了便于目标数据存储节点确定输出节点,输入节点在向用于执行目标存储节点的中间节点发送数据信息的同时,还可以向数据发送输出节点的标识,而每个中间节点在向第二数据存储节点发送数据的同时,也可以向第二数据存储节点发送输出节点的标识,以便在任一中间节点确定第二数据存储节点用于执行输出步骤时,基于输出节点的标识确定输出节点,并将输出节点确定为第二数据存储节点。
其中,该输出节点可以由分布式数据库设置,也可以由用户设置,该输出节点与输入节点可以为相同的数据存储节点,也可以为不同的数据存储节点,本发明实施例对此不做限定。例如,可以将接收到该目标存储过程的调用请求的数据存储节点,即输入节点默认设置为输出节点。
步骤105:目标数据存储节点向第二数据存储节点发送第二数据信息和该第二步骤指示信息。
其中,该第二数据信息为该第二数据或者该第二数据的指示信息,第二数据的指示信息可以用于指示该第二数据,或者该第二数据的存储位置,根据该第二数据的指示信息能够获取该第二数据。
实际应用中,为了提高传输速率,当该第二数据的数据量较大时,可以将该第二数据转换为数据量较小的第二数据的指示信息发送,当该第二数据的数据量较小时,可以直接发送该第二数据。
本发明实施例中,当该第二数据存储节点也是用于执行该目标存储过程的中间节点时,则该第二数据存储节点的执行逻辑与该目标存储节点的执行逻辑相同,即可以直接基于该第二数据信息对该第二数据进行处理得到第三数据,然后确定能够处理该第三数据的下第二数据存储节点,并将第三数据信息发送给该下第二数据存储节点。
具体地,该第二数据存储节点可以接收该目标存储节点发送的第二数据信息和第二步骤指示信息;基于该第二数据信息、第二步骤指示信息和存储的该目标存储过程的拓扑信息,对该第二数据进行存储过程处理,得到第三数据;基于该第三数据、存储的分区信息和该第二步骤指示信息,确定用于处理该第三数据的下第二数据存储节点和第三步骤指示信息,并向第三数据存储节点发送第三数据信息和该第三步骤指示信息。其中,第三数据存储节点为按照目标存储过程的执行顺序排列的第二数据存储节点的下一个数据存储节点,该第三步骤指示信息用于指示该第三数据存储节点需要执行的第三运算步骤在该目标存储过程包括的多个运算步骤中的位置,该第三数据信息为该第二数据或者该第二数据的指示信息。
其中,该第二数据存储节点可以按照目标数据存储节点基于该第一数据信息、该第一步骤指示信息和存储的该目标存储过程的拓扑信息,对该第一数据进行存储过程处理,得到第二数据的方法,基于该第二数据信息、第二步骤指示信息和存储的该目标存储过程的拓扑信息,对该第二数据进行存储过程处理,得到第三数据,具体实现过程可以参考步骤103的相关描述,此处不再赘述。
其中,该第二数据存储节点可以按照目标数据存储节点基于该第二数据、存储的分区信息和该第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息的方法,基于该第三数据、存储的分区信息和该第二步骤指示信息,确定用于处理该第三数据的第三数据存储节点和第三步骤指示信息,具体实现过程可以参考步骤104的相关描述,此处不再赘述。
也即是,用于执行目标存储过程的任一数据存储节点都可以按照该目标数据存储节点的处理逻辑,直接对数据进行存储过程处理得到数据处理结果,然后确定用于处理该数据处理结果的下一个数据存储节点,并将数据处理结果信息发送给下一个数据存储节点,由下一个数据存储节点进行处理,而不用再回传给存储节点管理器,从而避免了数据的往返传输,减小了数据的传输消耗。
进一步地,当该第二数据存储节点为输出节点时,该第二步骤指示信息用于指示输出操作,则该第二数据存储节点即可基于第二数据信息确定第二数据,然后将第二数据作为该目标存储过程的输出数据进行输出。例如,可以将该第二数据作为该目标存储过程的输出数据发送给发起该目标存储过程的调用请求的客户端,以便通过该客户端反馈给用户。
本发明实施例中,分布式数据库中用于执行目标存储过程的多个数据存储节点中的任一数据存储节点均可以接收上一个数据存储节点发送的第一数据信息,然后基于存储的目标存储过程的拓扑信息对第一数据直接进行处理,得到第二数据,基于第二数据和存储的分区信息确定用于处理第二数据的下一个数据存储节点,最后将第二数据信息发送给下一个数据存储节点,使得下一个数据存储节点基于存储的目标存储过程的拓扑信息对第二数据进行处理。也即是,每个数据存储节点均可以通过自身直接对数据进行处理,然后确定下一个数据存储节点,并将数据处理结果直接发送给下一个数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
接下来将结合图2A所示的系统架构图,以用于执行目标存储过程的数据存储节点包括两个数据存储节点,分别为第四数据存储节点和第五数据存储节点为例,对本发明实施例提供的存储过程的执行方法进行详细介绍,其中,第四数据存储节点和第五数据存储节点的执行逻辑与上述图1F所示实施例中的目标数据存储节点的执行逻辑相同。
图2B是本发明实施例提供的另一种存储过程的执行方法的流程图,该方法应用于上述图2A所示的系统架构中,该方法包括如下步骤:
步骤201:输入节点接收目标存储过程的调用请求,根据该目标存储过程的调用请求调用该目标存储过程,并在调用该目标存储过程的过程中获取输入数据。
其中,该输入数据为该目标存储过程的调用请求携带的输入数据。
也即是,输入节点可以基于目标存储过程的调用请求执行输入步骤,输入步骤是指在调用该目标存储过程的过程中获取输入数据。
步骤202:输入节点基于输入数据和存储的分区信息,确定用于处理该输入数据的第四数据存储节点。
其中,该四数据存储节点是指按照该目标存储过程的执行顺序排列的该输入节点的下一个数据存储节点。
步骤203:输入节点向第四数据存储节点发送第一数据信息和第一步骤指示信息。
其中,该第一数据信息为第一数据或第一数据的指示信息,该第一数据为输入数据。
其中,该第一步骤指示信息由该输入节点基于该目标存储过程的调用请求确定得到,也即是,输入节点可以基于接收的目标存储过程的调用请求,确定下一个数据存储节点用于执行该目标存储过程包括的多个运算步骤中的第一个运算步骤,并基于该第一个运算步骤确定该第一步骤指示信息。也即是,该第一步骤指示信息用于指示该目标存储过程包括的多个运算步骤中的第一个运算步骤。
步骤204:第四数据存储节点基于第一数据信息、第一步骤指示信息和存储的目标存储过程的拓扑信息,对第一数据进行存储过程处理,得到第二数据。
其中,第四数据存储节点可以基于该第一数据执行该目标存储过程包括的多个运算步骤中的第一个运算步骤,得到第二数据。
步骤205:第四数据存储节点基于第二数据、存储的分区信息和第一步骤指示信息,确定用于处理第二数据的第五数据存储节点,并确定第二步骤指示信息。
其中,第五数据存储节点是指按照该目标存储过程的执行顺序排列的该第四数据存储节点的下一个数据存储节点。该第二步骤指示信息用于指示该目标存储过程包括的多个运算步骤中的第二个运算步骤。
步骤206:第四数据存储节点向第五数据存储节点发送第二数据信息和第二步骤指示信息。
步骤207:第五数据存储节点基于第二数据信息、第二步骤指示信息和存储的目标存储过程的拓扑信息,对第二数据进行存储过程处理,得到第三数据。
其中,第五数据存储节点可以基于该第二数据执行该目标存储过程包括的多个运算步骤中的第二个运算步骤,得到第三数据。
步骤208:第五数据存储节点基于第二步骤指示信息,确定用于处理第二数据的下一个数据存储节点为输出节点,并基于输出步骤确定第三步骤指示信息。
当该第二步骤指示信息用于指示该目标存储过程包括的多个运算步骤中的最后一个运算步骤时,即可确定用于处理该第二数据的下一个数据存储节点为输出节点,且该输出节点用于指示输出步骤。
步骤209:第五数据存储节点向输出节点发送第三数据信息和第三步骤指示信息。
其中,该第三数据信息为第三数据或者第三数据的指示信息,该第三步骤指示信息用于指示输出步骤。
步骤210:输出节点基于该第三数据信息和第三步骤指示信息,将第三数据作为该目标存储过程的输出数据进行输出。
需要说明的是,本发明实施例仅是以执行目标存储过程的数据存储节点包括两个数据存储节点为例进行说明,而实际应用中,执行目标存储过程的数据存储节点还可以包括更多数据存储节点,而其中每个数据存储节点均可以按照图1F所示的目标数据存储节点的执行逻辑执行,本发明实施例在此不再赘述。
本发明实施例中,用于执行存储过程的每个数据存储节点均可以通过自身直接对数据进行处理,然后确定下一个数据存储节点,并将数据处理结果直接发送给下一个数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
图3是本发明实施例提供的另一种存储过程的执行流程示意图。如图3所示,分布式数据库100至少包括数据存储节点A、数据存储节点B、数据存储节点C和数据存储节点M,且各个数据存储节点可以通过网络互相连接。
假设该分布式数据库100待执行存储过程S,且存储过程S的语义为“假如@name存在曾祖父则查询其曾祖父的年龄”,则该存储过程S包括3个运算步骤,分别为运算步骤S1:查询@name的父亲的名字,运算步骤S2:根据@name的父亲查询@name的祖父的名字,运算步骤S3:根据@name的祖父的名称查询@name的曾祖父的年龄。其中,@name为存储过程S的待输入数据,可以为任一人名。
另外,假设图3所示的分布式数据库中的各个数据存储节点均存储有不同的数据列表,每个数据列表用于存储人名、对应的父亲的名字和父亲的年龄。也即是,不同的数据列表可以按照人名进行数据分区,从而存储在不同的存储节点中。例如,如图3所示,数据存储节点A存储有数据列表1,数据存储节点B存储有数据列表2,数据存储节点C存储有数据列表3。而且,数据存储节点M存储有分区信息,该分区信息用于指示数据的存储位置,即可以指示不同人名的数据存储节点。
另外,假设图3所示的分布式数据库中的各个数据存储节点均存储有存储过程S的拓扑信息,该存储过程S的拓扑信息如图1H所示,其中,拓扑节点1用于指示输入步骤,拓扑节点2、拓扑节点3、拓扑节点4分别用于运算步骤S1、运算步骤S2和运算步骤S3,拓扑节点5用于指示输出步骤。
如果按照本发明实施例提供的存储过程的执行方法执行存储过程S,如图3所示,假设数据存储节点M接收到存储过程S的调用请求时,存储过程S的调用请求携带的输入数据为Z3,即@name为Z3,则该存储过程S的执行流程可以包括以下步骤1)-5):
1)数据存储节点M根据存储过程S的调用请求调用存储过程S,并执行输入步骤,也是在调用存储过程S的过程中后获取输入数据Z3。然后基于Z3和存储的分区信息,确定存储有Z3的数据存储节点A,并将Z3和第一步骤指示信息发送给数据存储节点A。
其中,该第一步骤指示信息用于指示存储过程S包括的多个运算步骤中的第一个运算步骤,比如,可以为数值1。
2)数据存储节点A基于Z3、第一步骤指示信息和存储的存储过程S的拓扑信息,确定数据存储节点A用于执行运算步骤S1,并基于Z3执行运算步骤S1,即从存储的数据列表1中查询Z3的父亲的名字为Z2。然后,数据存储节点A基于Z2和存储的分区信息确定存储有Z2的数据存储节点B,基于第一步骤指示信息确定第二步骤指示信息,并将Z2和第二步骤指示信息发送给数据存储节点B。
其中,第二步骤指示信息用于指示存储过程S包括的多个运算步骤中的第二个运算步骤,比如,可以为数值2。
3)数据存储节点B基于Z2、第二步骤指示信息和存储的存储过程S的拓扑信息,确定数据存储节点B用于执行运算步骤S2,并基于Z2执行运算步骤S2,即从存储的数据列表2中查询Z2的父亲的名字为Z1。然后,数据存储节点B基于Z1和存储的分区信息确定存储有Z1的数据存储节点C,基于第二步骤指示信息确定第三步骤指示信息,并将Z1和第三步骤指示信息发送给数据存储节点C。
其中,第三步骤指示信息用于指示存储过程S包括的多个运算步骤中的第三个运算步骤,比如,可以为数值3。
4)数据存储节点C基于Z1、第三步骤指示信息和存储的存储过程S的拓扑信息,确定数据存储节点C用于执行运算步骤S3,并基于Z3执行运算步骤S3,即从存储的数据列表3中查询Z1的父亲的年龄为85。然后,数据存储节点C基于第三步骤指示信息确定下一个数据存储节点为输出节点,即数据存储节点M,并基于输出步骤确定第四步骤指示信息,将85和第四步骤指示信息发送给数据存储节点M。
其中,第四步骤指示信息用于指示输出步骤,比如,可以为字符串out。
5)数据存储节点M接收到85和第四步骤指示信息之后,基于第四步骤指示信息将85作为存储过程S的输出数据进行输出。
由图3可知,相比与图1C,数据存储节点A、数据存储节点B和数据存储节点C中的每个数据存储节点可以通过自身直接对数据进行处理,然后确定下一个数据存储节点,并将数据处理结果直接发送给下一个数据存储节点,而不用再将数据处理结果回传给数据存储节点M,将每一步两次往返的数据交互减少到单次数据传输,从而大大减少了数据的传输量,减少了数据传输消耗,提高了存储过程的执行效率和运行性能。
图4A是本发明实施例提供的一种存储过程的执行装置的结构示意图,该装置应用于分布式数据库中的目标数据存储节点;该分布式数据库包括的多个数据存储节点用于执行目标存储过程,该多个数据存储节点中的第一数据存储节点、该目标数据存储节点和第二数据存储节点为顺序执行该目标存储过程的三个数据存储节点。参见图4A,该装置包括:
接收模块401,用于执行上述图1F所述实施例中步骤102执行的操作;
处理模块402,用于执行上述图1F所述实施例中步骤103执行的操作;
确定模块403,用于执行上述图1F所述实施例中步骤104执行的操作;
发送模块404,用于执行上述图1F所述实施例中步骤105执行的操作。
可选地,当该第一数据存储节点为输入节点时,该第一数据为该输入节点基于该目标存储过程的调用请求获取的输入数据,该输入节点为该分布式数据库中接收到该目标存储过程的调用请求的数据存储节点;
当该第一数据存储节点为中间节点时,该第一数据为该中间节点基于接收的数据信息对数据进行处理得到的数据处理结果,该中间节点是指用于执行该目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点。
可选地,参见图4B,该处理模块402包括:
第一确定单元4021,用于基于该第一数据信息确定该第一数据;
第二确定单元4022,用于基于该第一步骤指示信息和该目标存储过程的拓扑信息,确定该目标数据存储节点需要执行的第一运算步骤;
执行单元4023,用于基于该第一数据执行该第一运算步骤,得到该第二数据。
可选地,该第一确定单元4021用于:
当该第一数据信息为该第一数据的指示信息时,基于该第一数据的指示信息,从该目标数据存储节点存储的数据中获取该第一数据。
可选地,该接收模块401,还用于接收该第一数据存储节点发送的该目标存储过程的标识;该处理模块402,还用于基于该目标存储过程的标识,获取该目标存储过程的拓扑信息;和/或
该发送模块404,还用于向该第二数据存储节点发送该目标存储过程的标识。
可选地,当该第一步骤指示信息用于指示该第一运算步骤为该目标存储过程包括的多个运算步骤中除最后一个运算步骤之外的其他运算步骤时,该下一个位置用于指示该第一运算步骤的下一个运算步骤;
当该第一步骤指示信息用于指示该第一运算步骤为该目标存储过程包括的多个运算步骤中的最后一个运算步骤时,该下一个位置用于指示输出步骤,该输出步骤用于指示将接收到的数据作为该目标存储过程的输出数据进行输出。
可选地,参见图4C,该确定模块403包括:
第三确定单元4031,用于基于该第二数据和存储的分区信息,从该分布式数据库中确定预先存储有该第二数据的数据存储节点;
第四确定单元4032,用于将预先存储有该第二数据的数据存储节点,确定为该第二数据存储节点。
本发明实施例中,分布式数据库中用于执行目标存储过程的多个数据存储节点中的任一数据存储节点均可以接收上一个数据存储节点发送的第一数据信息,然后基于存储的目标存储过程的拓扑信息对第一数据直接进行处理,得到第二数据,基于第二数据和存储的分区信息确定用于处理第二数据的下一个数据存储节点,最后将第二数据信息发送给下一个数据存储节点,使得下一个数据存储节点基于存储的目标存储过程的拓扑信息对第二数据进行处理。也即是,每个数据存储节点均可以通过自身直接对数据进行处理,然后确定下一个数据存储节点,并将数据处理结果直接发送给下一个数据存储节点,而不用再将数据处理结果回传给数据存储节点管理器,从而大大减少了数据的传输量,提高了存储过程的执行效率和运行性能。
需要说明的是:上述实施例提供的存储过程的执行装置在执行存储过程时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的存储过程的执行装置与存储过程的执行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
在另一实施例中,还提供了一种存储过程的执行装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器被配置为执行上述图1F或图2B任一实施例所述的存储过程的执行方法。
在另一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述图1F或图2B任一实施例所述的存储过程的执行方法。
在另一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图1F或图2B任一实施例所述的存储过程的执行方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种存储过程的执行方法,其特征在于,应用于分布式数据库;所述分布式数据库包括的多个数据存储节点用于执行目标存储过程,所述多个数据存储节点中的第一数据存储节点、目标数据存储节点和第二数据存储节点为顺序执行所述目标存储过程的三个数据存储节点;所述方法包括:
所述目标数据存储节点接收所述第一数据存储节点发送的第一数据信息和第一步骤指示信息,所述第一数据信息为第一数据或者所述第一数据的指示信息,所述第一数据为所述目标存储过程被执行时所需的数据,所述第一步骤信息用于指示所述目标数据存储节点需要执行的第一运算步骤在所述目标存储过程包括的多个运算步骤中的位置;
所述目标数据存储节点基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行存储过程处理,得到第二数据,所述目标存储过程的拓扑信息用于指示所述目标存储过程包括的多个运算步骤和所述多个运算步骤的执行顺序;
所述目标数据存储节点基于所述第二数据、分区信息和所述第一步骤指示信息,确定所述第二数据存储节点和第二步骤指示信息,并向所述第二数据存储节点发送第二数据信息和所述第二步骤指示信息,所述分区信息用于指示数据的存储位置,所述第二步骤指示信息用于指示所述第二数据存储节点需要执行的第二运算步骤在所述目标存储过程包括的多个运算步骤中的位置,所述第二数据信息为所述第二数据或者所述第二数据的指示信息。
2.如权利要求1所述的方法,其特征在于,
当所述第一数据存储节点为输入节点时,所述第一数据为所述输入节点基于所述目标存储过程的调用请求获取的输入数据,所述输入节点为所述分布式数据库中接收到所述目标存储过程的调用请求的数据存储节点;
当所述第一数据存储节点为中间节点时,所述第一数据为所述中间节点基于接收的数据信息对数据进行存储过程处理得到的数据处理结果,所述中间节点是指用于执行所述目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点。
3.如权利要求1或2所述的方法,其特征在于,所述目标数据存储节点基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行存储过程处理,得到第二数据,包括:
所述目标数据存储节点基于所述第一数据信息确定所述第一数据;
所述目标数据存储节点基于所述第一步骤指示信息和所述目标存储过程的拓扑信息,确定所述目标数据存储节点需要执行的第一运算步骤;
所述目标数据存储节点基于所述第一数据执行所述第一运算步骤,得到所述第二数据。
4.如权利要求3所述的方法,其特征在于,所述目标数据存储节点基于所述第一数据信息确定所述第一数据,包括:
当所述第一数据信息为所述第一数据的指示信息时,所述目标数据存储节点基于所述第一数据的指示信息从存储的数据中获取所述第一数据。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
所述目标数据存储节点接收所述第一数据存储节点发送的所述目标存储过程的标识,
基于所述目标存储过程的标识,获取所述目标存储过程的拓扑信息;和/或,
所述目标数据存储节点向所述第二数据存储节点发送所述目标存储过程的标识。
6.如权利要求1-5任一所述的方法,其特征在于,
当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中除最后一个运算步骤之外的其他运算步骤时,所述第二步骤指示信息用于指示所述第一运算步骤的下一个运算步骤;
当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中的最后一个运算步骤时,所述第二步骤指示信息用于指示输出步骤,所述输出步骤用于指示将接收到的数据作为所述目标存储过程的输出数据进行输出。
7.如权利要求1-6任一所述的方法,其特征在于,所述目标数据存储节点基于所述第二数据、分区信息和所述第一步骤指示信息,确定所述第二数据存储节点和第二步骤指示信息,包括:
所述目标数据存储节点基于所述第二数据和分区信息,从所述分布式数据库中确定预先存储有所述第二数据的数据存储节点;
所述目标数据存储节点将预先存储有所述第二数据的数据存储节点,确定为所述第二数据存储节点。
8.一种存储过程的执行装置,其特征在于,应用于分布式数据库中的目标数据存储节点;所述分布式数据库包括的多个数据存储节点用于执行目标存储过程,所述多个数据存储节点中的第一数据存储节点、所述目标数据存储节点和第二数据存储节点为顺序执行所述目标存储过程的三个数据存储节点;所述装置包括:
接收模块,用于接收第一数据存储节点发送的第一数据信息和第一步骤指示信息,所述第一数据信息为第一数据或者所述第一数据的指示信息,所述第一数据为所述目标存储过程被执行时所需的数据,所述第一步骤信息用于指示所述目标数据存储节点需要执行的第一运算步骤在所述目标存储过程包括的多个运算步骤中的位置;
处理模块,用于基于所述第一数据信息、所述第一步骤指示信息和存储的所述目标存储过程的拓扑信息,对所述第一数据进行存储过程处理,得到第二数据,所述目标存储过程的拓扑信息用于指示所述目标存储过程包括的多个运算步骤和所述多个运算步骤的执行顺序;
确定模块,用于基于所述第二数据、存储的分区信息和所述第一步骤指示信息,确定第二数据存储节点和第二步骤指示信息,所述分区信息用于指示数据的存储位置,所述第二步骤指示信息用于指示所述第二数据存储节点需要执行的第二运算步骤在所述目标存储过程包括的多个运算步骤中的位置;
发送模块,用于向所述第二数据存储节点发送第二数据信息和所述第二步骤指示信息,所述第二数据信息为所述第二数据或者所述第二数据的指示信息。
9.如权利要求8所述的装置,其特征在于,
当所述第一数据存储节点为输入节点时,所述第一数据为所述输入节点基于所述目标存储过程的调用请求获取的输入数据,所述输入节点为所述分布式数据库中接收到所述目标存储过程的调用请求的数据存储节点;
当所述第一数据存储节点为中间节点时,所述第一数据为所述中间节点基于接收的数据信息对数据进行处理得到的数据处理结果,所述中间节点是指用于执行所述目标存储过程包括的多个运算步骤中的任一运算步骤的数据存储节点。
10.如权利要求8或9所述的装置,其特征在于,所述处理模块包括:
第一确定单元,用于基于所述第一数据信息确定所述第一数据;
第二确定单元,用于基于所述第一步骤指示信息和所述目标存储过程的拓扑信息,确定所述目标数据存储节点需要执行的第一运算步骤;
执行单元,用于基于所述第一数据执行所述第一运算步骤,得到所述第二数据。
11.如权利要求8-10任一所述的装置,其特征在于,所述第一确定单元用于:
当所述第一数据信息为所述第一数据的指示信息时,基于所述第一数据的指示信息,从所述目标数据存储节点存储的数据中获取所述第一数据。
12.如权利要求8-11任一所述的装置,其特征在于,
所述接收模块,还用于接收所述第一数据存储节点发送的所述目标存储过程的标识;
所述处理模块,还用于基于所述目标存储过程的标识,获取所述目标存储过程的拓扑信息;和/或
所述发送模块,还用于向所述第二数据存储节点发送所述目标存储过程的标识。
13.如权利要求8-12任一所述的装置,其特征在于,
当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中除最后一个运算步骤之外的其他运算步骤时,所述下一个位置用于指示所述第一运算步骤的下一个运算步骤;
当所述第一步骤指示信息用于指示所述第一运算步骤为所述目标存储过程包括的多个运算步骤中的最后一个运算步骤时,所述下一个位置用于指示输出步骤,所述输出步骤用于指示将接收到的数据作为所述目标存储过程的输出数据进行输出。
14.如权利要求8-13任一所述的装置,其特征在于,所述确定模块包括:
第三确定单元,用于基于所述第二数据和存储的分区信息,从所述分布式数据库中确定预先存储有所述第二数据的数据存储节点;
第四确定单元,用于将预先存储有所述第二数据的数据存储节点,确定为所述第二数据存储节点。
15.一种存储过程的执行装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器被配置为执行权利要求1-7所述的任一项方法的步骤。
16.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710892803.6A CN107729421B (zh) | 2017-09-27 | 2017-09-27 | 存储过程的执行方法、装置及存储介质 |
PCT/CN2018/087384 WO2019062156A1 (zh) | 2017-09-27 | 2018-05-17 | 存储过程的执行方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710892803.6A CN107729421B (zh) | 2017-09-27 | 2017-09-27 | 存储过程的执行方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107729421A true CN107729421A (zh) | 2018-02-23 |
CN107729421B CN107729421B (zh) | 2019-11-15 |
Family
ID=61207446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710892803.6A Active CN107729421B (zh) | 2017-09-27 | 2017-09-27 | 存储过程的执行方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107729421B (zh) |
WO (1) | WO2019062156A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019062156A1 (zh) * | 2017-09-27 | 2019-04-04 | 华为技术有限公司 | 存储过程的执行方法、装置及存储介质 |
CN111611251A (zh) * | 2020-04-24 | 2020-09-01 | 华智众创(北京)投资管理有限责任公司 | 一种数据处理系统 |
CN116089823A (zh) * | 2023-03-29 | 2023-05-09 | 成都信息工程大学 | 一种基于大数据的智慧社区可视化实时监管方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636855B2 (en) * | 2001-03-09 | 2003-10-21 | International Business Machines Corporation | Method, system, and program for accessing stored procedures in a message broker |
CN102523249A (zh) * | 2011-11-24 | 2012-06-27 | 哈尔滨工业大学 | 基于Web的分布式远程仿真系统及仿真方法 |
CN102955801A (zh) * | 2011-08-25 | 2013-03-06 | 中兴通讯股份有限公司 | 基于分布式数据库系统的数据控制方法及系统 |
CN105164677A (zh) * | 2013-03-15 | 2015-12-16 | 微软技术许可有限责任公司 | 在并行数据库处执行存储过程 |
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1152338C (zh) * | 2001-07-20 | 2004-06-02 | 华为技术有限公司 | 一种并行处理分布式数据库的方法和装置 |
US8892599B2 (en) * | 2012-10-24 | 2014-11-18 | Marklogic Corporation | Apparatus and method for securing preliminary information about database fragments for utilization in mapreduce processing |
CN106250566A (zh) * | 2016-08-31 | 2016-12-21 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库及其数据运算的管理方法 |
CN107729421B (zh) * | 2017-09-27 | 2019-11-15 | 华为技术有限公司 | 存储过程的执行方法、装置及存储介质 |
-
2017
- 2017-09-27 CN CN201710892803.6A patent/CN107729421B/zh active Active
-
2018
- 2018-05-17 WO PCT/CN2018/087384 patent/WO2019062156A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636855B2 (en) * | 2001-03-09 | 2003-10-21 | International Business Machines Corporation | Method, system, and program for accessing stored procedures in a message broker |
CN102955801A (zh) * | 2011-08-25 | 2013-03-06 | 中兴通讯股份有限公司 | 基于分布式数据库系统的数据控制方法及系统 |
CN102523249A (zh) * | 2011-11-24 | 2012-06-27 | 哈尔滨工业大学 | 基于Web的分布式远程仿真系统及仿真方法 |
CN105164677A (zh) * | 2013-03-15 | 2015-12-16 | 微软技术许可有限责任公司 | 在并行数据库处执行存储过程 |
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019062156A1 (zh) * | 2017-09-27 | 2019-04-04 | 华为技术有限公司 | 存储过程的执行方法、装置及存储介质 |
CN111611251A (zh) * | 2020-04-24 | 2020-09-01 | 华智众创(北京)投资管理有限责任公司 | 一种数据处理系统 |
CN111611251B (zh) * | 2020-04-24 | 2021-06-29 | 华智众创(北京)投资管理有限责任公司 | 一种数据处理系统 |
CN116089823A (zh) * | 2023-03-29 | 2023-05-09 | 成都信息工程大学 | 一种基于大数据的智慧社区可视化实时监管方法 |
CN116089823B (zh) * | 2023-03-29 | 2023-06-20 | 成都信息工程大学 | 一种基于大数据的智慧社区可视化实时监管方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107729421B (zh) | 2019-11-15 |
WO2019062156A1 (zh) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102415845B1 (ko) | 사물 인터넷 리소스 구독 방법, 디바이스, 및 시스템 | |
CN109976667B (zh) | 一种镜像管理方法、装置及系统 | |
CN108228817B (zh) | 数据处理方法、装置和系统 | |
US20180373767A1 (en) | Database table conversion | |
US20200159708A1 (en) | Data Storage Method and Apparatus, and Storage Medium | |
KR100671506B1 (ko) | 모바일 미들웨어 및 이를 이용한 비즈니스 로직 처리 방법 | |
US20110264704A1 (en) | Methods and Systems for Deleting Large Amounts of Data From a Multitenant Database | |
US20180365614A1 (en) | Dynamic directed graph workflows | |
CN107729421B (zh) | 存储过程的执行方法、装置及存储介质 | |
US20130325945A1 (en) | Community notification based on profile update | |
CN112685499B (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN111930770A (zh) | 数据查询方法、装置及电子设备 | |
CN113127564B (zh) | 一种参数同步方法和装置 | |
CN112579319A (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
CN112105026B (zh) | 一种授权控制的方法、装置以及存储介质 | |
US20210399986A1 (en) | Data communication method, server device, client device and medium | |
CN113076186B (zh) | 任务处理的方法、装置、电子设备和存储介质 | |
JP2013127798A (ja) | 分散型システム中に配置されたサービスオブジェクトのためのユーザインターフェース | |
CN113190517A (zh) | 数据集成方法、装置、电子设备和计算机可读介质 | |
CN113439418A (zh) | 更改资源状态的方法、系统、终端及存储介质 | |
CN115277707B (zh) | 业务处理方法、装置、电子设备和存储介质 | |
CN108431769B (zh) | 无停机时间的数据库和服务升级 | |
CN111400060B (zh) | 设备联动方法、装置、服务器和介质 | |
CN113157722A (zh) | 一种数据处理方法、装置、服务器、系统及存储介质 | |
CN113760487A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220214 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |