一种跨域双活数据库事务处理方法与流程

文档序号:37280513发布日期:2024-03-12 21:19阅读:18来源:国知局
一种跨域双活数据库事务处理方法与流程

本发明属于数据库系统,涉及一种跨域双活数据库事务处理方法。


背景技术:

1、事务处理是数据库中的经典问题。数据库事务就是指作为单个逻辑单元执行的一系列操作。正常情况下,事务内的一系列操作都顺利进行,最终会完成一个事务,并且与事务相关的所有数据库信息也成功的更新。但是,如果某一个环节出现了问题,那么整个事务都会中止。一旦中止,数据库中所有信息都必须保持在提交前的状态不变,而数据库的事务正是用来保障这种情况下交易的平稳性和预测性的技术。

2、在跨域事务处理中,行业中传统的方式采用两阶段提交(2pc)的事务并发控制方案,通过多轮网络通信与上锁解锁数据项实现双活乃至多活数据库间的事务并发。这类方案通常需要多轮网络往返,对事务执行效率影响较大。一些最新的确定性事务并发控制方案是近年来在研究领域较为热门的方向。其利用确定性事务执行的特点来减少副本复制与保证数据一致性的开销。但是,这类方案在网络通信上依然需要多轮通信以实现多节点间的数据同步与事务协同执行。

3、在跨域数据库的副本复制方面,行业中常见的解决方案是主从复制架构以及其衍生而来的主从分片复制架构。这种架构的核心思想是维护一个数据库主副本并且同时拥有多个从副本。其优势在于可以将主节点上的读负载路由到从节点上以实现负载均衡。但其问题在于主节点上的写操作需要持续更新到从节点上以保证数据一致性。多主架构则是在维护多个数据库主副本。优势在于每个节点都可以进行读写操作,这使得节点间的负载均衡更容易处理。无主架构主要是通过仲裁协议比较单调版本号来避免过时的节点数据读取。其劣势在于可能存在由于多用户的写请求都需要发送给多个节点导致的跨节点延迟。

4、综合来看,现有的技术方案大都采用了2pc的事务处理与主从数据复制方案。这类方案往往需要复杂的共识协议以及多轮网络通信以保证数据一致性与高可用性,在通信与协调上通常会有较大的额外开销。其他的新兴技术方案包括采用了通过额外插件实现多主数据复制与2pc事务处理的传统单机数据库系统。而这类通过插件实现多主复制的数据库系统在运行时不可避免的需要调用插件中的功能,这可能会导致额外的系统开销。

5、calvin[1]是一种采用多主数据复制及确定性事务并发的数据库。其特点在于使用单线程锁管理器来扫描输入事务,并根据预先声明的读写集授予读写锁。calvin的缺陷在于,在多核机器乃至分布式环境下,一个单线程锁管理器很难使系统资源饱和。将数据库划分为每台机器的多个分区跨域缓解这一问题,但同时会通过引入更多的多分区事务来引入额外的开销,这些事务会因冗余执行而产生开销。

6、[1]a.thomson,t.diamond,s.weng,k.ren,p.shao,and d.j.abadi.calvin:fastdistributed transactions for partitioned database systems.in sigmodconference,pages 1–12,2012.

7、aria[2]是一种分布式确定性数据库,其通过数据分片实现分布式。其特点在于每个节点的远程事务需要路由到远程节点执行,并且在收到远程节点的执行结果之前该节点的工作线程会处于阻塞状态。同时在验证、提交阶段也需要多次网络通信来沟通远程节点以获知本地节点的事务能否提交。其缺点在于事务内存在较多远程请求时会因为多次网络往返而造成较大的事务延迟。

8、[2]yi lu,xiangyao yu,lei cao and samuel madden.aria:a fast andpractical deterministic oltp database.pvldb,13(11):2047-2060,2020。


技术实现思路

1、为解决上述技术问题,本发明的目的是提供一种跨域双活数据库事务处理方法,该方法有助于提高跨域场景下有限网络带宽利用率,并且减少事务吞吐率受网络带宽的影响,增大跨域场景下数据库事务处理对网络情况的容忍度。

