CN104462497A - 基于关系型数据库的跨库事务处理方法和系统 - Google Patents
基于关系型数据库的跨库事务处理方法和系统 Download PDFInfo
- Publication number
- CN104462497A CN104462497A CN201410803168.6A CN201410803168A CN104462497A CN 104462497 A CN104462497 A CN 104462497A CN 201410803168 A CN201410803168 A CN 201410803168A CN 104462497 A CN104462497 A CN 104462497A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- inter
- data source
- library
- transaction
- 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
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/25—Integrating or interfacing systems involving database management systems
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于关系型数据库的跨库事务处理方法和一种基于关系型数据库的跨库事务处理系统,其中,所述方法包括:创建多个数据库连接池,并为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;建立多条SQL语句与多个数据源名称的关联关系,并将所述关联关系存储至缓存区;遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及将所述多条SQL语句写入日志文件;执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,通过本发明的技术方案,可以有效地保证所有数据库之间的数据同步性。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于关系型数据库的跨库事务处理方法和一种基于关系型数据库的跨库事务处理系统。
背景技术
随着商业需求的日益增加,应用程序变得越来越复杂,经常需要访问多个数据库,这些数据库通常分布在不同的地方,即构成了分布式事务。分布式事务修改的数据存储在多个或多种类型的数据源中,这些数据源分布在多台机器上,甚至还有更复杂的情况。
事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务即失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)将100元存入至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,则A账户的钱会莫名其妙地少了100元。
数据库需要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。例如,现有完整性约束为:a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
而且,并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如,从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
当事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。例如,如果转账成功了,而此时数据库宕机了,重启后,还是能够看到转账成功后的结果。
对于多种类型的数据源分布在多台机器上的情况,现有的事务处理方法不能满足要求,因为如果其中一个数据库服务器失败,无法确保其他的数据库还有没提交的数据回滚。换句话说,无法协调发生在不同地方的多个事务处理,就没有办法保证事务的原子性。
因此,如何解决在分布式系统中,由于跨库操作过程中发生异常,导致的数据不一致成为目前亟待解决的技术问题。
发明内容
本发明正是基于上述问题,提出了一种新的技术方案,通过建立多个数据源与多条SQL语句之间的关联关系,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决了单点故障问题。
有鉴于此,本发明提出了基于关系型数据库的跨库事务处理方法,用于计算机系统进行跨库事务处理,包括:创建多个数据库连接池,并为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;建立多条SQL语句与多个数据源名称的关联关系,并将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及将所述多条SQL语句写入日志文件;执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
在该技术方案中,通过建立并存储多个数据库连接池、多个数据源以及多条SQL语句之间的关联关系,遍历多条SQL语句,并通过SQL语句在数据库连接池中获取对应的数据源,执行多条SQL语句并保存对应的执行结果,此时数据处于预提交状态,未真正入库,以及根据多条执行结果数据源事务控制开关状态,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题;在遍历SQL语句的过程中,将SQL语句按照数据库分类写入日志文件中,当提交多个数据库事务时,由于某个或多个数据库出现故障导致已经提交成功的事务无法回滚时,可以通过日志文件保障操作失败的数据最终成功入库。
在上述技术方案中,优选地,建立所述多条SQL语句与所述多个数据源名称的关联关系具体包括:创建数据库SQL语句存储列表;根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
在该技术方案中,通过创建数据库SQL语句存储列表,并根据数据库连接池的唯一名称标识和该存储列表将数据库连接池与SQL语句进行关联,可以为简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性提供有利的前提保障。
在上述技术方案中,优选地,根据所述多条执行结果设置所述数据源事务控制开关状态具体包括:遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常。
在上述技术方案中,优选地,在判定每条所述执行结果均正常时,设置所述数据源事务控制开关为打开状态;以及在判定每条所述执行结果存在异常时,设置所述数据源事务控制开关为关闭状态。
在上述技术方案中,优选地,当所述数据源事务控制开关为打开状态时,执行所述跨库事务提交操作,并返回执行成功结果;以及当所述数据源事务控制开关为关闭状态时,执行所述跨库事务回滚操作,并返回执行失败结果。
在该技术方案中,通过判断每条SQL语句执行结果是否正常,并在均正常时,打开数据源事务控制开关,执行跨库事务提交操作,并返回执行成功结果,以及在存在异常时,关闭数据源事务控制开关,执行跨库事务回滚操作,并返回执行失败结果,即在请求所有相关数据库准备提交各自的事务分支时,根据数据源事务控制开关所处的状态,确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,并返回失败应答,如此,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题。
在上述技术方案中,优选地,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
在该技术方案中,可以通过中间件控制执行跨库事务提交操作和跨库事务回滚操作,也就是说,通过中间件审查所有数据库返回的预提交结果,如果所有数据库都可以提交,交易中间件则要求所有数据库做正式提交,即全局事务被提交;如果有任一数据库预提交返回失败,交易中间件则要求所有其它数据库回滚其操作,即全局事务被回滚,如此,可以有效地保证所有数据库之间的数据同步性。
根据本发明的另一方面,还提出了一种基于关系型数据库的跨库事务处理系统,用于计算机系统进行跨库事务处理,包括:创建模块,用于创建多个数据库连接池,并控制为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;关联模块,用于建立多条SQL语句与多个数据源名称的关联关系,并控制将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;事务提交协调模块,用于控制遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及控制将所述多条SQL语句写入日志文件;以及所述事务提交协调模块,还用于:控制执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
在该技术方案中,通过建立并存储多个数据库连接池、多个数据源以及多条SQL语句之间的关联关系,遍历多条SQL语句,并通过SQL语句在数据库连接池中获取对应的数据源,执行多条SQL语句并保存对应的执行结果,此时数据处于预提交状态,未真正入库,以及根据多条执行结果数据源事务控制开关状态,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题;在遍历SQL语句的过程中,将SQL语句按照数据库分类写入日志文件中,当提交多个数据库事务时,由于某个或多个数据库出现故障导致已经提交成功的事务无法回滚时,可以通过日志文件保障操作失败的数据最终成功入库。
在上述技术方案中,优选地,所述关联模块具体用于:创建数据库SQL语句存储列表;根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
在该技术方案中,通过创建数据库SQL语句存储列表,并根据数据库连接池的唯一名称标识和该存储列表将数据库连接池与SQL语句进行关联,可以为简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性提供有利的前提保障。
在上述技术方案中,优选地,还包括:判断模块,用于在遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常;设置模块,在判定每条所述执行结果均正常时,用于设置所述数据源事务控制开关为打开状态;在判定每条所述执行结果存在异常时,用于设置所述数据源事务控制开关为关闭状态。
在上述技术方案中,优选地,所述事务提交协调模块还用于:当所述数据源事务控制开关为打开状态时,控制执行所述跨库事务提交操作,并控制返回执行成功结果;以及当所述数据源事务控制开关为关闭状态时,控制执行所述跨库事务回滚操作,并控制返回执行失败结果。
在该技术方案中,通过判断每条SQL语句执行结果是否正常,并在均正常时,打开数据源事务控制开关,执行跨库事务提交操作,并返回执行成功结果,以及在存在异常时,关闭数据源事务控制开关,执行跨库事务回滚操作,并返回执行失败结果,即在请求所有相关数据库准备提交各自的事务分支时,根据数据源事务控制开关所处的状态,确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,并返回失败应答,如此,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题。
在上述技术方案中,优选地,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
在该技术方案中,可以通过中间件控制执行跨库事务提交操作和跨库事务回滚操作,也就是说,通过中间件审查所有数据库返回的预提交结果,如果所有数据库都可以提交,交易中间件则要求所有数据库做正式提交,即全局事务被提交;如果有任一数据库预提交返回失败,交易中间件则要求所有其它数据库回滚其操作,即全局事务被回滚,如此,可以有效地保证所有数据库之间的数据同步性。
通过以上技术方案,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决了单点故障问题。
附图说明
图1示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理方法的流程示意图;
图2示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统的结构框图;
图3示出了根据本发明的另一个实施例的基于关系型数据库的跨库事务处理方法的流程示意图;
图4示出了根据本发明的一个实施例的建立多个数据源与多个SQL语句建立关联关系的流程示意图;
图5示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统的事务提交协调模块工作流程示意图;
图6示出了根据本发明的一个实施例的进行跨库事务提交或跨库事务回滚的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理方法的流程示意图。
如图1所示,根据本发明的一个实施例的基于关系型数据库的跨库事务处理方法,用于计算机系统进行跨库事务处理,包括:步骤102,创建多个数据库连接池,并为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;步骤104,建立多条SQL语句与多个数据源名称的关联关系,并将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;步骤106,遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及将所述多条SQL语句写入日志文件;步骤108,执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
在该技术方案中,通过建立并存储多个数据库连接池、多个数据源以及多条SQL语句之间的关联关系,遍历多条SQL语句,并通过SQL语句在数据库连接池中获取对应的数据源,执行多条SQL语句并保存对应的执行结果,此时数据处于预提交状态,未真正入库,以及根据多条执行结果数据源事务控制开关状态,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题;在遍历SQL语句的过程中,将SQL语句按照数据库分类写入日志文件中,当提交多个数据库事务时,由于某个或多个数据库出现故障导致已经提交成功的事务无法回滚时,可以通过日志文件保障操作失败的数据最终成功入库。
在上述技术方案中,优选地,建立所述多条SQL语句与所述多个数据源名称的关联关系具体包括:创建数据库SQL语句存储列表;根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
在该技术方案中,通过创建数据库SQL语句存储列表,并根据数据库连接池的唯一名称标识和该存储列表将数据库连接池与SQL语句进行关联,可以为简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性提供有利的前提保障。
在上述技术方案中,优选地,根据所述多条执行结果设置所述数据源事务控制开关状态具体包括:遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常。
在上述技术方案中,优选地,在判定每条所述执行结果均正常时,设置所述数据源事务控制开关为打开状态;以及在判定每条所述执行结果存在异常时,设置所述数据源事务控制开关为关闭状态。
在上述技术方案中,优选地,当所述数据源事务控制开关为打开状态时,执行所述跨库事务提交操作,并返回执行成功结果;以及当所述数据源事务控制开关为关闭状态时,执行所述跨库事务回滚操作,并返回执行失败结果。
在该技术方案中,通过判断每条SQL语句执行结果是否正常,并在均正常时,打开数据源事务控制开关,执行跨库事务提交操作,并返回执行成功结果,以及在存在异常时,关闭数据源事务控制开关,执行跨库事务回滚操作,并返回执行失败结果,即在请求所有相关数据库准备提交各自的事务分支时,根据数据源事务控制开关所处的状态,确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,并返回失败应答,如此,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题。
在上述技术方案中,优选地,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
在该技术方案中,可以通过中间件控制执行跨库事务提交操作和跨库事务回滚操作,也就是说,通过中间件审查所有数据库返回的预提交结果,如果所有数据库都可以提交,交易中间件则要求所有数据库做正式提交,即全局事务被提交;如果有任一数据库预提交返回失败,交易中间件则要求所有其它数据库回滚其操作,即全局事务被回滚,如此,可以有效地保证所有数据库之间的数据同步性。
图2示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统的结构框图。
如图2所示,根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统,用于计算机系统进行跨库事务处理,包括:创建模块202,用于创建多个数据库连接池,并控制为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;关联模块204,用于建立多条SQL语句与多个数据源名称的关联关系,并控制将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;事务提交协调模块206,用于控制遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及控制将所述多条SQL语句写入日志文件;以及所述事务提交协调模块206,还用于:控制执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
在该技术方案中,通过建立并存储多个数据库连接池、多个数据源以及多条SQL语句之间的关联关系,遍历多条SQL语句,并通过SQL语句在数据库连接池中获取对应的数据源,执行多条SQL语句并保存对应的执行结果,此时数据处于预提交状态,未真正入库,以及根据多条执行结果数据源事务控制开关状态,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题;在遍历SQL语句的过程中,将SQL语句按照数据库分类写入日志文件中,当提交多个数据库事务时,由于某个或多个数据库出现故障导致已经提交成功的事务无法回滚时,可以通过日志文件保障操作失败的数据最终成功入库。
在上述技术方案中,优选地,所述关联模块204具体用于:创建数据库SQL语句存储列表;根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
在该技术方案中,通过创建数据库SQL语句存储列表,并根据数据库连接池的唯一名称标识和该存储列表将数据库连接池与SQL语句进行关联,可以为简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性提供有利的前提保障。
在上述技术方案中,优选地,还包括:判断模块208,用于在遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常;设置模块210,在判定每条所述执行结果均正常时,用于设置所述数据源事务控制开关为打开状态;在判定每条所述执行结果存在异常时,用于设置所述数据源事务控制开关为关闭状态。
在上述技术方案中,优选地,所述事务提交协调模块206还用于:当所述数据源事务控制开关为打开状态时,控制执行所述跨库事务提交操作,并控制返回执行成功结果;以及当所述数据源事务控制开关为关闭状态时,控制执行所述跨库事务回滚操作,并控制返回执行失败结果。
在该技术方案中,通过判断每条SQL语句执行结果是否正常,并在均正常时,打开数据源事务控制开关,执行跨库事务提交操作,并返回执行成功结果,以及在存在异常时,关闭数据源事务控制开关,执行跨库事务回滚操作,并返回执行失败结果,即在请求所有相关数据库准备提交各自的事务分支时,根据数据源事务控制开关所处的状态,确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,并返回失败应答,如此,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决单点故障问题。
在上述技术方案中,优选地,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
在该技术方案中,可以通过中间件控制执行跨库事务提交操作和跨库事务回滚操作,也就是说,通过中间件审查所有数据库返回的预提交结果,如果所有数据库都可以提交,交易中间件则要求所有数据库做正式提交,即全局事务被提交;如果有任一数据库预提交返回失败,交易中间件则要求所有其它数据库回滚其操作,即全局事务被回滚,如此,可以有效地保证所有数据库之间的数据同步性。
图3示出了根据本发明的另一个实施例的基于关系型数据库的跨库事务处理方法的流程示意图。
如图3所示,根据本发明的另一个实施例的基于关系型数据库的跨库事务处理方法,具体流程包括:
步骤302,创建数据库连接池(用于存储数据源),并为每个数据库连接池定义唯一的名称;
步骤304,建立SQL语句与数据源名称的关联关系,并放入数据源与SQL语句的关联装置(缓冲区)中;
步骤306,遍历SQL语句,通过SQL语句从缓冲区获取对应的数据源名称,并通过数据源名称从数据库连接池中获取对应的数据源。
步骤308,执行所有SQL语句,并保存每条SQL执行结果,此时数据处于预提交状态,数据没有真正入库;
步骤310,循环执行完SQL语句列表后,若每条SQL执行结果都正确,打开事务控制开关(数据源事务控制开关),否则,关闭事务控制开关(数据源事务控制开关);
步骤312,如果事务控制开关处于打开状态,执行事务提交操作,返回执行成功结果;如果事务控制开关关闭状态,执行事务回滚操作,返回执行失败结果,以保证最终全部数据真正入库或全部回滚;
步骤314,当同时提交多个数据库事务的时,如果出现某一个或多个数据库出现故障,且已经提交成功的事务无法回滚,通过记入的日志文件来保障操作失败的数据最终成功入库。
图4示出了根据本发明的一个实施例的建立多个数据源与多个SQL语句建立关联关系的流程示意图。
如图4所示,根据本发明的一个实施例的建立多个数据源与多个SQL语句建立关联关系的流程,具体包括:
步骤402,建立数据库连接池,为每个连接池确定唯一名称标识;
步骤404,创建数据库SQL语句存储列表区;
步骤406,建立数据库连接池与SQL语句之间的关联关系。
图5示出了根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统的事务提交协调模块工作流程示意图。
如图5所示,根据本发明的一个实施例的基于关系型数据库的跨库事务处理系统的事务提交协调模块工作流程,具体包括:
步骤502,向所有相关数据库发生请求指令;
步骤504,判断事务控制开关所处的状态;
步骤506,根据所述事务控制开关所处的状态,执行事务提交或事务回滚操作。
图6示出了根据本发明的一个实施例的进行跨库事务提交或跨库事务回滚的流程示意图。
如图6所示,根据本发明的一个实施例的进行跨库事务提交或跨库事务回滚的流程,具体包括:
步骤602,存储多个数据源与多个SQL语句之间的对应关系;
步骤604,协调多个数据库之间的事务提交和回滚控制。
以上结合附图详细说明了本发明的技术方案,通过建立多个数据源与多条SQL语句之间的关联关系,可以简化对多个不同数据库的一致性操作,并有效地保证所有数据库之间的数据同步性,提高事务处理的灵活性,同时有效地解决了单点故障问题。
在本说明书的描述中,术语“一个实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种基于关系型数据库的跨库事务处理方法,用于计算机系统进行跨库事务处理,其特征在于,包括:
创建多个数据库连接池,并为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;
建立多条SQL语句与多个数据源名称的关联关系,并将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;
遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及将所述多条SQL语句写入日志文件;
执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
2.根据权利要求1所述的基于关系型数据库的跨库事务处理方法,其特征在于,建立所述多条SQL语句与所述多个数据源名称的关联关系具体包括:创建数据库SQL语句存储列表;
根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
3.根据权利要求2所述的基于关系型数据库的跨库事务处理方法,其特征在于,根据所述多条执行结果设置所述数据源事务控制开关状态具体包括:遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常。
4.根据权利要求3所述的基于关系型数据库的跨库事务处理方法,其特征在于,在判定每条所述执行结果均正常时,设置所述数据源事务控制开关为打开状态;以及在判定每条所述执行结果存在异常时,设置所述数据源事务控制开关为关闭状态。
5.根据权利要求4所述的基于关系型数据库的跨库事务处理方法,其特征在于,当所述数据源事务控制开关为打开状态时,执行所述跨库事务提交操作,并返回执行成功结果;以及
当所述数据源事务控制开关为关闭状态时,执行所述跨库事务回滚操作,并返回执行失败结果。
6.根据权利要求5所述的基于关系型数据库的跨库事务处理方法,其特征在于,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
7.一种基于关系型数据库的跨库事务处理系统,用于计算机系统进行跨库事务处理,其特征在于,包括:
创建模块,用于创建多个数据库连接池,并控制为所述多个数据库连接池分配对应的名称,以用于存储多个数据源;
关联模块,用于建立多条SQL语句与多个数据源名称的关联关系,并控制将所述关联关系存储至缓存区,其中,所述多个数据源名称与所述多个数据源一一对应;
事务提交协调模块,用于控制遍历所述多条SQL语句,根据所述多条SQL语句从所述缓存区中获取对应的所述数据源名称,并通过所述数据源名称从所述数据库连接池中获取所述数据源,以及控制将所述多条SQL语句写入日志文件;以及
所述事务提交协调模块,还用于:控制执行所述多条SQL语句,并保存对应的多条执行结果,以及根据所述多条执行结果设置数据源事务控制开关状态,其中,所述多条执行结果与所述多条SQL语句一一对应。
8.根据权利要求7所述的基于关系型数据库的跨库事务处理系统,其特征在于,所述关联模块具体用于:创建数据库SQL语句存储列表;根据所述多个所述数据库连接池名称与所述数据库SQL语句存储列表,建立所述多个数据库连接池与所述多个SQL语句的关联关系。
9.根据权利要求8所述的基于关系型数据库的跨库事务处理系统,其特征在于,还包括:
判断模块,用于在遍历完所述多条SQL语句后,分别判断所述多条执行结果是否正常;
设置模块,在判定每条所述执行结果均正常时,用于设置所述数据源事务控制开关为打开状态;在判定每条所述执行结果存在异常时,用于设置所述数据源事务控制开关为关闭状态。
10.根据权利要求9所述的基于关系型数据库的跨库事务处理系统,其特征在于,所述事务提交协调模块还用于:当所述数据源事务控制开关为打开状态时,控制执行所述跨库事务提交操作,并控制返回执行成功结果;以及当所述数据源事务控制开关为关闭状态时,控制执行所述跨库事务回滚操作,并控制返回执行失败结果。
11.根据权利要求10所述的基于关系型数据库的跨库事务处理系统,其特征在于,通过中间件控制执行所述跨库事务提交操作和所述跨库事务回滚操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803168.6A CN104462497B (zh) | 2014-12-19 | 2014-12-19 | 基于关系型数据库的跨库事务处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803168.6A CN104462497B (zh) | 2014-12-19 | 2014-12-19 | 基于关系型数据库的跨库事务处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104462497A true CN104462497A (zh) | 2015-03-25 |
CN104462497B CN104462497B (zh) | 2018-07-10 |
Family
ID=52908532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410803168.6A Active CN104462497B (zh) | 2014-12-19 | 2014-12-19 | 基于关系型数据库的跨库事务处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104462497B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021260A (zh) * | 2015-03-26 | 2016-10-12 | 国际商业机器公司 | 在多个运行时产物中搜索至少一个关系模式的方法和系统 |
CN106021071A (zh) * | 2016-05-04 | 2016-10-12 | 北京思特奇信息技术股份有限公司 | 一种监控sql运行过程的方法和系统 |
CN107092685A (zh) * | 2017-04-24 | 2017-08-25 | 广州新盛通科技有限公司 | 一种联合使用文件系统和rdbms存储事务数据的方法 |
CN107203604A (zh) * | 2017-05-16 | 2017-09-26 | 郑州云海信息技术有限公司 | 一种数据分发管理方法、平台、装置及系统 |
CN107203560A (zh) * | 2016-03-18 | 2017-09-26 | 中国移动通信集团宁夏有限公司 | 数据库、多数据库操作事务一致性保证方法及系统 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN109684415A (zh) * | 2018-12-27 | 2019-04-26 | 广东金杭科技有限公司 | 应用数据库多表事务处理算法 |
CN112182082A (zh) * | 2020-09-24 | 2021-01-05 | 广州巨杉软件开发有限公司 | 一种实现跨不同数据库引擎事务强一致性的系统及方法 |
CN106547781B (zh) * | 2015-09-21 | 2021-06-11 | 南京中兴新软件有限责任公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
CN113127501A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市华胜软件技术有限公司 | 执行多条sql语句的方法、装置、智能终端及存储介质 |
CN113918384A (zh) * | 2021-10-12 | 2022-01-11 | 深圳市铭镭激光设备有限公司 | 数据保存方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010042072A1 (en) * | 1998-10-05 | 2001-11-15 | Muhammad Yahya | Enhanced tw0 phase commit protocol |
CN101853274A (zh) * | 2010-05-10 | 2010-10-06 | 浪潮电子信息产业股份有限公司 | 一种实现异种数据库互联的方法 |
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
CN102750384A (zh) * | 2012-06-28 | 2012-10-24 | 用友软件股份有限公司 | 从多数据库引擎获取数据的装置和方法 |
CN102945264A (zh) * | 2012-10-24 | 2013-02-27 | 浪潮集团山东通用软件有限公司 | 智能启用分布式事务的方法 |
CN103020158A (zh) * | 2012-11-26 | 2013-04-03 | 中兴通讯股份有限公司 | 一种报表创建方法、装置和系统 |
US20130086119A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | Systems and methods for composite persistence units |
-
2014
- 2014-12-19 CN CN201410803168.6A patent/CN104462497B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010042072A1 (en) * | 1998-10-05 | 2001-11-15 | Muhammad Yahya | Enhanced tw0 phase commit protocol |
CN101853274A (zh) * | 2010-05-10 | 2010-10-06 | 浪潮电子信息产业股份有限公司 | 一种实现异种数据库互联的方法 |
CN102073540A (zh) * | 2010-12-15 | 2011-05-25 | 北京新媒传信科技有限公司 | 分布式事务提交方法和装置 |
US20130086119A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | Systems and methods for composite persistence units |
CN102750384A (zh) * | 2012-06-28 | 2012-10-24 | 用友软件股份有限公司 | 从多数据库引擎获取数据的装置和方法 |
CN102945264A (zh) * | 2012-10-24 | 2013-02-27 | 浪潮集团山东通用软件有限公司 | 智能启用分布式事务的方法 |
CN103020158A (zh) * | 2012-11-26 | 2013-04-03 | 中兴通讯股份有限公司 | 一种报表创建方法、装置和系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021260A (zh) * | 2015-03-26 | 2016-10-12 | 国际商业机器公司 | 在多个运行时产物中搜索至少一个关系模式的方法和系统 |
US10572494B2 (en) | 2015-03-26 | 2020-02-25 | International Business Machines Corporation | Bootstrapping the data lake and glossaries with ‘dataset joins’ metadata from existing application patterns |
CN106021260B (zh) * | 2015-03-26 | 2019-03-19 | 国际商业机器公司 | 在多个运行时产物中搜索至少一个关系模式的方法和系统 |
CN106547781B (zh) * | 2015-09-21 | 2021-06-11 | 南京中兴新软件有限责任公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
CN107203560A (zh) * | 2016-03-18 | 2017-09-26 | 中国移动通信集团宁夏有限公司 | 数据库、多数据库操作事务一致性保证方法及系统 |
CN107203560B (zh) * | 2016-03-18 | 2020-07-07 | 中国移动通信集团宁夏有限公司 | 数据库、多数据库操作事务一致性保证方法及系统 |
CN106021071A (zh) * | 2016-05-04 | 2016-10-12 | 北京思特奇信息技术股份有限公司 | 一种监控sql运行过程的方法和系统 |
CN107092685A (zh) * | 2017-04-24 | 2017-08-25 | 广州新盛通科技有限公司 | 一种联合使用文件系统和rdbms存储事务数据的方法 |
CN107203604A (zh) * | 2017-05-16 | 2017-09-26 | 郑州云海信息技术有限公司 | 一种数据分发管理方法、平台、装置及系统 |
CN108563693A (zh) * | 2018-03-16 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种事务的处理方法、装置及设备 |
CN109684415A (zh) * | 2018-12-27 | 2019-04-26 | 广东金杭科技有限公司 | 应用数据库多表事务处理算法 |
CN113127501A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市华胜软件技术有限公司 | 执行多条sql语句的方法、装置、智能终端及存储介质 |
CN113127501B (zh) * | 2019-12-30 | 2024-04-30 | 深圳市华胜软件技术有限公司 | 执行多条sql语句的方法、装置、智能终端及存储介质 |
CN112182082A (zh) * | 2020-09-24 | 2021-01-05 | 广州巨杉软件开发有限公司 | 一种实现跨不同数据库引擎事务强一致性的系统及方法 |
CN112182082B (zh) * | 2020-09-24 | 2021-07-06 | 广州巨杉软件开发有限公司 | 一种实现跨不同数据库引擎事务强一致性的系统及方法 |
CN113918384A (zh) * | 2021-10-12 | 2022-01-11 | 深圳市铭镭激光设备有限公司 | 数据保存方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104462497B (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104462497A (zh) | 基于关系型数据库的跨库事务处理方法和系统 | |
EP4254183A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
JP7142152B2 (ja) | トランザクション処理方法、装置、機器並びにコンピュータプログラム | |
US11994959B2 (en) | System and method for transaction recovery in a multitenant application server environment | |
US11176140B2 (en) | Updating a table using incremental and batch updates | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN113396407A (zh) | 用于利用区块链技术扩充数据库应用的系统和方法 | |
US11061884B2 (en) | Method and system to accelerate transaction commit using non-volatile memory | |
US9389905B2 (en) | System and method for supporting read-only optimization in a transactional middleware environment | |
WO2016180164A1 (zh) | 一种分布式事务回滚方法及装置 | |
US9146944B2 (en) | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
JP2022531867A (ja) | データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム | |
US8046413B2 (en) | Automatic commutativity detection for generalized paxos | |
CN105955801B (zh) | 一种基于rdma和htm的分布式乐观并发控制方法 | |
CN112104504B (zh) | 一种大规模资源访问的事务管理框架、设计方法及云平台 | |
US20230394027A1 (en) | Transaction execution method, computing device, and storage medium | |
Kaur et al. | Concurrency control in distributed database system | |
CN105938446B (zh) | 基于rdma和硬件事务性内存支持的数据复制容错方法 | |
JP6079876B2 (ja) | 分散処理システム | |
CN114036164A (zh) | 一种乐观锁和悲观锁组合的高并发交易加锁方法及系统 | |
JP7416768B2 (ja) | 分散コンピューティング環境で分散調整エンジンを非破壊的にアップグレードする方法、装置およびシステム | |
CN102193987B (zh) | 基于oltp的增加节点数据关系的方法及系统 | |
US12093139B2 (en) | Rolling back a database transaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |