数据库、多数据库操作事务一致性保证方法及系统技术方案

技术编号:16301346 阅读:36 留言:0更新日期:2017-09-26 19:26
本发明专利技术公开了一种数据库、多数据库操作事务一致性保证方法及系统,本发明专利技术为具有事务的业务请求生成事务ID和重放日志,由数据服务端根据业务请求完成相应的操作,并将结果反馈给数据服务客户端。在处理过程中若出现异常则根据事务ID将对应于这次业务请求的所有操作回滚,若所有操作全部完成,则根据对应的重放日志进行提交,在提交过程中若出现异常则进行回滚处理或异常处理,提交完毕相应的数据库更新完毕。多个用户多次对数据库进行操作时,数据服务端对各个业务请求是否需要进行业务保持进行记录,并根据事务ID为需要业务保持的请求分配独占进程,从而通过事务ID的设置在多用户多次操作数据库以及提交时能够保证事务的一致性。

Database, multi database operation, transaction consistency guarantee method and system

The invention discloses a database, database operation and transaction consistency guarantee method and system of the invention, the transaction ID and replay log generation with transaction service request, by the data server according to service request to complete the corresponding operation, and the results back to the client data service. In the process if all operations according to the abnormal rollback transaction ID corresponding to the service request, if all operations are completed, according to the corresponding replay logs submitted, in the process of submitting if there is abnormal rollback processing or exception handling, submitted after the corresponding database. A plurality of multiple users operate on the database server, the data of each service request to keep business records, and according to the ID request distribution to keep the business affairs exclusive process, and through the affairs of ID set in multi-user multiple operation consistency to the database and submit to ensure transaction.

【技术实现步骤摘要】
数据库、多数据库操作事务一致性保证方法及系统
本专利技术涉及数据业务处理领域,更具体涉及一种数据库、多数据库操作事务一致性保证方法及系统。
技术介绍
随着LTE(长期演进)流量运营时代的到来,当前BOSS(业务支撑系统)领域新业务层出不穷,系统性能需求呈几何级的增长,单点数据库已经很难满足业务增长的需求。数据库的拆分和异构(物理数据库、内存数据库、NOSQL数据库等混合使用)成了一项重要诉求,系统的功能集群化分布式处理也成了趋势。传统常用的中间件系统如CICS、TUXEDO等基于XA框架2PC(两阶段提交)事务一致性保障方式因为限制太多,伸缩性的太差;BOSS系统在“云”化的趋势下,需要逐步剥离出核心系统,引入新的多数据库操作事务一致性保证机制成了一项重要诉求。如图1为现有技术中数据库系统结构示意图,客户端与应用服务的应用逻辑连接,应用服务的OLT适配层与数据层连接,实现对数据库的操作,其中数据库层包括物理数据库、内存数据库、数据缓存等。但是现有技术中采用这种简单的连接池或连接代理方案,不能保证多次调用都能使用同一数据库会话(session),不能保证数据资源的透明访问(提交前的中间数据只能在同一会话session内看得到)。同时应用直接连接多个数据源,每个应用都需要考虑多数据源操作事务一致性问题,造成应用逻辑过于复杂。
技术实现思路
本专利技术要解决的技术问题是如何以简单有效的方式保证对数据库的单用户或多用户的单次或多次操作的事务的一致性。为了解决上述技术问题,本专利技术提供了一种多数据库操作事务一致性保证方法,所述方法包括以下步骤:S100、第一客户端发起业务请求,第一数据服务客户端根据所述业务请求生成事务ID;其中所述业务请求包括对多个数据库进行操作的多个子请求;一次所述业务请求对应一个所述事务ID;S102、所述第一数据服务客户端检查所述子请求是否有事务,对于每一个有事务的所述子请求,依次执行以下操作:S1021、所述第一数据服务客户端根据所述事务ID、对应于所述子请求的操作命令以及绑定变量形成报文信息,将所述报文信息序列化生成重做日志,之后存储所述重做日志并将所述报文信息发送给第一数据服务端;S1022、所述第一数据服务端解析所述报文信息,并将对应的子请求放入请求队列;S1023、所述第一数据服务端在有空闲进程时从所述请求队列获取所述子请求,连接对应的数据库,并执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第一数据服务客户端;S103、若所有事务的所述子请求均利用所述步骤S102处理成功,则所述第一客户端向所述第一数据服务客户端发起提交请求;S104、所述第一数据服务客户端根据所述提交请求,对于每一个处理成功的所述子请求,依次执行以下操作:S1041、根据所述事务ID获取对应的所述重做日志;S1042、根据所述重做日志调用对应的所述第一数据服务端提交处理结果给对应的数据库,并将提交结果响应给所述第一数据服务客户端;S1043、若接收的所有提交结果均为成功则本次业务完成,清除对应的所述事务ID以及重做日志。优选地,所述步骤S1043中,若接收的第一个所述提交结果为成功,并且存在提交结果为失败,则根据对应的所述重做日志生成错误文件,供异步平账进程重做处理;所述步骤S1043中,若接收的第一个所述提交结果为失败,则执行回滚处理。优选地,所述步骤S102之后,所述方法还包括以下步骤:若所述步骤S102的执行过程中出现异常,则执行回滚处理。优选地,所述回滚处理包括以下步骤:所述第一数据服务客户端向所述第一客户端反馈结果响应;所述第一客户端向所述第一数据服务客户端发送业务回滚指令;所述第一数据服务客户端根据所述业务回滚指令以及对应的所述事务ID获取所述重做日志;所述第一数据服务客户端根据所述重做日志,调用对应的所述第一数据服务端对已经处理过的每个所述子请求做对应的回滚操作;所述第一数据服务客户端清空对应的所述事务ID以及所述重做日志。优选地,所述步骤S1023之后、所述步骤S103之前,所述方法还包括以下步骤:判断当前的所述子请求是否需要事务保持,若需要事务保持,则当前进程只能分配给具有相同的所述事务ID的请求使用,若不需要事务保持,则释放当前进程。优选地,所述第一客户端发起新的业务请求时,所述方法还包括以下步骤:S105、所述第一数据服务客户端判断该业务请求是否是对于某一数据库的第一次业务请求,若不是第一次业务请求,则所述第一数据服务客户端将所述新的业务请求的事务ID设置为与前一次业务请求的事务ID;S106、所述第一数据服务客户端根据所述新的业务请求的事务ID、对应的操作命令以及绑定变量形成报文信息,之后将所述报文信息发送给第一数据服务端;S107、所述第一数据服务端解析所述报文信息,并将对应的请求放入请求队列;S108、所述第一数据服务端判断是否存在所述新的业务请求的事务ID的独占进程,若存在,则从所述请求队列获取所述请求,连接对应的数据库,利用所述独占进程执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第一数据服务客户端;所述第一数据服务客户端将所述处理结果响应给所述第一客户端;S109、所述第一客户端向所述第一数据服务客户端发起提交请求;所述第一数据服务客户端将所述提交请求的事务ID设置为前一次业务请求的事务ID,并且所述第一数据服务客户端根据所述提交请求生成报文信息发送给对应的所述第一数据服务端;S110、所述第一数据服务端根据接收的步骤S109中的所述报文信息,连接对应的数据库,并判断是否存在所述提交请求的事务ID的独占进程,若存在,利用所述独占进程执行提交操作,并在提交完成后向所述第一数据服务客户端饭反馈提交响应,所述第一数据服务客户端根据所述提交响应向所述第一客户端反馈对应的提交结果。一种数据库操作事务一致性保证方法,所述方法包括以下步骤:S200、第二客户端的向第二数据服务客户端发起业务请求,所述第二数据服务客户端根据所述业务请求生成事务ID;S201、所述第二数据服务客户端调用所述第三数据服务客户端,并且所述第三数据服务客户端产生与所述第二数据服务客户端所产生的事务ID相同的事务ID;S202、所述第三数据服务客户端根据所述事务ID、对应的操作命令以及绑定变量形成报文信息,并将所述报文信息发送给第二数据服务端;S203、所述第二数据服务端解析所述报文信息,并将业务请求放入请求队列;S204、所述第二数据服务端在有空闲进程时从所述请求队列获取所述业务请求,连接对应的数据库,并执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第三数据服务客户端;S205、判断当前的业务请求是否需要事务保持,若需要事务保持,则当前进程只能分配给具有相同的所述事务ID的请求使用,若不需要事务保持,则释放当前进程;S206、所述第三客户端发起第三次业务请求时,所述第三数据服务客户端产生与上一次业务请求所产生的事务ID相同事务ID;S207、所述第三数据服务客户端根据所述事务ID、对应的操作命令以及绑定变量形成报文信息,之后将所述报文信息发送给第二数据服务端;S208、所述第二数据服务端解析所述报文信息,并将对应的请求放入请求队列;S209本文档来自技高网...
数据库、多数据库操作事务一致性保证方法及系统

【技术保护点】
一种多数据库操作事务一致性保证方法,其特征在于,所述方法包括以下步骤:S100、第一客户端发起业务请求,第一数据服务客户端根据所述业务请求生成事务ID;其中所述业务请求包括对多个数据库进行操作的多个子请求;一次所述业务请求对应一个所述事务ID;S102、所述第一数据服务客户端检查所述子请求是否有事务,对于每一个有事务的所述子请求,依次执行以下操作:S1021、所述第一数据服务客户端根据所述事务ID、对应于所述子请求的操作命令以及绑定变量形成报文信息,将所述报文信息序列化生成重做日志,之后存储所述重做日志并将所述报文信息发送给第一数据服务端;S1022、所述第一数据服务端解析所述报文信息,并将对应的子请求放入请求队列;S1023、所述第一数据服务端在有空闲进程时从所述请求队列获取所述子请求,连接对应的数据库,并执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第一数据服务客户端;S103、若所有事务的所述子请求均利用所述步骤S102处理成功,则所述第一客户端向所述第一数据服务客户端发起提交请求;S104、所述第一数据服务客户端根据所述提交请求,对于每一个处理成功的所述子请求,依次执行以下操作:S1041、根据所述事务ID获取对应的所述重做日志;S1042、根据所述重做日志调用对应的所述第一数据服务端提交处理结果给对应的数据库,并将提交结果响应给所述第一数据服务客户端;S1043、若接收的所有提交结果均为成功则本次业务完成,清除对应的所述事务ID以及重做日志。...