2、本发明提供一种跨域双活数据库事务处理方法,包括:

3、步骤1:多节点接收事务请求,解析事务请求并积累将要执行的事务,同时由全局授时服务器给所有事务分配全局唯一且单调递增的版本号,以此确定全局上事务发生的先后顺序;

4、步骤2:各节点分别执行本节点收到的事务,各自生成本地的事务读写集,所有对数据库的修改都暂时保存到本地的事务读写集上;同时在访问数据库时将事务id保存到本节点的冲突标记表中,并安排一个监听线程监听远程节点的信息发送;

5、步骤3:本节点的当前批次全部事务执行完成后,将本地的事务写集和本节点的冲突标记表广播给全部远程节点,同时通过监听线程接收远程节点的冲突标记表和事务写集;

6、步骤4:若接收到全部远程节点的冲突标记表和写集并分别与本地冲突标记表和写集合并,则进行步骤6对事务进行检测和提交,否则将执行下一批次事务,并继续监听远程节点未提交的批次事务的冲突标记表和写集;

7、步骤5:如果执行下一批次事务时收到全部远程节点的未提交批次事务的冲突标记表和写集,则监听线程发出中断指令,全部工作线程在执行完当前事务后暂停当前批次内的事务执行,进行步骤6去执行就绪批次事务的检测和提交;然后继续执行被监听线程中断的批次事务;

8、步骤6:将每条事务id与冲突标记表中对应的记录进行比对,判断是否存在与其他事务的冲突,若事务无冲突,则将本地的事务写集中的数据写回数据库;反之中止,且安排在下一批次中重新执行;

9、步骤7:将远程节点的事务写集中能写回数据库的数据整合到数据库中,并将本节点接收到的事务执行结果返回客户端。

10、进一步的,所述版本号由事务批次id和事务批次内的事务id构成,以标记事务批次间的关系和事务批次内的关系。

11、进一步的,所述步骤2中冲突标记表中保存的每条事务id都是访问冲突标记表对应数据行的全部事务中的最小的事务id。

12、进一步的,所述步骤2多节点分别执行本节点收到的事务具体为:

13、在本节点上安排若干线程作为工作线程,循环从事务池中取事务执行,在单线程上,事务按照其逻辑串行执行;

14、进一步的,所述步骤3中通过监听线程接收其他节点的冲突标记表和事务写集具体为:

15、当收到远程节点发送的某个批次的冲突标记表和事务写集时,将其先保存到缓冲区中,同时继续监听其他节点的冲突标记表。

16、进一步的,所述步骤6中判断是否存在与其他事务的冲突具体为:当前事务id与冲突标记表中对应的记录不同则认为存在冲突。

17、进一步的,步骤6中判断是否存在与其他事务的冲突,若事务间存在冲突,中止事务,并安排在下一批次中重新执行该事务具体为:

18、将中止事务保留原有事务id安排到下一批事务中重新执行,由于保持了原有较小的事务id,该事务在下一批事务中的执行优先级更高,在后面批次重新执行中,冲突检测中保持相对优先的执行优先级。

19、本发明的一种跨域双活数据库事务处理方法,至少具有以下有益效果:

20、1、本发明方法减少了多主副本分布式数据库环境下多节点间网络通信量,同时使分布式条件下单节点内事务处理减少对其他节点的依赖,增大了分布式数据库对网络情况的容忍度。

21、2、本发明方法在复杂网络环境下仍能保持较好的事务吞吐量。相比传统的2pc事务并发控制协议,本发明所使用的并发控制方式并不需要多轮网络通信以正式提交事务,本发明仅需对网络数据传输进行校验以保证数据传输的正确性,同时不同批次间的事务在网络间通信是异步的,可以最大限度保证批次间事务执行受数据同步的影响最小,进而实现数据库近似线性的横向扩展能力。

22、3、本发明会定期在多节点间通过共识协议交换服务器状态,若某节点发生故障,故障节点接收的事务会被路由到其他正常节点上,保证数据库事务处理系统的可用性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1