CN116991858A - 变更数据的采集方法、采集装置和数据采集系统 - Google Patents
变更数据的采集方法、采集装置和数据采集系统 Download PDFInfo
- Publication number
- CN116991858A CN116991858A CN202310939444.0A CN202310939444A CN116991858A CN 116991858 A CN116991858 A CN 116991858A CN 202310939444 A CN202310939444 A CN 202310939444A CN 116991858 A CN116991858 A CN 116991858A
- Authority
- CN
- China
- Prior art keywords
- target
- data
- acquisition
- change
- name
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 230000008859 change Effects 0.000 claims abstract description 298
- 238000005192 partition Methods 0.000 claims abstract description 225
- 238000013507 mapping Methods 0.000 claims abstract description 117
- 230000003213 activating effect Effects 0.000 claims abstract description 22
- 238000003860 storage Methods 0.000 claims description 30
- 238000013480 data collection Methods 0.000 claims description 13
- 238000013501 data transformation Methods 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 16
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/23—Updating
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种变更数据的采集方法、采集装置和数据采集系统,该方法包括:在检测到有目标事件发生的情况下,获取目标事件的目标数据表名和目标数据库名;获取目标映射表,并根据目标映射表和目标数据表名确定目标基表对应的目标分区表;获取第一变更数据,并将第一变更数据写入目标分区表;激活数据采集集群中的目标采集线程对目标分区表进行数据采集得到变更记录,并将变更记录发送至下游端。该方法解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题,并且本申请设置了多个实例,在采集线程出现故障的情况下能够保持数据采集正常进行实现了高可用性。
Description
技术领域
本发明涉及数据库数据同步领域,具体而言,涉及一种变更数据的采集方法、采集装置、计算机可读存储介质和数据采集系统。
背景技术
在数据库数据同步领域,数据表上发生的数据修改行为一般通过解析事务日志或者基于触发器捕获。基于事务日志的方式,存在一定的弊端:不同数据库之间的事务日志格式并不统一,事务日志和数据库产品的耦合密切,日志解析相对复杂,技术实现相对困难。相比事务日志解析方式,触发器通过事先定义事件监听,在目标事件发生时可以捕获行记录变化前后的数据,屏蔽了日志解析难题,且当前主流的数据库都支持触发器,因此具备良好的通用性,并且可以保证数据一致性。
基于触发器的数据变更采集方法通常将捕获到的表更数据写入一个表更表(日志表),一个常驻数据采集服务定时读取表更表抽取待采集数据。该方法主要存在两个问题:1)变更数据写入同一个表更表,高并发写入场景下表更数据不能及时被消费和清除,容易导致数据积压、单表容量过大,降低数据库IO访问速度,增加磁盘存储压力;2)采集服务单实例部署,存在服务单点问题,服务质量和可靠性不足,无法提供高效的数据采集能力和高可用能力。
发明内容
本申请的主要目的在于提供一种变更数据的采集方法、采集装置、计算机可读存储介质和数据采集系统,以至少解决现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种变更数据的采集方法,包括:在检测到有目标事件发生的情况下,获取所述目标事件的目标数据表名和目标数据库名,所述目标事件为目标数据库中目标基表发生数据变更,所述目标数据表名为所述目标基表的名称,所述目标数据库名为所述目标基表所属的所述目标数据库的名称,所述目标数据库为发生数据变更的数据库,所述目标基表为所述目标数据库中的基表中的一个或多个;获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,所述目标映射表为与所述目标数据库名称一致的映射表,所述映射表包括所述基表与分区表的对应关系,不同所述分区表用于记录存储于不同位置的所述基表中的数据变更;获取第一变更数据,并将所述第一变更数据写入所述目标分区表,所述第一变更数据为所述目标基表中发生数据变更的字段;激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述目标采集线程与所述目标分区表一一对应,所述下游端为所述变更记录的消费者,所述变更记录包括所述第一变更数据和对应的所述目标数据表名和所述目标数据库名。
可选地,获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,包括:根据所述目标数据库名确定所述目标映射表,数据库名与所述映射表一一对应,所述数据库名为各数据库的名称;根据所述目标数据表名查阅所述目标映射表,以确定与所述目标基表对应的所述分区表,得到所述目标分区表。
可选地,获取第一变更数据,并将所述第一变更数据写入所述目标分区表,包括:获取所述目标基表中发生数据变更的字段,确定发生变更的所述字段为所述第一变更数据;获取所述第一变更数据对应的所述目标数据库名、所述目标数据表名、主键信息、变更类型和采集参数,所述主键信息用于标识发生数据变换的字段,所述变更类型包括插入、删除和更新,所述采集参数用于表征所述第一变更数据是否被所述采集线程采集;将所述目标数据库名、所述目标数据表名、所述主键信息、所述变更类型、所述采集参数和所述第一变更数据写入到所述目标分区表的对应位置。
可选地,在激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录之前,所述方法还包括:构建多个所述采集线程,所述采集线程与所述分区表一一对应;生成第一序列号,所述第一序列号用于标识所述采集线程,所述第一序列号与所述采集线程一一对应;将多个采集线程根据所述第一序列号组合成采集线程组得到采集实例;根据多个所述采集线程构建多个分布式锁,所述分布式锁用于控制所述采集线程对所述分区表的访问权限;复制所述采集实例得到多个所述采集实例,根据多个所述采集实例和多个所述分布式锁构建所述数据采集集群。
可选地,根据多个所述采集线程构建多个分布式锁,包括:生成第二序列号,所述第二序列号用于指示所述采集线程识别对应的所述分布式锁,所述第二序列号与所述分布式锁一一对应,所述第一序列号与所述第二序列号一一对应;配置锁状态信息,所述锁状态信息用于表征所述分布式锁是否处于占用状态;配置锁占用信息,所述锁占用信息用于表征所述采集线程占用所述分布式锁是否超时;根据所述第二序列号、所述锁状态信息和锁占用信息构建多个分布式锁。
可选地,激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,包括:获取分区表数量并根据所述分区表数量激活各所述采集实例中相同数量的所述采集线程,得到多个激活采集线程;控制所述激活采集线程竞争性接入对应的所述分布式锁,所述竞争性接入为对应相同所述第一序列号的所述激活采集线程同时仅有一个接入到对应第二序列号与所述第一序列号相同的所述分布式锁;根据所述第一序列号和第三序列号控制各所述采集线程获取对应目标分区表中的数据,得到所述变更记录,所述第三序列号为所述分区表的序列号,所述第三序列号与所述第一序列号一一对应。
可选地,激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述方法还包括:在得到所述变更记录的情况下,更新各所述采集参数为已采集状态;在将所述变更记录发送至下游端的情况下,经过预设时间段后删除各所述分区表中对应所述采集参数为已采集状态的数据。
根据本申请的另一方面,提供了一种变更数据的采集装置,所述装置包括:第一获取单元,用于在检测到有目标事件发生的情况下,获取所述目标事件的目标数据表名和目标数据库名,所述目标事件为目标数据库中目标基表发生数据变更,所述目标数据表名为所述目标基表的名称,所述目标数据库名为所述目标基表所属的所述目标数据库的名称,所述目标数据库为发生数据变更的数据库,所述目标基表为所述目标数据库中的基表中的一个或多个;第二获取单元,用于获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,所述目标映射表为与所述目标数据库名称一致的映射表,所述映射表包括所述基表与分区表的对应关系,不同所述分区表用于记录存储于不同位置的所述基表中的数据变更;第三获取单元,用于获取第一变更数据,并将所述第一变更数据写入所述目标分区表,所述第一变更数据为所述目标基表中发生数据变更的字段;采集单元,用于激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述目标采集线程与所述目标分区表一一对应,所述下游端为所述变更记录的消费者,所述变更记录包括所述第一变更数据和对应的所述目标数据表名和所述目标数据库名。
根据本申请的再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行任意一种所述的方法。
根据本申请的又一方面,提供了一种数据采集系统,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的方法。
应用本申请的技术方案,在上述变更数据的采集方法中,首先,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;然后,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;之后,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;最后,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。本申请设置多个分区表用于记录数据库中不同分区的基表,不同分区的基表的变更数据可以同步存储,并且本申请通过分布式集群进行数据采集,设置多个线程分别采集不同分区表中的变更记录进行同步输出,解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。并且本申请设置了多个实例,在当前正在运行的采集实例中的采集线程出现故障的情况下,调用其他实例中的对应采集线程保持数据采集正常进行,实现了高可用性。
附图说明
图1示出了根据本申请的实施例中提供的一种执行变更数据的采集方法的移动终端的硬件结构框图;
图2示出了根据本申请的实施例提供的一种变更数据的采集方法的流程示意图;
图3示出了根据本申请的实施例提供的一种数据采集集群的原理框图;
图4示出了根据本申请的一种实施例提供的一种具体的变更数据的采集方法的流程示意图;
图5示出了根据本申请的实施例提供的一种变更数据的采集装置的结构框图。
其中,上述附图包括以下附图标记:
102、处理器;104、存储器;106、传输设备;108、输入输出设备。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
触发器:与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由修改事件来触发激活;
存储过程:一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字和参数来调用存储过程。
正如背景技术中所介绍的,现有技术中变更数据写入同一个表更表,高并发写入场景下表更数据不能及时被消费和清除,容易导致数据积压、单表容量过大,降低数据库IO访问速度,增加磁盘存储压力,采集服务单实例部署,存在服务单点问题,服务质量和可靠性不足,无法提供高效的数据采集能力和高可用能力,为解决现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题,本申请的实施例提供了一种变更数据的采集方法、采集装置、计算机可读存储介质和数据采集系统。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种变更数据的采集方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的设备信息的显示方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的变更数据的采集方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本申请实施例的变更数据的采集方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
具体地,在专用的数据采集数据库中配置针对所有数据库的触发器,上述触发器与数据库一一对应,上述触发器用于监测数据库中的基表的数据变更,即监测上述目标事件,在目标事件发生的情况下,会触发触发器中配置的存储过程,将变更数据的相关监测数据存储到对应位置,在存储过程中,首先获取上述目标数据库名和目标数据表名。
步骤S202,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
具体地,本申请针对各数据库分别设置有多个变更分区表,即上述分区表,不同的变更分区表用于存储数据库中不同位置的基表的数据变更,即对基表的数据变更进行记录。为保证各基表的数据被对应的变更分区表记录,在针对各数据库分别设置有记录基表和变更分区表映射关系的分区映射表,即上述映射表。
在本申请的一种实施例中,上述分区映射表的格式如表1所示,其中,tableName为上述数据表名,partitionTableName为上述分区表的表名。
表1
序号 | 字段名称 | 数据类型 | 主键 | 说明 |
1 | tableName | text | Y | 数据表名 |
2 | partitionTableName | text | Y | 变更分区表名 |
此外,上述映射表还有用于标识本映射表的表名,该表名与上述数据库名保持一致。
步骤S203,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
具体地,确定目标变更表之后,获取目标基表中发生数据变更的字段,并确定该字段在目标基表中的位置信息和对应的变更类型,记录至上述目标分区表的对应位置。
步骤S204,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
具体地,周期性的监测上述数据采集数据库中的各变更表的信息更新,根据发生信息更新的变更表激活与变更表对应的采集线程,同时获取多个变更表对基表中发生数据变更的字段的记录,并发送至上述下游段进行下一步流程。
通过本实施例,首先,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;然后,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;之后,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;最后,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。本申请设置多个分区表用于记录数据库中不同分区的基表,不同分区的基表的变更数据可以同步存储,并且本申请通过分布式集群进行数据采集,设置多个线程分别采集不同分区表中的变更记录进行同步输出,解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。并且本申请设置了多个实例,在当前正在运行的采集实例中的采集线程出现故障的情况下,调用其他实例中的对应采集线程保持数据采集正常进行,实现了高可用性。
为了将发生数据变更的字段记录到对应位置,在一种可选的实施方式中,上述步骤S202包括:
步骤S2021,根据上述目标数据库名确定上述目标映射表,数据库名与上述映射表一一对应,上述数据库名为各数据库的名称;
具体地,上述映射表与数据库一一对应,名称保持一致,进而根据发生数据变更的基表所属的数据库的名称获取记载该数据库中基表与对应分区表映射关系的映射表,即上述目标映射表。
步骤S2022,根据上述目标数据表名查阅上述目标映射表,以确定与上述目标基表对应的上述分区表,得到上述目标分区表。
具体地,在确定目标映射表之后,根据发生数据变更的基表的数据表名查阅目标映射表,根据目标映射表中的映射关系确定目标分区表。
为了记录上述基表中的数据表更,在一种可选的实施方式中,上述步骤S203包括:
步骤S2031,获取上述目标基表中发生数据变更的字段,确定发生变更的上述字段为上述第一变更数据;
具体地,在确定上述目标分区表之后,上述触发器执行存储过程,截取目标基表中发生数据变更的字段,即上述第一变更数据。
步骤S2032,获取上述第一变更数据对应的上述目标数据库名、上述目标数据表名、主键信息、变更类型和采集参数,上述主键信息用于标识发生数据变换的字段,上述变更类型包括插入、删除和更新,上述采集参数用于表征上述第一变更数据是否被上述采集线程采集;
具体地,根据上述字段确定其在上述目标基表中的位置,根据对应的位置确定该字段对应的主键信息,然后根据主键信息和字段确定对应的变更类型,并设置对应的采集参数为未采集状态。
步骤S2033,将上述目标数据库名、上述目标数据表名、上述主键信息、上述变更类型、上述采集参数和上述第一变更数据写入到上述目标分区表的对应位置。
具体地,不同字段对应的上述记录信息,按照数据变更的发生顺序写入到目标分区表中的对应位置。
在本申请的一种实施例中,上述分区表的格式如表2所示,其中,dbName为上述数据库名,tableName为上述数据表名,priKey为上述主键信息,updateType为上述变更类型,isSync为上述采集参数,采集参数设置为0时表示该记录为未采集状态,采集参数设置为1时表示该记录为已采集状态。
表2
为了构建上述数据采集集群,在一种可选的实施方式中,在激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录之前,上述方法还包括:
步骤S301,构建多个上述采集线程,上述采集线程与上述分区表一一对应;
具体地,如图3所示,组装对应的SQL语句组成获取对应目标分区表中的数据变更记录的线程,得到上述采集线程,即为图3中的Thread。
步骤S302,生成第一序列号,上述第一序列号用于标识上述采集线程,上述第一序列号与上述采集线程一一对应;
具体地,针对上述采集线程和目标分区表的对应关系赋予对应的编号,对应的采集线程和目标分区表的名称中的编号保持一致,赋予上述采集线程的编号即为上述第一序列号,如图3所示,Thread-1中1即为该线程对应的编号。
步骤S303,将多个采集线程根据上述第一序列号组合成采集线程组得到采集实例;
具体地,根据分区表的数目设置对应数量的上述采集线程,由上述若干采集线程共同构成一个采集实例,任意一个采集实例都能够实现对所有数据库的变更数据采集。
步骤S304,根据多个上述采集线程构建多个分布式锁,上述分布式锁用于控制上述采集线程对上述分区表的访问权限;
具体地,如图3所示,对应每一个上述采集线程构建对应的权限控制锁,即为上述分布式锁,上述分布式锁与上述采集线程一一对应。
步骤S305,复制上述采集实例得到多个上述采集实例,根据多个上述采集实例和多个上述分布式锁构建上述数据采集集群。
具体地,如图3所示,为了保持数据采集集群在采集实例中的线程发生故障时能够保持数据采集进程的正常进行,本申请中设置了多个相同的采集实例。
为了控制上述采集线程对目标分区表的数据采集,在一种可选的实施方式中,上述步骤S304包括:
步骤S3041,生成第二序列号,上述第二序列号用于指示上述采集线程识别对应的上述分布式锁,上述第二序列号与上述分布式锁一一对应,上述第一序列号与上述第二序列号一一对应;
具体地,为了实现分布式锁对采集线程的控制,对上述分布式锁赋予与上述采集线程对应的编号,如图3所示,Thread-1对应的分布式锁为lock-1。
步骤S3042,配置锁状态信息,上述锁状态信息用于表征上述分布式锁是否处于占用状态;
具体地,配置sentnx参数,用于表征分布式锁是否处于占用状态,在采集线程接入分布式锁时,会根据占用状态反馈对应的参数值,反馈参数值为0时表示当前有采集线程占用分布式锁,反馈参数值为1时表示当前没有采集线程占用分布式锁。
步骤S3043,配置锁占用信息,上述锁占用信息用于表征上述采集线程占用上述分布式锁是否超时;
具体地,配置value参数,用于在有采集线程接入分布式锁时开始计时,在时间到达参数值时候自动断开接入,断开失败判定超时,对下一个接入的采集线程反馈加锁失败。
步骤S3044,根据上述第二序列号、上述锁状态信息和锁占用信息构建多个分布式锁。
具体地,根据上述参数配置对应各采集线程的分布式锁。
为了通过上述采集线程对目标分区表进行数据采集,在一种可选的实施方式中,上述步骤S204包括:
步骤S2041,获取分区表数量并根据上述分区表数量激活各上述采集实例中相同数量的上述采集线程,得到多个激活采集线程;
具体地,根据记录信息发生更新的分区表的名称中的编号,激活数据采集集群的采集实例中对应编号的采集线程,得到对应的上述激活采集线程。
步骤S2042,控制上述激活采集线程竞争性接入对应的上述分布式锁,上述竞争性接入为对应相同上述第一序列号的上述激活采集线程同时仅有一个接入到对应第二序列号与上述第一序列号相同的上述分布式锁;
具体地,如图3所示,对应相同编号的采集线程竞争性接入对应编号的分布式锁,即名称为Thread-1的各采集线程竞争性接入名称为lock-1的分布式锁,一个分布式锁在同一时间仅允许一个采集线程接入。
步骤S2043,根据上述第一序列号和第三序列号控制各上述采集线程获取对应目标分区表中的数据,得到上述变更记录,上述第三序列号为上述分区表的序列号,上述第三序列号与上述第一序列号一一对应。
具体地,在采集线程接入上述分布式锁成功之后,根据采集线程编号确定采集目标,即对编号与采集线程一致的目标分区表进行数据采集。如图3所示,名称为Thread-1的采集线程采集编号为1的目标分区表为名称为PARTITION_TABLE_1的分区表,选择目标分区表中对应采集参数isSync=0的数据进行采集。
为了避免变更数据的重复采集,在一种可选的实施方式中,上述步骤S204还包括:
步骤S2044,在得到上述变更记录的情况下,更新各上述采集参数为已采集状态;
具体地,在上述采集线程完成数据采集之后,将已采集的数据对应的采集参数配置为isSync=1。
步骤S2045,在将上述变更记录发送至下游端的情况下,经过预设时间段后删除各上述分区表中对应上述采集参数为已采集状态的数据。
具体地,在后台数据清理线程定期删除变更分区表中isSync=1的记录,避免占用数据库的存储资源。
为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的变更数据的采集方法的实现过程进行详细说明。
本实施例涉及一种具体的变更数据的采集方法,如图4所示,包括如下步骤:
步骤S1:采集服务读取变更分区表配置参数partitionNum,即为变更分区表的数量;
步骤S2:创建一个后台数据清理线程和partitionNum个采集线程,为每个线程分配一个线程标识号seq,激活采集线程;
步骤S3:采集线程根据seq编号在redis集群中抢占标识号相同分布式锁,分布式锁命名格式为lock-seq,如果抢占成功,则转步骤S4;否则,继续步骤S3;
步骤S4:采集线程根据seq编号,确定目标变更分区表,目标分区表命名形式为PARTITION_TABLE_seq,然后利用数据库代理组件查询该目标变更分区表,选择isSync=0的记录,获取满足条件的记录;
步骤S5:遍历满足条件的所有记录,根据库名、表名和主键查询基表,获取该记录的完整数据信息,供下游端处理;
步骤S6:修改变更分区表所有步骤S5已处理的数据,设置其isSync=1,后台数据清理线程定期删除变更分区表中isSync=1的数据,以减少变更分区表的数据积压。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种变更数据的采集装置,需要说明的是,本申请实施例的变更数据的采集装置可以用于执行本申请实施例所提供的用于变更数据的采集方法。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
以下对本申请实施例提供的变更数据的采集装置进行介绍。
图5是根据本申请实施例的变更数据的采集装置的结构框图。如图5所示,该装置包括:
第一获取单元10,用于在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
具体地,在专用的数据采集数据库中配置针对所有数据库的触发器,上述触发器与数据库一一对应,上述触发器用于监测数据库中的基表的数据变更,即监测上述目标事件,在目标事件发生的情况下,会触发触发器中配置的存储过程,将变更数据的相关监测数据存储到对应位置,在存储过程中,首先获取上述目标数据库名和目标数据表名。
第二获取单元20,用于获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
具体地,本申请针对各数据库分别设置有多个变更分区表,即上述分区表,不同的变更分区表用于存储数据库中不同位置的基表的数据变更,即对基表的数据变更进行记录。为保证各基表的数据被对应的变更分区表记录,在针对各数据库分别设置有记录基表和变更分区表映射关系的分区映射表,即上述映射表。
在本申请的一种实施例中,上述分区映射表的格式如表1所示。
第三获取单元30,用于获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
具体地,确定目标变更表之后,获取目标基表中发生数据变更的字段,并确定该字段在目标基表中的位置信息和对应的变更类型,记录至上述目标分区表的对应位置。
采集单元40,用于激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
具体地,周期性的监测上述数据采集数据库中的各变更表的信息更新,根据发生信息更新的变更表激活与变更表对应的采集线程,同时获取多个变更表对基表中发生数据变更的字段的记录,并发送至上述下游段进行下一步流程。
通过本实施例,第一获取单元在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;第二获取单元获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;第三获取单元获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;采集单元激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。本申请设置多个分区表用于记录数据库中不同分区的基表,不同分区的基表的变更数据可以同步存储,并且本申请通过分布式集群进行数据采集,设置多个线程分别采集不同分区表中的变更记录进行同步输出,解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。并且本申请设置了多个实例,在当前正在运行的采集实例中的采集线程出现故障的情况下,调用其他实例中的对应采集线程保持数据采集正常进行,实现了高可用性。
为了将发生数据变更的字段记录到对应位置,在一种可选的实施方式中,上述第二获取单元包括:
确定模块,用于根据上述目标数据库名确定上述目标映射表,数据库名与上述映射表一一对应,上述数据库名为各数据库的名称;
具体地,上述映射表与数据库一一对应,名称保持一致,进而根据发生数据变更的基表所属的数据库的名称获取记载该数据库中基表与对应分区表映射关系的映射表,即上述目标映射表。
查阅模块,用于根据上述目标数据表名查阅上述目标映射表,以确定与上述目标基表对应的上述分区表,得到上述目标分区表。
具体地,在确定目标映射表之后,根据发生数据变更的基表的数据表名查阅目标映射表,根据目标映射表中的映射关系确定目标分区表。
为了记录上述基表中的数据表更,在一种可选的实施方式中,上述第三获取单元包括:
第一获取模块,用于获取上述目标基表中发生数据变更的字段,确定发生变更的上述字段为上述第一变更数据;
具体地,在确定上述目标分区表之后,上述触发器执行存储过程,截取目标基表中发生数据变更的字段,即上述第一变更数据。
第二获取模块,用于获取上述第一变更数据对应的上述目标数据库名、上述目标数据表名、主键信息、变更类型和采集参数,上述主键信息用于标识发生数据变换的字段,上述变更类型包括插入、删除和更新,上述采集参数用于表征上述第一变更数据是否被上述采集线程采集;
具体地,根据上述字段确定其在上述目标基表中的位置,根据对应的位置确定该字段对应的主键信息,然后根据主键信息和字段确定对应的变更类型,并设置对应的采集参数为未采集状态。
写入模块,用于将上述目标数据库名、上述目标数据表名、上述主键信息、上述变更类型、上述采集参数和上述第一变更数据写入到上述目标分区表的对应位置。
具体地,不同字段对应的上述记录信息,按照数据变更的发生顺序写入到目标分区表中的对应位置。
在本申请的一种实施例中,上述分区表的格式如表2所示。
为了构建上述数据采集集群,在一种可选的实施方式中,上述装置还包括:
第一构建单元,用于在激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录之前,构建多个上述采集线程,上述采集线程与上述分区表一一对应;
具体地,如图3所示,组装对应的SQL语句组成获取对应目标分区表中的数据变更记录的线程,得到上述采集线程,即为图3中的Thread。
生成单元,用于生成第一序列号,上述第一序列号用于标识上述采集线程,上述第一序列号与上述采集线程一一对应;
具体地,针对上述采集线程和目标分区表的对应关系赋予对应的编号,对应的采集线程和目标分区表的名称中的编号保持一致,赋予上述采集线程的编号即为上述第一序列号,如图3所示,Thread-1中1即为该线程对应的编号。
组合单元,用于将多个采集线程根据上述第一序列号组合成采集线程组得到采集实例;
具体地,根据分区表的数目设置对应数量的上述采集线程,由上述若干采集线程共同构成一个采集实例,任意一个采集实例都能够实现对所有数据库的变更数据采集。
第二构建单元,用于根据多个上述采集线程构建多个分布式锁,上述分布式锁用于控制上述采集线程对上述分区表的访问权限;
具体地,如图3所示,对应每一个上述采集线程构建对应的权限控制锁,即为上述分布式锁,上述分布式锁与上述采集线程一一对应。
复制单元,用于复制上述采集实例得到多个上述采集实例,根据多个上述采集实例和多个上述分布式锁构建上述数据采集集群。
具体地,如图3所示,为了保持数据采集集群在采集实例中的线程发生故障时能够保持数据采集进程的正常进行,本申请中设置了多个相同的采集实例。
为了控制上述采集线程对目标分区表的数据采集,在一种可选的实施方式中,上述第二构建单元包括:
生成模块,用于生成第二序列号,上述第二序列号用于指示上述采集线程识别对应的上述分布式锁,上述第二序列号与上述分布式锁一一对应,上述第一序列号与上述第二序列号一一对应;
具体地,为了实现分布式锁对采集线程的控制,对上述分布式锁赋予与上述采集线程对应的编号,如图3所示,Thread-1对应的分布式锁为lock-1。
第一配置模块,用于配置锁状态信息,上述锁状态信息用于表征上述分布式锁是否处于占用状态;
具体地,配置sentnx参数,用于表征分布式锁是否处于占用状态,在采集线程接入分布式锁时,会根据占用状态反馈对应的参数值,反馈参数值为0时表示当前有采集线程占用分布式锁,反馈参数值为1时表示当前没有采集线程占用分布式锁。
第二配置模块,用于配置锁占用信息,上述锁占用信息用于表征上述采集线程占用上述分布式锁是否超时;
具体地,配置value参数,用于在有采集线程接入分布式锁时开始计时,在时间到达参数值时候自动断开接入,断开失败判定超时,对下一个接入的采集线程反馈加锁失败。
构建模块,用于根据上述第二序列号、上述锁状态信息和锁占用信息构建多个分布式锁。
具体地,根据上述参数配置对应各采集线程的分布式锁。
为了通过上述采集线程对目标分区表进行数据采集,在一种可选的实施方式中,上述采集单元包括:
第三获取模块,用于获取分区表数量并根据上述分区表数量激活各上述采集实例中相同数量的上述采集线程,得到多个激活采集线程;
具体地,根据记录信息发生更新的分区表的名称中的编号,激活数据采集集群的采集实例中对应编号的采集线程,得到对应的上述激活采集线程。
接入模块,用于控制上述激活采集线程竞争性接入对应的上述分布式锁,上述竞争性接入为对应相同上述第一序列号的上述激活采集线程同时仅有一个接入到对应第二序列号与上述第一序列号相同的上述分布式锁;
具体地,如图3所示,对应相同编号的采集线程竞争性接入对应编号的分布式锁,即名称为Thread-1的各采集线程竞争性接入名称为lock-1的分布式锁,一个分布式锁在同一时间仅允许一个采集线程接入。
第四获取模块,用于根据上述第一序列号和第三序列号控制各上述采集线程获取对应目标分区表中的数据,得到上述变更记录,上述第三序列号为上述分区表的序列号,上述第三序列号与上述第一序列号一一对应。
具体地,在采集线程接入上述分布式锁成功之后,根据采集线程编号确定采集目标,即对编号与采集线程一致的目标分区表进行数据采集。如图3所示,名称为Thread-1的采集线程采集编号为1的目标分区表为名称为PARTITION_TABLE_1的分区表,选择目标分区表中对应采集参数isSync=0的数据进行采集。
为了避免变更数据的重复采集,在一种可选的实施方式中,上述采集单元还包括:
更新模块,用于在得到上述变更记录的情况下,更新各上述采集参数为已采集状态;
具体地,在上述采集线程完成数据采集之后,将已采集的数据对应的采集参数配置为isSync=1。
删除模块,用于在将上述变更记录发送至下游端的情况下,经过预设时间段后删除各上述分区表中对应上述采集参数为已采集状态的数据。
具体地,在后台数据清理线程定期删除变更分区表中isSync=1的记录,避免占用数据库的存储资源。
上述变更数据的采集装置包括处理器和存储器,上述第一获取单元、第二获取单元、第三获取单元和采集单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来避免因数据积压导致数据采集效率降低。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在上述程序运行时控制上述计算机可读存储介质所在设备执行上述变更数据的采集方法。
具体地,变更数据的采集方法包括:
步骤S201,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
步骤S202,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
步骤S203,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
步骤S204,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述变更数据的采集方法。
具体地,变更数据的采集方法包括:
步骤S201,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
步骤S202,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
步骤S203,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
步骤S204,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
本发明实施例提供了一种数据采集系统,数据采集系统包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S201,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
步骤S202,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
步骤S203,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
步骤S204,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S201,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;
步骤S202,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;
步骤S203,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;
步骤S204,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的变更数据的采集方法,首先,在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;然后,获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;之后,获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;最后,激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。本申请设置多个分区表用于记录数据库中不同分区的基表,不同分区的基表的变更数据可以同步存储,并且本申请通过分布式集群进行数据采集,设置多个线程分别采集不同分区表中的变更记录进行同步输出,解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。并且本申请设置了多个实例,在当前正在运行的采集实例中的采集线程出现故障的情况下,调用其他实例中的对应采集线程保持数据采集正常进行,实现了高可用性。
2)、本申请的变更数据的采集装置,第一获取单元在检测到有目标事件发生的情况下,获取上述目标事件的目标数据表名和目标数据库名,上述目标事件为目标数据库中目标基表发生数据变更,上述目标数据表名为上述目标基表的名称,上述目标数据库名为上述目标基表所属的上述目标数据库的名称,上述目标数据库为发生数据变更的数据库,上述目标基表为上述目标数据库中的基表中的一个或多个;第二获取单元获取目标映射表,并根据上述目标映射表和上述目标数据表名确定上述目标基表对应的目标分区表,上述目标映射表为与上述目标数据库名称一致的映射表,上述映射表包括上述基表与分区表的对应关系,不同上述分区表用于记录存储于不同位置的上述基表中的数据变更;第三获取单元获取第一变更数据,并将上述第一变更数据写入上述目标分区表,上述第一变更数据为上述目标基表中发生数据变更的字段;采集单元激活数据采集集群中的目标采集线程对上述目标分区表进行数据采集得到变更记录,并将上述变更记录发送至下游端,上述目标采集线程与上述目标分区表一一对应,上述下游端为上述变更记录的消费者,上述变更记录包括上述第一变更数据和对应的上述目标数据表名和上述目标数据库名。本申请设置多个分区表用于记录数据库中不同分区的基表,不同分区的基表的变更数据可以同步存储,并且本申请通过分布式集群进行数据采集,设置多个线程分别采集不同分区表中的变更记录进行同步输出,解决了现有技术中单更新表进行变更数据记录同时单线程进行数据采集在高并发场景下会产生数据积压,降低数据采集效率的问题。并且本申请设置了多个实例,在当前正在运行的采集实例中的采集线程出现故障的情况下,调用其他实例中的对应采集线程保持数据采集正常进行,实现了高可用性。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种变更数据的采集方法,其特征在于,包括:
在检测到有目标事件发生的情况下,获取所述目标事件的目标数据表名和目标数据库名,所述目标事件为目标数据库中目标基表发生数据变更,所述目标数据表名为所述目标基表的名称,所述目标数据库名为所述目标基表所属的所述目标数据库的名称,所述目标数据库为发生数据变更的数据库,所述目标基表为所述目标数据库中的基表中的一个或多个;
获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,所述目标映射表为与所述目标数据库名称一致的映射表,所述映射表包括所述基表与分区表的对应关系,不同所述分区表用于记录存储于不同位置的所述基表中的数据变更;
获取第一变更数据,并将所述第一变更数据写入所述目标分区表,所述第一变更数据为所述目标基表中发生数据变更的字段;
激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述目标采集线程与所述目标分区表一一对应,所述下游端为所述变更记录的消费者,所述变更记录包括所述第一变更数据和对应的所述目标数据表名和所述目标数据库名。
2.根据权利要求1所述的方法,其特征在于,获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,包括:
根据所述目标数据库名确定所述目标映射表,数据库名与所述映射表一一对应,所述数据库名为各数据库的名称;
根据所述目标数据表名查阅所述目标映射表,以确定与所述目标基表对应的所述分区表,得到所述目标分区表。
3.根据权利要求1所述的方法,其特征在于,获取第一变更数据,并将所述第一变更数据写入所述目标分区表,包括:
获取所述目标基表中发生数据变更的字段,确定发生变更的所述字段为所述第一变更数据;
获取所述第一变更数据对应的所述目标数据库名、所述目标数据表名、主键信息、变更类型和采集参数,所述主键信息用于标识发生数据变换的字段,所述变更类型包括插入、删除和更新,所述采集参数用于表征所述第一变更数据是否被所述采集线程采集;
将所述目标数据库名、所述目标数据表名、所述主键信息、所述变更类型、所述采集参数和所述第一变更数据写入到所述目标分区表的对应位置。
4.根据权利要求3所述的方法,其特征在于,在激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录之前,所述方法还包括:
构建多个所述采集线程,所述采集线程与所述分区表一一对应;
生成第一序列号,所述第一序列号用于标识所述采集线程,所述第一序列号与所述采集线程一一对应;
将多个采集线程根据所述第一序列号组合成采集线程组得到采集实例;
根据多个所述采集线程构建多个分布式锁,所述分布式锁用于控制所述采集线程对所述分区表的访问权限;
复制所述采集实例得到多个所述采集实例,根据多个所述采集实例和多个所述分布式锁构建所述数据采集集群。
5.根据权利要求4所述的方法,其特征在于,根据多个所述采集线程构建多个分布式锁,包括:
生成第二序列号,所述第二序列号用于指示所述采集线程识别对应的所述分布式锁,所述第二序列号与所述分布式锁一一对应,所述第一序列号与所述第二序列号一一对应;
配置锁状态信息,所述锁状态信息用于表征所述分布式锁是否处于占用状态;
配置锁占用信息,所述锁占用信息用于表征所述采集线程占用所述分布式锁是否超时;
根据所述第二序列号、所述锁状态信息和锁占用信息构建多个分布式锁。
6.根据权利要求4所述的方法,其特征在于,激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,包括:
获取分区表数量并根据所述分区表数量激活各所述采集实例中相同数量的所述采集线程,得到多个激活采集线程;
控制所述激活采集线程竞争性接入对应的所述分布式锁,所述竞争性接入为对应相同所述第一序列号的所述激活采集线程同时仅有一个接入到对应第二序列号与所述第一序列号相同的所述分布式锁;
根据所述第一序列号和第三序列号控制各所述采集线程获取对应目标分区表中的数据,得到所述变更记录,所述第三序列号为所述分区表的序列号,所述第三序列号与所述第一序列号一一对应。
7.根据权利要求3所述的方法,其特征在于,激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述方法还包括:
在得到所述变更记录的情况下,更新各所述采集参数为已采集状态;
在将所述变更记录发送至下游端的情况下,经过预设时间段后删除各所述分区表中对应所述采集参数为已采集状态的数据。
8.一种变更数据的采集装置,其特征在于,所述装置包括:
第一获取单元,用于在检测到有目标事件发生的情况下,获取所述目标事件的目标数据表名和目标数据库名,所述目标事件为目标数据库中目标基表发生数据变更,所述目标数据表名为所述目标基表的名称,所述目标数据库名为所述目标基表所属的所述目标数据库的名称,所述目标数据库为发生数据变更的数据库,所述目标基表为所述目标数据库中的基表中的一个或多个;
第二获取单元,用于获取目标映射表,并根据所述目标映射表和所述目标数据表名确定所述目标基表对应的目标分区表,所述目标映射表为与所述目标数据库名称一致的映射表,所述映射表包括所述基表与分区表的对应关系,不同所述分区表用于记录存储于不同位置的所述基表中的数据变更;
第三获取单元,用于获取第一变更数据,并将所述第一变更数据写入所述目标分区表,所述第一变更数据为所述目标基表中发生数据变更的字段;
采集单元,用于激活数据采集集群中的目标采集线程对所述目标分区表进行数据采集得到变更记录,并将所述变更记录发送至下游端,所述目标采集线程与所述目标分区表一一对应,所述下游端为所述变更记录的消费者,所述变更记录包括所述第一变更数据和对应的所述目标数据表名和所述目标数据库名。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的方法。
10.一种数据采集系统,其特征在于,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310939444.0A CN116991858A (zh) | 2023-07-27 | 2023-07-27 | 变更数据的采集方法、采集装置和数据采集系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310939444.0A CN116991858A (zh) | 2023-07-27 | 2023-07-27 | 变更数据的采集方法、采集装置和数据采集系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116991858A true CN116991858A (zh) | 2023-11-03 |
Family
ID=88525926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310939444.0A Pending CN116991858A (zh) | 2023-07-27 | 2023-07-27 | 变更数据的采集方法、采集装置和数据采集系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991858A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312435A (zh) * | 2023-11-23 | 2023-12-29 | 首都信息发展股份有限公司 | 数据采集方法、装置及电子设备 |
-
2023
- 2023-07-27 CN CN202310939444.0A patent/CN116991858A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312435A (zh) * | 2023-11-23 | 2023-12-29 | 首都信息发展股份有限公司 | 数据采集方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951474B (zh) | 一种用于获取MySQL binlog增量日志的方法和装置 | |
CN102265277B (zh) | 数据存储系统的操作方法和装置 | |
CN104156361B (zh) | 一种实现数据同步的方法及系统 | |
CN112597249B (zh) | 一种业务数据的同步分发存储方法及系统 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN113973053B (zh) | 一种网络靶场的探针管理系统与方法 | |
CN108140035B (zh) | 分布式系统的数据库复制方法及装置 | |
CN116991858A (zh) | 变更数据的采集方法、采集装置和数据采集系统 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN110048896A (zh) | 一种集群数据获取方法、装置及设备 | |
CN106897159A (zh) | 一种用于采集自动气象站数据的系统及方法 | |
CN111177254A (zh) | 一种异构关系型数据库之间数据同步的方法和装置 | |
CN112417050A (zh) | 数据同步方法和装置、系统、存储介质及电子装置 | |
CN109657000B (zh) | 一种轨道交通综合监控系统的实时数据同步方法及装置 | |
CN114020572A (zh) | 分布式告警方法及装置 | |
CN111400097A (zh) | 数据的备份方法、装置、系统和计算机可读存储介质 | |
CN116980475B (zh) | 一种基于binlog与双环形缓冲区的数据推送系统 | |
CN103067418A (zh) | 一种元数据重建方法、设备及系统 | |
US10860580B2 (en) | Information processing device, method, and medium | |
CN108920542A (zh) | 一种分布式内存大数据处理系统及其数据处理方法 | |
CN114880717A (zh) | 数据归档方法及装置 | |
CN104735097A (zh) | 信息的收集方法和系统 | |
CN112564953B (zh) | 一种对局远端设备管理的方法和装置及设备 | |
EP4095714B1 (en) | Database replication system and method, and source device and destination device | |
CN118445364B (zh) | 分布式资源同步方法、系统和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |