System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种数据库变更数据采集的方法及系统技术方案_技高网

一种数据库变更数据采集的方法及系统技术方案

技术编号:40548717 阅读:7 留言:0更新日期:2024-03-05 19:07
本发明专利技术提供了一种数据库变更数据采集的方法及系统,包括:数据库处理事务日志,提取事务元信息,并按配置输出记录变更信息;日志传输器按照事务标识将记录归类,并根据事务类型执行相应的操作;数据采集者从消息队列读取已提交事务记录。本发明专利技术有益效果:对数据采集者保证了记录变更的事务性,解决了长事务、大事务带来的性能问题,大大提高数据库的性能和可靠性,提升数据库的使用体验。

【技术实现步骤摘要】

本专利技术属于计算机,尤其是涉及一种数据库变更数据采集的方法及系统


技术介绍

1、数据库变更数据采集通常是利用逻辑日志输出方式来实现,每条日志主要是数据库表记录的增、删、改的内容,这就对输出的日志提出了两点要求:

2、必须在事务提交之后,才能输出该事务内变更的表记录的日志;

3、随着时间的推进,数据库内多个并行的事务会按照某种次序提交,那么我们输出的日志也必须保持这种提交顺序。换句话说,如果某个已提交事务内的日志没有输出完毕,其后面提交的事务的日志就不能输出。

4、这两点要求,会带来一些问题:

5、特别是当某个事务内进行了大量变更的时候,这种场景下,我们需要在数据库内缓存这个事务涉及的所有变更,直到该事务提交或终止,这会对数据库所在机器的存储造成较大的压力。

6、此场景下,如若内存不允许缓存如此多的数据,还需要将这些日志落入磁盘。当该事务提交的时刻,仍要从磁盘将数据读取后再输出,这不仅要消耗系统的计算资源,而且因为涉及大量磁盘操作,也会占用相当长的操作时间,阻塞了后续事务的日志的输出,造成整个数据处理系统的吞吐量下降,数据处理时延的增长,系统性能的抖动。


技术实现思路

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、各种性能压力其实与数据库本身职责并不相关,消息队列组件,如kafka,本身就是适用于此压力场景的解决方案,通过本专利技术,将这些压力从数据库中解放出来,放到更适合的消息队列中,从而解决长事务、大事务带来的性能问题,大大提高数据库的性能和可靠性,提升数据库的使用体验。

本文档来自技高网
...

【技术保护点】

1.一种数据库变更数据采集的方法,其特征在于,包括:

2.根据权利要求1所述的一种数据库变更数据采集的方法,其特征在于:

3.根据权利要求1所述的一种数据库变更数据采集的方法,其特征在于:日志传输器根据事务类型执行相应的操作的过程包括:

4.一种数据库变更数据采集的系统,其特征在于,包括:

5.根据权利要求4所述的一种数据库变更数据采集的系统,其特征在于:

6.根据权利要求4所述的一种数据库变更数据采集的系统,其特征在于:日志传输器接收从数据库传来的逻辑日志信息;

7.根据权利要求4所述的一种数据库变更数据采集的系统,其特征在于:

【技术特征摘要】

1.一种数据库变更数据采集的方法,其特征在于,包括:

2.根据权利要求1所述的一种数据库变更数据采集的方法,其特征在于:

3.根据权利要求1所述的一种数据库变更数据采集的方法,其特征在于:日志传输器根据事务类型执行相应的操作的过程包括:

4.一种数据库变更数据采集的系...

【专利技术属性】
技术研发人员:谷裕
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

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

1