【技术特征摘要】
1.一种多数据库操作事务一致性保证方法,其特征在于,所述方法包括以下步骤:S100、第一客户端发起业务请求,第一数据服务客户端根据所述业务请求生成事务ID;其中所述业务请求包括对多个数据库进行操作的多个子请求;一次所述业务请求对应一个所述事务ID;S102、所述第一数据服务客户端检查所述子请求是否有事务,对于每一个有事务的所述子请求,依次执行以下操作:S1021、所述第一数据服务客户端根据所述事务ID、对应于所述子请求的操作命令以及绑定变量形成报文信息,将所述报文信息序列化生成重做日志,之后存储所述重做日志并将所述报文信息发送给第一数据服务端;S1022、所述第一数据服务端解析所述报文信息,并将对应的子请求放入请求队列;S1023、所述第一数据服务端在有空闲进程时从所述请求队列获取所述子请求,连接对应的数据库,并执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第一数据服务客户端;S103、若所有事务的所述子请求均利用所述步骤S102处理成功,则所述第一客户端向所述第一数据服务客户端发起提交请求;S104、所述第一数据服务客户端根据所述提交请求,对于每一个处理成功的所述子请求,依次执行以下操作:S1041、根据所述事务ID获取对应的所述重做日志;S1042、根据所述重做日志调用对应的所述第一数据服务端提交处理结果给对应的数据库,并将提交结果响应给所述第一数据服务客户端;S1043、若接收的所有提交结果均为成功则本次业务完成,清除对应的所述事务ID以及重做日志。2.根据权利要求1所述的方法,其特征在于,所述步骤S1043中,若接收的第一个所述提交结果为成功,并且存在提交结果为失败,则根据对应的所述重做日志生成错误文件,供异步平账进程重做处理;所述步骤S1043中,若接收的第一个所述提交结果为失败,则执行回滚处理。3.根据权利要求1所述的方法,其特征在于,所述步骤S102之后,所述方法还包括以下步骤:若所述步骤S102的执行过程中出现异常,则执行回滚处理。4.根据权利要求2或3所述的方法,其特征在于,所述回滚处理包括以下步骤:所述第一数据服务客户端向所述第一客户端反馈结果响应;所述第一客户端向所述第一数据服务客户端发送业务回滚指令;所述第一数据服务客户端根据所述业务回滚指令以及对应的所述事务ID获取所述重做日志;所述第一数据服务客户端根据所述重做日志,调用对应的所述第一数据服务端对已经处理过的每个所述子请求做对应的回滚操作;所述第一数据服务客户端清空对应的所述事务ID以及所述重做日志。5.根据权利要求1所述的方法,其特征在于,所述步骤S1023之后、所述步骤S103之前,所述方法还包括以下步骤:判断当前的所述子请求是否需要事务保持,若需要事务保持,则当前进程只能分配给具有相同的所述事务ID的请求使用,若不需要事务保持,则释放当前进程。6.根据权利要求5所述的方法,其特征在于,所述第一客户端发起新的业务请求时,所述方法还包括以下步骤:S105、所述第一数据服务客户端判断该业务请求是否是对于某一数据库的第一次业务请求,若不是第一次业务请求,则所述第一数据服务客户端将所述新的业务请求的事务ID设置为与前一次业务请求的事务ID;S106、所述第一数据服务客户端根据所述新的业务请求的事务ID、对应的操作命令以及绑定变量形成报文信息,之后将所述报文信息发送给第一数据服务端;S107、所述第一数据服务端解析所述报文信息,并将对应的请求放入请求队列;S108、所述第一数据服务端判断是否存在所述新的业务请求的事务ID的独占进程,若存在,则从所述请求队列获取所述请求,连接对应的数据库,利用所述独占进程执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第一数据服务客户端;所述第一数据服务客户端将所述处理结果响应给所述第一客户端;S109、所述第一客户端向所述第一数据服务客户端发起提交请求;所述第一数据服务客户端将所述提交请求的事务ID设置为前一次业务请求的事务ID,并且所述第一数据服务客户端根据所述提交请求生成报文信息发送给对应的所述第一数据服务端;S110、所述第一数据服务端根据接收的步骤S109中的所述报文信息,连接对应的数据库,并判断是否存在所述提交请求的事务ID的独占进程,若存在,利用所述独占进程执行提交操作,并在提交完成后向所述第一数据服务客户端饭反馈提交响应,所述第一数据服务客户端根据所述提交响应向所述第一客户端反馈对应的提交结果。7.一种数据库操作事务一致性保证方法,其特征在于,所述方法包括以下步骤:S200、第二客户端向第二数据服务客户端发起业务请求,所述第二数据服务客户端根据所述业务请求生成事务ID;S201、所述第二数据服务客户端调用所述第三数据服务客户端,并且所述第三数据服务客户端产生与所述第二数据服务客户端所产生的事务ID相同的事务ID;S202、所述第三数据服务客户端根据所述事务ID、对应的操作命令以及绑定变量形成报文信息,并将所述报文信息发送给第二数据服务端;S203、所述第二数据服务端解析所述报文信息,并将业务请求放入请求队列;S204、所述第二数据服务端在有空闲进程时从所述请求队列获取所述业务请求,连接对应的数据库,并执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第三数据服务客户端;S205、判断当前的业务请求是否需要事务保持,若需要事务保持,则当前进程只能分配给具有相同的所述事务ID的请求使用,若不需要事务保持,则释放当前进程;S206、所述第三客户端发起第二次业务请求时,所述第三数据服务客户端产生与上一次业务请求所产生的事务ID相同事务ID;S207、所述第三数据服务客户端根据所述事务ID、对应的操作命令以及绑定变量形成报文信息,之后将所述报文信息发送给第二数据服务端;S208、所述第二数据服务端解析所述报文信息,并将对应的请求放入请求队列;S209、所述第二数据服务端判断是否存在所述事务ID的独占进程,若存在,则从所述请求队列获取对应的业务请求,连接对应的数据库,利用所述独占进程执行对应的所述操作命令,获得处理结果,并将所述处理结果响应给所述第三数据服务客户端;所述第三数据服务客户端将所述处理结果响应给所述第二数据服务客户端;S2010、第二客户端的向第二数据服务客户端发起第二次业务请求,所述第二数据服务客户端产生与上一次业务请求所产生的事务ID相同事务ID;S2011、所述第二数据服务客户端根据所述事务ID、对应的操作命令以及绑定变量形成报文信息,之后将所述报文信息发送给第二数据服务端;S2012、...

【专利技术属性】
技术研发人员:周祎春柳向前张维丛王新中孙刚于刚刘文斌陈玮秦岩房厚波
申请(专利权)人:中国移动通信集团宁夏有限公司
类型:发明
国别省市:宁夏,64

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1