一种数据库事务处理方法、装置、电子设备及存储介质与流程

文档序号:32862817发布日期:2023-01-07 01:08阅读:21来源:国知局
一种数据库事务处理方法、装置、电子设备及存储介质与流程

1.本技术涉及数据库技术领域,尤其涉及一种数据库事务处理方法、装置、电子设备及存储介质。


背景技术:

2.目前,随着互联网技术的发展,用户对数据库服务的要求越来越高,所以常常会出现一个数据库服务需要多个数据库联合作业实现的情况,导致数据库事务的处理越来越复杂。
3.在现有技术中,在一个数据库事务需要多个数据库联合作业实现的情况下,当任一数据库的数据库操作执行失败,将对所有相关数据库进行数据回滚,并重新执行该数据库事务。
4.但是,在相关数据库较多,数据库事务包含的数据库操作也较多的情况下,若基于现有技术处理数据库事务,可能导致大量的相关数据库均进行多次数据回滚,不利于保证数据库事务的处理效率。


技术实现要素:

5.本技术提供一种数据库事务处理方法、装置、电子设备及存储介质,以解决现有技术不利于保证数据库事务的处理效率等缺陷。
6.本技术第一个方面提供一种数据库事务处理方法,包括:
7.获取参与目标数据库事务处理的若干个数据库的操作执行结果;
8.当任一所述数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,所述接口优先级表征事务操作对所述目标数据库事务的影响程度;
9.当所述失败操作的接口优先级低于各所述已完成操作的接口优先级时,重新执行该失败操作,此时不对任一所述已完成操作对应的数据库进行数据回滚;
10.当所述目标数据库事务包含的所有操作均完成时,确定所述目标数据库事务已完成处理,得到所述目标数据库事务的处理结果。
11.可选的,还包括:
12.当所述失败操作的接口优先级高于任一所述已完成操作的接口优先级时,对该已完成操作所对应的数据库进行数据回滚;
13.重复执行该已完成操作和失败操作。
14.可选的,还包括:
15.判断所述失败操作的接口优先级是否高于所有未执行操作的接口优先级;
16.当所述失败操作的接口优先级高于所有未执行操作的接口优先级时,暂停所有所述未执行操作,直到所述失败操作完成重复执行。
17.可选的,还包括:
18.当所述失败操作的接口优先级低于任一所述未执行操作的接口优先级时,正常执行该未执行操作。
19.可选的,在获取参与目标数据库事务处理的若干个数据库的操作执行结果之前,所述方法还包括:
20.获取用户的服务请求;
21.根据所述服务请求,确定所述用户的目标数据库事务,与参与目标数据库事务处理的若干个数据库建立接口连接;
22.根据所述目标数据库事务包括的操作内容,调用所述若干个数据库的服务接口,以基于所述服务接口,在所述若干个数据库执行相应的事务操作。
23.可选的,所述检测失败操作的接口优先级和已完成操作的接口优先级,包括:
24.获取所述失败操作对应的服务接口调用结果和所述已完成操作对应的服务接口调用结果;
25.根据所述失败操作对应的服务接口调用结果和所述已完成操作对应的服务接口调用结果,确定所述检测失败操作的接口优先级和已完成操作的接口优先级。
26.可选的,所述与参与目标数据库事务处理的若干个数据库建立接口连接,包括:
27.获取所述参与目标数据库事务处理的若干个数据库的连接信息;其中,所述连接信息至少包括数据库名称、数据库ip和数据库端口;
28.根据所述连接信息,与所述若干个数据库建立接口连接。
29.本技术第二个方面提供一种数据库事务处理装置,包括:
30.获取模块,用于获取参与目标数据库事务处理的若干个数据库的操作执行结果;
31.检测模块,用于当任一所述数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,所述接口优先级表征事务操作对所述目标数据库事务的影响程度;
32.处理模块,用于当所述失败操作的接口优先级低于各所述已完成操作的接口优先级时,重新执行该失败操作,此时不对任一所述已完成操作对应的数据库进行数据回滚;
33.确定模块,用于当所述目标数据库事务包含的所有操作均完成时,确定所述目标数据库事务已完成处理,得到所述目标数据库事务的处理结果。
34.可选的,所述处理模块,还用于:
35.当所述失败操作的接口优先级高于任一所述已完成操作的接口优先级时,对该已完成操作所对应的数据库进行数据回滚;
36.重复执行该已完成操作和失败操作。
37.可选的,所述处理模块,还用于:
38.判断所述失败操作的接口优先级是否高于所有未执行操作的接口优先级;
39.当所述失败操作的接口优先级高于所有未执行操作的接口优先级时,暂停所有所述未执行操作,直到所述失败操作完成重复执行。
40.可选的,所述处理模块,还用于:
41.当所述失败操作的接口优先级低于任一所述未执行操作的接口优先级时,正常执行该未执行操作。
42.可选的,所述获取模块,还用于:
43.获取用户的服务请求;
44.根据所述服务请求,确定所述用户的目标数据库事务,与参与目标数据库事务处理的若干个数据库建立接口连接;
45.根据所述目标数据库事务包括的操作内容,调用所述若干个数据库的服务接口,以基于所述服务接口,在所述若干个数据库执行相应的事务操作。
46.可选的,所述检测模块,具体用于:
47.获取所述失败操作对应的服务接口调用结果和所述已完成操作对应的服务接口调用结果;
48.根据所述失败操作对应的服务接口调用结果和所述已完成操作对应的服务接口调用结果,确定所述检测失败操作的接口优先级和已完成操作的接口优先级。
49.可选的,所述获取模块,具体用于:
50.获取所述参与目标数据库事务处理的若干个数据库的连接信息;其中,所述连接信息至少包括数据库名称、数据库ip和数据库端口;
51.根据所述连接信息,与所述若干个数据库建立接口连接。
52.本技术第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
53.所述存储器存储计算机执行指令;
54.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
55.本技术第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
56.本技术技术方案,具有如下优点:
57.本技术提供一种数据库事务处理方法、装置、电子设备及存储介质,该方法包括:获取参与目标数据库事务处理的若干个数据库的操作执行结果;当任一数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,接口优先级表征事务操作对目标数据库事务的影响程度;当失败操作的接口优先级低于各已完成操作的接口优先级时,重新执行该失败操作,此时不对任一已完成操作对应的数据库进行数据回滚;当目标数据库事务包含的所有操作均完成时,确定目标数据库事务已完成处理,得到目标数据库事务的处理结果。上述方案提供的方法,通过在失败操作的接口优先级较低的情况下,即在失败操作对目标数据库事务的整体影响较小时,不对已完成操作对应的数据库进行数据回滚,也就不需要重复执行这些已完成操作,从而保证了目标数据库事务的处理效率。
附图说明
58.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
59.图1为本技术实施例基于的数据库事务处理系统的结构示意图;
60.图2为本技术实施例提供的数据库事务处理方法的流程示意图;
61.图3为本技术实施例提供的示例性的数据库事务处理系统的结构示意图;
62.图4为本技术实施例提供的数据库事务处理装置的结构示意图;
63.图5为本技术实施例提供的电子设备的结构示意图。
64.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
65.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
66.此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
67.在现有技术中,在一个数据库事务需要多个数据库联合作业实现的情况下,当任一数据库的数据库操作执行失败,将对所有相关数据库进行数据回滚,并重新执行该数据库事务。但是,在相关数据库较多,数据库事务包含的数据库操作也较多的情况下,若基于现有技术处理数据库事务,可能导致大量的相关数据库均进行多次数据回滚,缺乏数据库事务处理的灵活性,不利于保证数据库事务的处理效率。
68.针对上述问题,本技术实施例提供的数据库事务处理方法、装置、电子设备及存储介质,该方法包括:获取参与目标数据库事务处理的若干个数据库的操作执行结果;当任一数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,接口优先级表征事务操作对目标数据库事务的影响程度;当失败操作的接口优先级低于各已完成操作的接口优先级时,重新执行该失败操作,此时不对任一已完成操作对应的数据库进行数据回滚;当目标数据库事务包含的所有操作均完成时,确定目标数据库事务已完成处理,得到目标数据库事务的处理结果。上述方案提供的方法,通过在失败操作的接口优先级较低的情况下,即在失败操作对目标数据库事务的整体影响较小时,不对已完成操作对应的数据库进行数据回滚,也就不需要重复执行这些已完成操作,从而保证了目标数据库事务的处理效率。
69.下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
70.首先,对本技术所基于的数据库事务处理系统的结构进行说明:
71.本技术实施例提供的数据库事务处理方法、装置、电子设备及存储介质,适用于处理涉及多个数据库联合操作的数据库事务。如图1所示,为本技术实施例基于的数据库事务处理系统的结构示意图,主要包括数据采集装置、多个数据库和数据库事务处理装置。具体地,可以基于数据采集装置在目标数据库事务执行过程中采集各个数据库的操作执行结果,并将得到的数据发送给数据库事务处理装置,该装置根据得到的数据,对目标数据库事务的具体执行流程进行控制。
72.本技术实施例提供了一种数据库事务处理方法,用于处理涉及多个数据库联合操作的数据库事务。本技术实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于处理数据库事务的电子设备。
73.如图2所示,为本技术实施例提供的数据库事务处理方法的流程示意图,该方法包括:
74.步骤201,获取参与目标数据库事务处理的若干个数据库的操作执行结果。
75.具体地,可以在目标数据库事务中的任一事务操作执行完毕后,都在该事务操作对应的数据库中,获取该事务操作的执行结果,以判断该事务操作是否执行成功。
76.步骤202,当任一数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级。
77.其中,接口优先级表征事务操作对目标数据库事务的影响程度。
78.需要说明的是,目标数据库事务包括多个事务操作,各事务操作按照预设顺序依次执行,目标数据库事务执行过程中,事务操作至少分为已完成操作、失败操作和未执行操作三种类型。其中,在目标数据库事务处理过程中,该目标数据库事务包括的事务操作可以并行执行,也可以串行执行。
79.步骤203,当失败操作的接口优先级低于各已完成操作的接口优先级时,重新执行该失败操作,此时不对任一已完成操作对应的数据库进行数据回滚。
80.具体地,当失败操作的接口优先级低于各已完成操作的接口优先级时,确定该失败操作对目标数据库事务的影响程度较小,且该失败操作的成功与否对已完成操作的执行没有影响,所以此时不对任一已完成操作对应的数据库进行数据回滚,也就不需要重复执行已完成操作,而是仅重复执行该失败操作,至到执行成功为止。
81.步骤204,当目标数据库事务包含的所有操作均完成时,确定目标数据库事务已完成处理,得到目标数据库事务的处理结果。
82.具体地,可以在目标数据库事务中的所有事务操作均为已完成操作时,确定该目标数据库事务完成处理,此时可得到目标数据库事务的处理结果。
83.在上述实施例的基础上,作为一种可实施的方式,在一实施例中,该方法还包括:
84.步骤301,当失败操作的接口优先级高于任一已完成操作的接口优先级时,对该已完成操作所对应的数据库进行数据回滚;
85.步骤302,重复执行该已完成操作和失败操作。
86.具体地,当失败操作的接口优先级高于任一已完成操作的接口优先级时,则表征失败操作的接口优先级较高,且失败操作的执行结果对该已完成操作的执行有影响,因此可以将已完成操作所对应的数据库确定为待回滚数据库,并进行相应的数据回滚操作,在完成数据回滚后,重复执行该已完成操作和失败操作。
87.具体地,在一实施例中,为了进一步提高目标数据库事务的处理效率,还可以判断失败操作的接口优先级是否高于所有未执行操作的接口优先级;当失败操作的接口优先级高于所有未执行操作的接口优先级时,暂停所有未执行操作,直到失败操作完成重复执行。
88.相应地,在一实施例中,当失败操作的接口优先级低于任一未执行操作的接口优先级时,正常执行该未执行操作。
89.具体地,当失败操作的接口优先级高于所有未执行操作的接口优先级时,可以确
定该失败操作对目标数据库事务的影响较大,且该失败操作的执行结果会对后续即将执行的未执行操作造成影响,因此暂停所有未执行操作,在失败操作完成重复执行后,再启动未执行操作。
90.相应地,当失败操作的接口优先级低于任一未执行操作的接口优先级时,可以确定失败操作的成功与否对该未执行操作的执行没有影响,因此不需要暂停该未执行操作,该未执行操作可以正常执行。
91.在上述实施例的基础上,作为一种可实施的方式,在一实施例中,在获取参与目标数据库事务处理的若干个数据库的操作执行结果之前,该方法还包括:
92.步骤401,获取用户的服务请求;
93.步骤402,根据服务请求,确定用户的目标数据库事务,与参与目标数据库事务处理的若干个数据库建立接口连接;
94.步骤403,根据目标数据库事务包括的操作内容,调用若干个数据库的服务接口,以基于服务接口,在若干个数据库执行相应的事务操作。
95.示例性的,如图3所示,为本技术实施例提供的示例性的数据库事务处理系统的结构示意图,本技术实施例提供的方法应用于后台服务和自定义事务管理器。用户基于客户端向后台服务发送服务请求,后台服务统一维护包含所有数据库连接信息的数据表,后台服务在接收到服务请求时,首先确定对应的目标数据库事务,然后按照数据表,与参与目标数据库事务处理的若干个数据库建立接口连接。在目标数据库事务执行的过程中,根据当前执行的事务操作内容,为该事务操作调用相应的服务接口,以对相应的数据库进行增删改查等事务操作。每执行一个事务操作,都将该事务操作执行结果反馈到自定义事务管理器,自定义事务管理器基于上述实施例提供的数据库事务处理方法,判断是否让已完成操作对应的数据库进行数据回滚,同时判断未执行操作是否暂停处理,最后将判断结果发送给后台服务,由后台服务按照判断结果执行相应的业务操作。
96.具体地,在一实施例中,可以获取参与目标数据库事务处理的若干个数据库的连接信息;其中,连接信息至少包括数据库名称、数据库ip和数据库端口;根据连接信息,与若干个数据库建立接口连接。
97.具体地,连接信息还可以包括数据库类型、数据库编码、数据库名称、用户名、数据库当前连接数、数据库允许最大连接数、连接状态、添加时间和事务操作类型等。
98.在上述实施例的基础上,作为一种可实施的方式,在一实施例中,检测失败操作的接口优先级和已完成操作的接口优先级,包括:
99.步骤2021,获取失败操作对应的服务接口调用结果和已完成操作对应的服务接口调用结果;
100.步骤2022,根据失败操作对应的服务接口调用结果和已完成操作对应的服务接口调用结果,确定检测失败操作的接口优先级和已完成操作的接口优先级。
101.具体地,可以在目标数据库事务执行之前,预先设定各服务接口的接口优先级,因此可以根据任一事务操作的服务接口调用结果,确定该事务操作对应的接口优先级。
102.其中,各服务接口对应的接口优先级可以根据实际需求设定,本技术实施例不做限定。
103.本技术实施例提供的数据库事务处理方法,通过获取参与目标数据库事务处理的
若干个数据库的操作执行结果;当任一数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,接口优先级表征事务操作对目标数据库事务的影响程度;当失败操作的接口优先级低于各已完成操作的接口优先级时,重新执行该失败操作,此时不对任一已完成操作对应的数据库进行数据回滚;当目标数据库事务包含的所有操作均完成时,确定目标数据库事务已完成处理,得到目标数据库事务的处理结果。上述方案提供的方法,通过在失败操作的接口优先级较低的情况下,即在失败操作对目标数据库事务的整体影响较小时,不对已完成操作对应的数据库进行数据回滚,也就不需要重复执行这些已完成操作,提高了数据库事务处理的灵活性,保证了目标数据库事务的处理效率。
104.本技术实施例提供了一种数据库事务处理装置,用于执行上述实施例提供的数据库事务处理方法。
105.如图4所示,为本技术实施例提供的数据库事务处理装置的结构示意图。该数据库事务处理装置40包括:获取模块401、检测模块402、处理模块403和确定模块404。
106.其中,获取模块,用于获取参与目标数据库事务处理的若干个数据库的操作执行结果;检测模块,用于当任一数据库的操作执行结果为失败时,检测失败操作的接口优先级和已完成操作的接口优先级;其中,接口优先级表征事务操作对目标数据库事务的影响程度;处理模块,用于当失败操作的接口优先级低于各已完成操作的接口优先级时,重新执行该失败操作,此时不对任一已完成操作对应的数据库进行数据回滚;确定模块,用于当目标数据库事务包含的所有操作均完成时,确定目标数据库事务已完成处理,得到目标数据库事务的处理结果。
107.具体地,在一实施例中,处理模块,还用于:
108.当失败操作的接口优先级高于任一已完成操作的接口优先级时,对该已完成操作所对应的数据库进行数据回滚;
109.重复执行该已完成操作和失败操作。
110.具体地,在一实施例中,处理模块,还用于:
111.判断失败操作的接口优先级是否高于所有未执行操作的接口优先级;
112.当失败操作的接口优先级高于所有未执行操作的接口优先级时,暂停所有未执行操作,直到失败操作完成重复执行。
113.具体地,在一实施例中,处理模块,还用于:
114.当失败操作的接口优先级低于任一未执行操作的接口优先级时,正常执行该未执行操作。
115.具体地,在一实施例中,获取模块,还用于:
116.获取用户的服务请求;
117.根据服务请求,确定用户的目标数据库事务,与参与目标数据库事务处理的若干个数据库建立接口连接;
118.根据目标数据库事务包括的操作内容,调用若干个数据库的服务接口,以基于服务接口,在若干个数据库执行相应的事务操作。
119.具体地,在一实施例中,检测模块,具体用于:
120.获取失败操作对应的服务接口调用结果和已完成操作对应的服务接口调用结果;
121.根据失败操作对应的服务接口调用结果和已完成操作对应的服务接口调用结果,确定检测失败操作的接口优先级和已完成操作的接口优先级。
122.具体地,在一实施例中,获取模块,具体用于:
123.获取参与目标数据库事务处理的若干个数据库的连接信息;其中,连接信息至少包括数据库名称、数据库ip和数据库端口;
124.根据连接信息,与若干个数据库建立接口连接。
125.关于本实施例中的数据库事务处理装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
126.本技术实施例提供的数据库事务处理装置,用于执行上述实施例提供的数据库事务处理方法,其实现方式与原理相同,不再赘述。
127.本技术实施例提供了一种电子设备,用于执行上述实施例提供的数据库事务处理方法。
128.如图5所示,为本技术实施例提供的电子设备的结构示意图。该电子设备50包括:至少一个处理器51和存储器52。
129.存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的数据库事务处理方法。
130.本技术实施例提供的一种电子设备,用于执行上述实施例提供的数据库事务处理方法,其实现方式与原理相同,不再赘述。
131.本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的数据库事务处理方法。
132.本技术实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的数据库事务处理方法的计算机执行指令,其实现方式与原理相同,不再赘述。
133.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
134.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
135.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
136.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个
实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
137.本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
138.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1