一种存储过程的运行方法、装置,数据库系统及存储介质与流程

文档序号:24824794发布日期:2021-04-27 15:39阅读:62来源:国知局
一种存储过程的运行方法、装置,数据库系统及存储介质与流程

1.本申请涉及数据库领域,例如涉及一种存储过程的运行方法、装置,数据库系统及存储介质。


背景技术:

2.存储过程(stored procedure)是存储于数据库系统中的一组能够完成特定功能的结构化查询语言(structured query language,sql)语句集,包括sql语句及流程控制语句。在分布式数据库中,对于存储过程的执行和sql的执行,需要分别访问不同的引擎,因此会导致应用存在限定,即应用中sql的执行与存储过程的执行需要访问分布式数据库中的不同部件。另外,在部分分布式数据库中,sql执行引擎与存储过程的执行紧密耦合,会导致其中一个发生故障引起整个功能故障。在很多在线业务场景中,sql执行引擎需要保证具有高可靠、高可用性,不能因为加入分布式存储过程功能而引起sql执行引擎的不稳定。


技术实现要素:

3.本申请提供一种存储过程的运行方法、装置,数据库系统及存储介质,能够在分布式数据库中实现分布式存储过程的运行,同时保证了sql执行引擎的稳定性。
4.本申请实施例提供一种存储过程的运行方法,包括:
5.结构化查询语言sql处理引擎向存储过程引擎发送存储过程执行请求消息;
6.sql处理引擎多次执行存储过程引擎发送的sql执行请求消息;
7.sql处理引擎接收存储过程引擎发送的存储过程执行响应消息。
8.本申请实施例提供一种存储过程的运行方法,包括:
9.存储过程引擎接收结构化查询语言sql处理引擎发送的存储过程执行请求消息;
10.存储过程引擎多次构造并向sql处理引擎发送sql执行请求消息;
11.存储过程引擎向sql处理引擎发送存储过程执行响应消息。
12.本申请实施例提供一种sql处理引擎,包括:处理器,处理器用于在执行计算机程序时实现上述任一实施例的方法。
13.本申请实施例提供一种存储过程引擎,包括:处理器,处理器用于在执行计算机程序时实现上述任一实施例的方法。
14.本申请实施例提供一种数据库系统,数据库系统包括:上述任一实施例的存储过程引擎和上述任一实施例的结构化查询语言sql执行引擎。
15.本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的方法。
16.关于本申请的以上实施例和其他方面以及其实现方式,在附图说明、具体实施方式和权利要求中提供更多说明。
附图说明
17.图1为一实施例提供的一种数据库系统的结构示意图;
18.图2为一实施例提供的一种存储过程的运行方法的流程示意图;
19.图3为一实施例提供的另一种存储过程的运行方法的流程示意图;
20.图4为一实施例提供的一种存储过程的运行方法的交互示意图;
21.图5为一实施例提供的另一种存储过程的运行方法的交互示意图;
22.图6为一实施例提供的又一种存储过程的运行方法的交互示意图;
23.图7为一实施例提供的一种存储过程的运行装置的结构示意图;
24.图8为一实施例提供的另一种存储过程的运行装置的结构示意图;
25.图9为一实施例提供的一种sql处理引擎的结构示意图;
26.图10为一实施例提供的一种存储过程引擎的结构示意图。
具体实施方式
27.下文中将结合附图对本申请的实施例进行详细说明。
28.存储过程是存储于数据库系统中的一组能够完成特定功能的sql语句集,存储过程可以包括sql语句(sql语句通常为一个表达式,该表达式可以包括至少一个子表达式)和流程控制语句(一个流程控制语句可以构成一个流程控制语句块,该流程控制语句块可以包括多个sql语句)。
29.在传统关系型数据库中,只有一个数据存储结点,存储过程存储在这个结点上。sql与存储过程在执行时,访问、修改等操作的都是此存储结点中的数据。而在分布式数据库中,存在多个数据存储结点,存储过程的执行需要协调所有的数据存储结点来完成,而不能是简单地把存储过程放到各个数据存储结点上独立执行。在现有的分布式数据库中,对于存储过程的执行和sql的执行,需要分别访问不同的引擎(例如:对于存储过程的执行需要访问过程语言(procedural language,pl)引擎,对于sql的执行需要访问sql执行引擎),因此会导致应用存在限定,即应用中sql的执行与存储过程的执行需要访问分布式数据库中的不同部件。另外,在部分分布式数据库中,sql执行引擎与存储过程的执行紧密耦合,会导致其中一个发生故障引起整个功能故障。在很多在线业务场景中,sql执行引擎需要保证具有高可靠、高可用性,不能因为加入分布式存储过程功能而引起sql执行引擎的不稳定。
30.图1为一实施例提供的一种数据库系统的结构示意图。如图1所示,该数据库系统包括存储过程引擎和sql执行引擎,存储过程引擎用于运行存储过程,具有执行存储过程流程控制的功能,属于分布式数据库的存储过程执行引擎模块;而sql执行引擎用于执行存储过程中的sql语句,具有sql的执行能力,属于分布式数据库的sql执行模块。sql执行引擎向用户提供接入点,接收用户请求,实现单一接入点方式(即应用程序访问这个接入点来执行用户请求的sql与存储过程,不需要对应用程序进行定制化)。sql执行引擎还与n个数据存储结点(db)连接。在本申请实施例中,提供一种可运行于上述数据库系统的存储过程的运行方法,能够在分布式数据库中实现分布式存储过程的运行,同时保证了sql执行引擎的稳定性。
31.本申请中术语“系统”和“网络”在本申请中常被可互换使用。本申请下述各个实施例可以单独执行,各个实施例之间也可以相互结合执行,本申请实施例对此不作具体限制。
32.下面,对存储过程的运行方法、装置,数据库系统及其技术效果进行描述。
33.图2为一实施例提供的一种存储过程的运行方法的流程示意图,如图2所示,本实施例提供的方法适用于sql处理引擎,该方法包括如下步骤。
34.s110、sql处理引擎向存储过程引擎发送存储过程执行请求消息。
35.在一实施例中,在步骤s110执行前,sql处理引擎接收用户输入的请求消息。用户输入的请求消息可以包括sql执行请求消息和存储过程执行请求消息中的至少一个。若用户输入的请求消息为sql执行请求消息,则sql处理引擎直接执行sql执行请求消息;若用户输入的请求消息为存储过程执行请求消息,则sql处理引擎继续执行步骤s110。
36.sql处理引擎可以通过解析用户输入的请求消息来识别用户输入的请求消息是sql执行请求消息还是存储过程执行请求消息。
37.s120、sql处理引擎多次执行存储过程引擎发送的sql执行请求消息。
38.在一实施例中,步骤s120可以包括如下步骤。
39.步骤a)sql处理引擎接收存储过程引擎发送的sql执行请求消息;
40.步骤b)sql处理引擎处理sql执行请求消息;
41.步骤c)sql处理引擎向存储过程引擎发送sql执行响应消息;
42.步骤d)sql处理引擎接收存储过程引擎发送的sql结果集请求消息;
43.步骤e)sql处理引擎根据sql结果集请求消息,向存储过程引擎发送sql结果集响应消息,sql结果集响应消息携带sql的执行结果。
44.步骤f)sql处理引擎接收存储过程引擎发送的sql结果释放指示消息;
45.步骤g)sql处理引擎根据sql结果释放指示消息,释放sql结果集。
46.sql处理引擎返回执行步骤a),直至存储过程引擎不再发送sql执行请求消息。
47.在一实施例中,若sql处理引擎在执行存储过程引擎发送的sql执行请求消息时出错,则sql处理引擎向存储过程引擎发送错误提示消息。
48.s130、sql处理引擎接收存储过程引擎发送的存储过程执行响应消息。
49.在一实施例中,当sql处理引擎接收到存储过程引擎发送的存储过程执行响应消息后,sql处理引擎将最终的存储过程执行结果反馈给用户。
50.图3为一实施例提供的另一种存储过程的运行方法的流程示意图,如图3所示,本实施例提供的方法适用于存储过程引擎,该方法包括如下步骤。
51.s210、存储过程引擎接收sql处理引擎发送的存储过程执行请求消息。
52.s220、存储过程引擎多次构造并向sql处理引擎发送sql执行请求消息。
53.在一实施例中,步骤s220可以包括如下步骤。
54.步骤a)存储过程引擎根据存储过程执行请求消息,构造sql执行请求消息;
55.步骤b)存储过程引擎向sql处理引擎发送sql执行请求消息;
56.步骤c)存储过程引擎接收sql处理引擎发送的sql执行响应消息;
57.步骤d)存储过程引擎向sql处理引擎发送sql结果集请求消息;
58.步骤e)存储过程引擎接收sql处理引擎发送的sql结果集响应消息,sql结果集响应消息携带sql的执行结果。
59.步骤f)存储过程引擎向sql处理引擎发送sql结果释放指示消息。
60.存储过程引擎返回执行步骤a),直至存储过程引擎不再构造sql执行请求消息。
61.s230、存储过程引擎向sql处理引擎发送存储过程执行响应消息。
62.在一实施例中,若存储过程引擎在执行存储过程时出错,则存储过程引擎将错误信息写入存储过程执行响应消息中。
63.下面罗列一些交互实施方式,用于说明图2和图3描述的存储过程的运行方法。
64.图4为一实施例提供的一种存储过程的运行方法的交互示意图,如图4所示,该方法包括如下步骤。
65.s310、sql处理引擎向存储过程引擎发送存储过程执行请求消息。
66.在一实施例中,在步骤s310执行前,sql处理引擎接收用户输入的请求消息。用户输入的请求消息可以包括sql执行请求消息和存储过程执行请求消息中的至少一个。若用户输入的请求消息为sql执行请求消息,则sql处理引擎直接执行sql执行请求消息;若用户输入的请求消息为存储过程执行请求消息,则sql处理引擎继续执行步骤s310。
67.sql处理引擎可以通过解析用户输入的请求消息来识别用户输入的请求消息是sql执行请求消息还是存储过程执行请求消息。
68.在一实施例中,存储过程执行请求消息包括call语句和参数信息。参数信息包括出参信息、入参信息和出入参信息中的至少一项。
69.s311、存储过程引擎接收sql处理引擎发送的存储过程执行请求消息。
70.s312、存储过程引擎根据存储过程执行请求消息,构造sql执行请求消息。
71.存储过程引擎在接收到存储过程执行请求消息后,调用内部处理过程来执行该存储过程,当在执行中遇到sql指令时,存储过程引擎会构造出完整的sql语句(即sql执行请求消息),然后发送给sql处理引擎执行,并等待sql处理引擎返回执行结果。
72.s313、存储过程引擎向sql处理引擎发送sql执行请求消息。
73.s314、sql处理引擎接收存储过程引擎发送的sql执行请求消息。
74.s315、sql处理引擎处理sql执行请求消息。
75.s316、sql处理引擎向存储过程引擎发送sql执行响应消息。
76.s317、存储过程引擎接收sql处理引擎发送的sql执行响应消息。
77.存储过程引擎在接收到sql处理引擎返回的执行结果(即sql执行响应消息)后,从等待点开始继续执行该存储过程,直至遇到下一个sql指令。当遇到下一个sql指令时,则返回执行步骤s312-s317,直至该存储过程执行完毕。
78.在一实施例中,当存储过程引擎需要sql执行结果时,还可以包括如下步骤s318-s324。
79.s318、存储过程引擎向sql处理引擎发送sql结果集请求消息。
80.s319、sql处理引擎接收存储过程引擎发送的sql结果集请求消息。
81.s320、sql处理引擎根据sql结果集请求消息,向存储过程引擎发送sql结果集响应消息,sql结果集响应消息携带sql的执行结果。
82.s321、存储过程引擎接收sql处理引擎发送的sql结果集响应消息。
83.s322、存储过程引擎向sql处理引擎发送sql结果释放指示消息。
84.s323、sql处理引擎接收存储过程引擎发送的sql结果释放指示消息。
85.s324、sql处理引擎根据sql结果释放指示消息,释放sql结果集。
86.s325、存储过程引擎向sql处理引擎发送存储过程执行响应消息。
87.当存储过程引擎执行完整个存储过程后,存储过程引擎向sql处理引擎发送存储过程执行响应消息。存储过程执行响应消息包括出参信息。
88.s326、sql处理引擎接收存储过程引擎发送的存储过程执行响应消息。
89.在一实施例中,当sql处理引擎接收到存储过程引擎发送的存储过程执行响应消息后,sql处理引擎将最终的存储过程执行结果反馈给用户。
90.如此,能够实现分布式存储过程的存储过程引擎和sql处理引擎解耦。通过sql处理引擎来执行存储过程引擎动态生成的每条sql语句,来实现整个存储过程的分布式执行。
91.图5为一实施例提供的另一种存储过程的运行方法的交互示意图,与图4所示的存储过程的运行方法不同的是,图5所示的sql处理引擎在执行sql执行请求消息时出错,sql处理引擎可以向存储过程引擎发送错误提示消息,而不是直接给用户提示出现错误。存储过程是否能继续执行,需要由存储过程引擎中的处理过程来决定,因为存储过程的定义中可能有错误处理的定义。
92.图6为一实施例提供的又一种存储过程的运行方法的交互示意图,与图4所示的存储过程的运行方法不同的是,图6所示的存储过程引擎在执行存储过程时出错,存储过程引擎可以将错误信息写入存储过程执行响应消息中。
93.如此,可以使sql处理引擎和存储过程引擎相互隔离,当其中一个发生故障时,不会使另一个也发生故障,也不会影响sql处理引擎处理用户的其它业务,保证了sql执行引擎的稳定性。
94.图7为一实施例提供的一种存储过程的运行装置的结构示意图,该存储过程的运行装置可以配置于sql处理引擎中,如图7所示,包括发送模块10,处理模块11和接收模块12。
95.发送模块10,设置为向存储过程引擎发送存储过程执行请求消息;
96.处理模块11,设置为多次执行存储过程引擎发送的sql执行请求消息;
97.接收模块12,设置为接收存储过程引擎发送的存储过程执行响应消息。
98.本实施例提供的存储过程的运行装置为实现上述实施例的存储过程的运行方法,本实施例提供的存储过程的运行装置实现原理和技术效果类似,此处不再赘述。
99.在一实施例中,发送模块10、处理模块11和接收模块12是设置为执行下述步骤a)-步骤c),直至存储过程引擎不再发送sql执行请求消息,步骤a)-步骤c)包括:
100.步骤a)接收模块12接收存储过程引擎发送的sql执行请求消息;
101.步骤b)处理模块11处理sql执行请求消息;
102.步骤c)发送模块10向存储过程引擎发送sql执行响应消息。
103.在一实施例中,接收模块12,还设置为接收存储过程引擎发送的sql结果集请求消息;
104.发送模块10,还设置为根据sql结果集请求消息,向存储过程引擎发送sql结果集响应消息,sql结果集响应消息携带sql的执行结果。
105.在一实施例中,接收模块12,还设置为接收存储过程引擎发送的sql结果释放指示消息;
106.处理模块11,还设置为根据sql结果释放指示消息,释放sql结果集。
107.在一实施例中,发送模块10,还设置为若处理模块11在执行存储过程引擎发送的
sql执行请求消息时出错,则向存储过程引擎发送错误提示消息。
108.在一实施例中,接收模块12,还设置为在发送模块10向存储过程引擎发送存储过程执行请求消息前,获取存储过程执行请求消息。
109.图8为一实施例提供的另一种存储过程的运行装置的结构示意图,该存储过程的运行装置可以配置于存储过程引擎中,如图8所示,包括接收模块20,处理模块21和发送模块22。
110.接收模块20,设置为接收结构化查询语言sql处理引擎发送的存储过程执行请求消息。
111.处理模块21,设置为多次构造sql执行请求消息。
112.发送模块22,设置为向sql处理引擎发送sql执行请求消息;以及向sql处理引擎发送存储过程执行响应消息。
113.本实施例提供的存储过程的运行装置为实现上述实施例的存储过程的运行方法,本实施例提供的存储过程的运行装置实现原理和技术效果类似,此处不再赘述。
114.在一实施例中,接收模块20,处理模块21和发送模块22是设置为执行下述步骤a)-步骤c),直至处理模块21不再构造sql执行请求消息,步骤a)-步骤c)包括:
115.步骤a)处理模块21根据存储过程执行请求消息,构造sql执行请求消息;
116.步骤b)发送模块22向sql处理引擎发送sql执行请求消息;
117.步骤c)接收模块20接收sql处理引擎发送的sql执行响应消息。
118.在一实施例中,发送模块22,还设置为向sql处理引擎发送sql结果集请求消息;
119.接收模块20,还设置为接收sql处理引擎发送的sql结果集响应消息,sql结果集响应消息携带sql的执行结果。
120.在一实施例中,发送模块22,还设置为向sql处理引擎发送sql结果释放指示消息。
121.在一实施例中,处理模块21,还设置为若处理模块21在执行存储过程时出错,则将错误信息写入存储过程执行响应消息中。
122.本申请实施例提供一种sql处理引擎,包括:处理器,处理器用于在执行计算机程序时实现上述任一实施例的方法。图9为一实施例提供的一种sql处理引擎的结构示意图,如图9所示,该sql处理引擎包括处理器30、存储器31和通信接口32;sql处理引擎中处理器30的数量可以是一个或多个,图9中以一个处理器30为例;sql处理引擎中的处理器30、存储器31、通信接口32可以通过总线或其他方式连接,图9中以通过总线连接为例。总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。
123.存储器31作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本申请实施例中的方法对应的程序指令/模块。处理器30通过运行存储在存储器31中的软件程序、指令以及模块,从而执行sql处理引擎的至少一种功能应用以及数据处理,即实现上述的方法。
124.存储器31可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据sql处理引擎的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器31可包括
相对于处理器30远程设置的存储器,这些远程存储器可以通过网络连接至sql处理引擎。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
125.通信接口32可设置为数据的接收与发送。
126.本申请实施例提供一种存储过程引擎,包括:处理器,处理器用于在执行计算机程序时实现上述任一实施例的方法。图10为一实施例提供的一种存储过程引擎的结构示意图,如图10所示,该存储过程引擎包括处理器40、存储器41和通信接口42;存储过程引擎中处理器40的数量可以是一个或多个,图10中以一个处理器40为例;存储过程引擎中的处理器40、存储器41、通信接口42可以通过总线或其他方式连接,图10中以通过总线连接为例。总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。
127.存储器41作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本申请实施例中的方法对应的程序指令/模块。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行存储过程引擎的至少一种功能应用以及数据处理,即实现上述的方法。
128.存储器41可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据存储过程引擎的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至存储过程引擎。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
129.通信接口42可设置为数据的接收与发送。
130.本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如本申请任意实施例所提供的方法。
131.本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质包括(非穷举的列表):具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、可擦式可编程只读存储器(electrically erasable,programmable read-only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
132.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,数据信号中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
133.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限
于无线、电线、光缆、射频(radio frequency,rf)等等,或者上述的任意合适的组合。
134.可以以一种或多种程序设计语言或多种程序设计语言组合来编写用于执行本公开操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++、ruby、go,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(local area network,lan)或广域网(wide area network,wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
135.本领域内的技术人员应明白,术语用户终端涵盖任何适合类型的无线用户设备,例如移动电话、便携数据处理装置、便携网络浏览器或车载移动台。
136.一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
137.本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(instruction set architecture,isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
138.本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(rom)、随机访问存储器(ram)、光存储器装置和系统(数码多功能光碟dvd或cd光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、可编程逻辑器件((field-programmable gate array,fgpa)以及基于多核处理器架构的处理器。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1