CN112231402A - 一种异构数据实时同步方法、装置、设备和存储介质 - Google Patents
一种异构数据实时同步方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112231402A CN112231402A CN202011095864.8A CN202011095864A CN112231402A CN 112231402 A CN112231402 A CN 112231402A CN 202011095864 A CN202011095864 A CN 202011095864A CN 112231402 A CN112231402 A CN 112231402A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- database
- extraction
- write
- 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 58
- 238000003860 storage Methods 0.000 title claims abstract description 15
- 238000000605 extraction Methods 0.000 claims abstract description 95
- 238000004458 analytical method Methods 0.000 claims abstract description 24
- 239000012634 fragment Substances 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 17
- 238000001914 filtration Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000013075 data extraction Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000007726 management method Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000012550 audit Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (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
本发明公开了一种异构数据实时同步方法、装置、设备和存储介质,涉及抽取线程、写入线程和多个源数据库,所述方法包括:响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据;通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;通过所述写入线程从所述中间数据库中并行获取所述中间数据;通过所述写入线程对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;通过所述写入线程将所述待写入数据串行写入到目标数据库,从而提供具备通用性的数据同步方式,有效提高异构数据同步的效率,同时实现快速断点续存。
Description
技术领域
本发明涉及数据同步技术领域,尤其涉及一种异构数据实时同步方法、装置、设备和存储介质。
背景技术
随着科技发展的不断进步,人们对数据的需求日渐增加,从传统单机数据库到分布式数据库,当前数据库产品可谓百花齐放:开源数据库(mysql、PostgreSQL),商业数据库(oracle、DB2)以及国产数据库(达梦、TiDB)应用于各领域行业;企业内部由于场景的多元化,也存在不同的结构化和非结构化数据存储。在去IOE、国产自主的潮流之下,基于不用的应用场景,如多区域数据库汇聚分析、跨idc数据同步、异构数据分发与迁移,诞生了各种数据实时同步的需求,以求解决表和数据对象的同步问题。
为此,现有的数据同步工具在功能上通常是支持多种源端转换为单个目标端,或者从一个源端转换为多个目标端,缺乏通用性;在处理性能上通常是处理小业务量的数据同步,在业务量稍大的情况下会导致同步进程堵塞,导致后续同步效率降低,无法适用于电信等庞大业务量的实时同步场景;在可用性上的容错机制通常较差,无法在同步异常中断的情况下快速实现续存。
发明内容
本发明提供了一种异构数据实时同步方法、装置、设备和存储介质,解决了现有技术中的数据同步方式缺乏通用性,同步效率较低,且无法实现快速续存的技术问题。
本发明提供的一种异构数据实时同步方法,涉及抽取线程、写入线程和多个源数据库,所述方法包括:
响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据;
通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
通过所述写入线程从所述中间数据库中并行获取所述中间数据;
通过所述写入线程对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
通过所述写入线程将所述待写入数据串行写入到目标数据库。
可选地,所述响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据的步骤,包括:
响应于用户输入的数据同步请求,通过所述抽取线程实时监听所述源数据库是否产生增量日志;
当所述源数据库产生增量日志时,通过所述抽取线程从所述源数据库中并行提取所述增量日志对应的待过滤数据;
对所述待过滤数据按照预定过滤规则执行数据过滤操作,得到所述增量数据。
可选地,还包括:
当所述待过滤数据提取中断时,通过所述抽取线程检测所述待过滤数据的数据传输断点;
以所述数据传输断点为起点,通过所述抽取线程从所述源数据库中重新提取所述待过滤数据。
可选地,所述中间数据库为Kafka数据库,所述中间数据携带有递增标识,所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤,包括:
通过所述抽取线程将所述增量数据的原始数据格式转换为JSON格式,得到中间数据;
通过所述抽取线程将所述中间数据写入到Kafka数据库,并接收所述Kafka数据库依据所述递增标识返回的确认收到消息。
可选地,所述数据同步请求还携带有分片表和多个分片键,每个所述分片键具有对应的写入线程,所述通过所述写入线程将所述待写入数据串行写入到目标数据库的步骤,包括:
依据所述分片表,将所述待写入数据中的每一行数据通过与所述分片键对应的写入线程串行写入到目标数据库。
可选地,还涉及状态线程和协调线程,所述方法还包括:
通过所述状态线程实时监控所述抽取线程的抽取线程状态;
通过所述协调线程定时接收所述抽取线程状态和所述写入线程的写入线程状态;
当所述抽取线程状态为断开时,通过所述状态线程检测第一断开位置,在所述第一断开位置重新调用新的抽取线程;
当所述写入线程状态为断开时,通过所述协调线程检测第二断开位置,在所述第二断开位置重新调用新的写入线程。
可选地,所述方法还包括:
比较所述待写入数据的行数与所述增量数据的行数;
当所述待写入数据的行数与所述增量数据的行数不相等时,返回所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤;
若所述待写入数据的行数与所述增量数据的行数不相等的次数大于预设失败阈值,则输出告警信号。
本发明还提供了一种异构数据实时同步装置,包括多个抽取线程和多个写入线程;
所述抽取线程包括:
增量数据提取模块,用于响应于用户输入的数据同步请求,从所述源数据库中并行提取增量数据;
中间数据写入模块,用于对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
所述写入线程包括
中间数据获取模块,用于从所述中间数据库中并行获取所述中间数据;
待写入数据生成模块,用于对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
写入模块,用于将所述待写入数据串行写入到目标数据库。
本发明还提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述任一项所述的异构数据实时同步方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的异构数据实时同步方法。
从以上技术方案可以看出,本发明具有以下优点:
通过响应于用户输入的数据同步请求,通过抽取线程从源数据库中提取增量数据,并对增量数据执行序列化解析操作,生成中间数据存储到中间数据库;再通过写入进程从中间数据库并行获取中间数据,在进行反序列化操作和幂等操作后,将得到的待写入数据串行写入到目标数据库,从而提供具备通用性的数据同步方式,有效提高异构数据同步的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种异构数据实时同步方法的步骤流程图;
图2为本发明可选实施例提供的一种异构数据实时同步方法的步骤流程图;
图3为本发明实施例提供的一种异构数据实时同步方法的流程示意图;
图4为本发明实施例提供的一种异构数据实时同步装置的功能结构示意图;
图5为本发明实施例提供的数据同步装置向目标库传输的流程示意图;
图6为本发明实施例提供的数据同步装置向目标库的多个数据表传输的流程示意图;
图7为本发明可选实施例提供的一种异构数据实时同步装置的结构框图;
图8为本发明另一实施例提供的一种异构数据实时同步流程图;
图9为本发明实施例提供的一种异构数据实时同步装置的结构框图。
具体实施方式
在企业内部数据库实时同步的使用场景中,通常数据源端和目标端类型多种多样,如Oracle、Mysql、postgresql、GP、Hbase、HDFS等;数据共享中间环节过多,制约系统性能优化;资源不集约,同样数据在系统间重复搬运,并多处存放。为了实现统一纳管,集中运营目的,就需要设计提供一组面向企业业务运营及支撑,可对外提供标准化服务、且相对独立的服务,具备高内聚的特性,且中心间低耦合,协同形成一个完整的业务流程。为此本发明实施例提供了一种异构数据实时同步方法、装置、设备和存储介质,用于解决现有技术中的数据同步方式缺乏通用性,同步效率较低,且无法实现快速续存的技术问题。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。Oracle数据库最新版本为Oracle Database 19c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic DataOptimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台。
PostgreSQL(pg)是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。
HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是ApacheHadoop Core项目的一部分。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例提供的一种异构数据实时同步方法的步骤流程图。
本发明提供的一种异构数据实时同步方法,涉及抽取线程、写入线程和多个源数据库,所述方法包括:
步骤101,响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据;
在本发明实施例中,当接收用户输入的数据同步请求后,可以通过复刻多个抽取线程,以多任务并行的方式从所述源数据库中进行增量数据的提取,以获得需要同步的数据。
其中,源数据库可以包括但不限于Oracle、Mysql、postgresql、GP、Hbase、HDFS数据库等,本发明实施例对此不作限制。
步骤102,通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
在获取到增量数据之后,由于增量数据可以是来自不同数据库的异构数据,而为了写入到目标数据库,此时需要对增量数据执行序列化解析操作,以生成中间数据,达到同一数据格式以便后续写入目标数据库的目的。而为了数据的安全性,将所述中间数据存储在中间数据库。
步骤103,通过所述写入线程从所述中间数据库中并行获取所述中间数据;
而在数据的写入阶段,为了对中间数据进行写入,需要通过多个写入线程从中间数据库中获取中间数据,为了进一步提高获取速率和后续的写入效率,可以通过并行获取的方式获取中间数据。
步骤104,通过所述写入线程对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
在本发明实施例中,由于中间数据的数据格式是通用的,而各个数据库具有各自对应的数据格式,因此在写入目标数据库之前,还需要对所述中间数据执行反序列化解析操作,以得到目标数据库对应格式的数据,再进行幂等操作,以保证数据的唯一性,从而得到待写入数据。
步骤105,通过所述写入线程将所述待写入数据串行写入到目标数据库。
在本发明实施例中,响应于用户输入的数据同步请求,通过抽取线程从源数据库中提取增量数据,并对增量数据执行序列化解析操作,生成中间数据存储到中间数据库;再通过写入进程从中间数据库并行获取中间数据,在进行反序列化操作和幂等操作后,将得到的待写入数据串行写入到目标数据库,从而提供具备通用性的数据同步方式,有效提高异构数据同步的效率。
请参阅图2,图2为本发明可选实施例提供的一种异构数据实时同步方法的步骤流程图。
本发明提供的一种异构数据实时同步方法,涉及抽取线程、写入线程和多个源数据库,所述方法包括:
在本发明实施例中,上述步骤101可以替换为以下步骤:
步骤201,响应于用户输入的数据同步请求,通过所述抽取线程实时监听所述源数据库是否产生增量日志;
在本发明实施例中,接收用户输入的数据同步请求,由于数据同步可能不仅是对一个数据库的数据进行同步,在对多个源数据库进行数据同步时,可以通过多个抽取线程实时监听源数据库是否产生增量日志。
在具体实现中,可以通过线程复刻得到多个抽取线程,以多任务并行连接源数据库,利用MySQL复制协议复制多个数据同步请求并发送到源数据库,再通过监听数据源(MySQL Cluster、Oracle、pg等)的物化视图log、logical wal日志,以确定是否产生增量日志。
可选地,若是没有产生增量日志,则说明源数据库并未产生新的数据。
步骤202,当所述源数据库产生增量日志时,通过所述抽取线程从所述源数据库中并行提取所述增量日志对应的待过滤数据;
当源数据库产生增量日志时,由于数据库所增加的数据并不一定是用户所需要的数据,因此,在获取增量数据之前,还可以通过多个抽取线程从多元数据库中并行提取增量日志对应的待过滤数据。
步骤203,对所述待过滤数据按照预定过滤规则执行数据过滤操作,得到所述增量数据。
在获取到待过滤数据之后,按照预定过滤规则执行数据过滤操作,以得到增量数据。
值得一提的是,所述预定过滤规则可以为按照心跳事件或者轮值rotate事件的方式进行数据过滤。
在本发明的一个示例中,所述方法还可以包括以下步骤:
当所述待过滤数据提取中断时,通过所述抽取线程检测所述待过滤数据的数据传输断点;
以所述数据传输断点为起点,通过所述抽取线程从所述源数据库中重新提取所述待过滤数据。
在本发明实施例中,抽取线程会判断增量log的连续性(如gtid的自增属性),以保证抽取过来的增量数据没有缺漏,如果发现不连续,则从断点重新抽取。
步骤204,通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
可选地,所述中间数据库为Kafka数据库,所述中间数据携带有递增标识,所述步骤204可以包括以下步骤:
通过所述抽取线程将所述增量数据的原始数据格式转换为JSON格式,得到中间数据;
通过所述抽取线程将所述中间数据写入到Kafka数据库,并接收所述Kafka数据库依据所述递增标识返回的确认收到消息。
在本发明的一个示例中,其中,所述中间数据携带有递增标识;所述预设规则为当所述中间数据写入到所述Kafka数据库,所述Kafka数据库依据所述递增标识返回确认收到消息到所述抽取线程,通过抽取线程可以检测增量数据的原始数据格式,为便于异构数据的写入,此时可以将原始数据格式转换JSON格式,以获取JSON格式的中间数据,再通过抽取线程将中间数据按at-lease-one方式写入到Kafka数据库,同时Kafka数据库在接收到中间数据后,根据递增标识返回确认收到消息,以检测数据是否有序输入,从而保证数据写入的可靠性。
JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。支持通过Kafka服务器和消费机集群来分区消息。支持Hadoop并行数据加载。
步骤205,通过所述写入线程从所述中间数据库中并行获取所述中间数据;
步骤206,通过所述写入线程对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
在本发明实施例中,所述步骤205-206的具体实现过程与上述105-106类似,在此不再赘述。
所述反序列化解析操作为对所述中间数据从JSON转换为目标数据库对应的格式。
所述幂等操作指的是在编程中任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现。
步骤207,通过所述写入线程将所述待写入数据串行写入到目标数据库。
在本发明的另一个示例中,所述数据同步请求还携带有分片表和多个分片键,每个所述分片键具有对应的写入线程,所述步骤207可以包括以下步骤:
依据所述分片表,将所述待写入数据中的每一行数据通过与所述分片键对应的写入线程串行写入到目标数据库。
在实际操作中,每个数据库节点都有一个抽取线程,这样就保证集群下N个节点有N个并发线程进行抽取和写入kafka;而且为保证消费的并发写入和同一行数据的有序性,以分片键生成一个消费进程,确保分片表的同一行数据能串行化执行。
进一步地,本发明实施例还涉及状态线程和协调线程,所述方法还包括:
通过所述状态线程实时监控所述抽取线程的抽取线程状态;
通过所述协调线程定时接收所述抽取线程状态和所述写入线程的写入线程状态;
当所述抽取线程状态为断开时,通过所述状态线程检测第一断开位置,在所述第一断开位置重新调用新的抽取线程;
当所述写入线程状态为断开时,通过所述协调线程检测第二断开位置,在所述第二断开位置重新调用新的写入线程。
在本发明的另一个示例中,由于抽取线程和写入线程本身都是无状态的,为保证数据抽取和写入的可用性,可以通过抽取线程本地的状态线程实时监控抽取线程的抽取线程状态,例如抽取线程的心跳信息以表示当前线程的进度,为方便用户查阅,可以预定格式写入到本地如kv格式;同时还可以通过协调线程接收定时发送的发送的所述抽取线程状态和所述写入线程的写入线程状态,例如抽取线程和写入线程各自的心跳信息,当协调线程发现有线程出现断开的情况,会在断开的位置重新调用另一相同的线程,从而保证数据同步的正常进行。
可选地,所述方法还包括:
比较所述待写入数据的行数与所述增量数据的行数;
当所述待写入数据的行数与所述增量数据的行数不相等时,返回所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤;
若所述待写入数据的行数与所述增量数据的行数不相等的次数大于预设失败阈值,则输出告警信号。
在本发明实施例中,在目标数据库写入待写入数据之后,为保证数据写入的一致性,可以比较待写入数据的行数和增量数据的行数,当两者行数不相等时,说明此时数据写入是出错的,可以通过返回所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤,重新对增量数据进行写入。
同时为了节约数据同步资源,当两者不相等的次数大于预设失败阈值,也就是超过了用户设定的失败次数之后,说明此时系统出现了故障,可以通过输出告警信号,以便于用户及时进行修复。
在本发明实施例中,响应于用户输入的数据同步请求,通过抽取线程从源数据库中提取增量数据,并对增量数据执行序列化解析操作,生成中间数据存储到中间数据库;再通过写入进程从中间数据库并行获取中间数据,在进行反序列化操作和幂等操作后,将得到的待写入数据串行写入到目标数据库,从而提供具备通用性的数据同步方式,有效提高异构数据同步的效率。
参见图3,图3为本发明实施例提供的一种异构数据实时同步方法的流程示意图;
通过变量监听模块1-3对MYSQL数据源、PGSQL数据源、ORACLE数据源和csv文件进行变量监听,当出现变量数据时传输到内部队列1-4进行数据转换,再经过通道1-3中的一个进行数据过滤、转换和加密后,按需写入到MYSQL数据源、PG数据源、ORACLE数据源、HBASE或HDFS。
参见图4,图4为本发明实施例提供的一种异构数据实时同步装置的功能结构示意图;
其中包括数据开放模块、数据加工模块、数据存贮模块、数据汇聚模块和运营管理模块;
数据开放模块包括文件下载、文件共享、数据推送、变更日志订阅等功能;数据加工模块包括订阅文件生成、订阅消息处理、数据纠错、数据快照和数据清理等功能;数据存贮模块包括文件数据、分布式数据库和元数据等存储子模块;数据汇聚模块包括文件数据、批量汇聚和数据稽核等功能,文件数据功能包括分布式数据库和事件消息单元,批量汇聚功能包括FTP文件和DB导入单元,数据稽核包括记录数稽核和字段稽核等单元;运营管理模块包括数据源管理、通道管理、稽核管理、订阅管理和安全审核等功能。
参见图5,图5为本发明实施例提供的数据同步装置向目标库传输的流程示意图,其中通过数据同步装置向目标库1-N,经过容错处理后,发送已经转换了目标库数据格式的数据。
参见图6,图6为本发明实施例提供的数据同步装置向目标库的多个数据表传输的流程示意图,其中通过数据同步装置向目标库中的目标表1-N,经过容错处理后,发送已经转换了目标表数据格式的数据。
参见图7,图7为本发明可选实施例提供的一种异构数据实时同步装置的结构框图,其中包括实时采集部分和数据存贮部分,实时采集部分包括了Canal、REST、安全Reader、Kafka、DBWriter、文件Writer、Hbase-Writer和安全Writer等子模块,数据存贮部分包括hive、hbase、hadoop和Mysql等开源数据库。
参见图8,图8示出了本发明另一实施例提供的异构数据实时同步流程图,其中包括数据源、生产链路、消息队列、消费链路和目标库。
在生产链路中,通过生产进程发送dump请求到mysql cluster,接收mysqlcluster返回的binlog进行实时监听,同时还实时监听oracle的物化视图log和PG的wal2json数据;同时生产进程通过fork出抽取子线程,并由状态上报线程进行监控;再依次通过解析、数据连续性检测然后写入到消息队列的kafka中间数据库中;
在消费链路中,通过消费进程获取kafka中间数据库的中间数据,进行解析后经hash并发线程写入到目标库中的文件数据,在写入之前还经过幂等改造,也就是幂等操作;同时消费进程通过fork出写入子线程,由协调线程进行监控;
数据源和目标库之间还有增量写入检验过程,用于检验目标库写入的数据与从数据源提取的增量数据是否一致;还包括全量定期检验过程,用于定期检验目标库和数据源之间的数据量是否一致。
请参阅图9,图9为本发明实施例提供的一种异构数据实时同步装置的步骤流程图。
本发明提供的一种异构数据实时同步装置,包括多个抽取线程和多个写入线程;
所述抽取线程包括:
增量数据提取模块901,用于响应于用户输入的数据同步请求,从所述源数据库中并行提取增量数据;
中间数据写入模块902,用于对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
所述写入线程包括
中间数据获取模块903,用于从所述中间数据库中并行获取所述中间数据;
待写入数据生成模块904,用于对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
写入模块905,用于将所述待写入数据串行写入到目标数据库。
可选地,所述增量数据提取模块901包括:
增量日志监听子模块,用于响应于用户输入的数据同步请求,实时监听所述源数据库是否产生增量日志;
待过滤数据提取子模块,用于当所述源数据库产生增量日志时,从所述源数据库中并行提取所述增量日志对应的待过滤数据;
增量数据生成子模块,用于对所述待过滤数据按照预定过滤规则执行数据过滤操作,得到所述增量数据。
可选地,所述抽取线程还包括:
数据传输断点判断模块,用于当所述待过滤数据提取中断时,检测所述待过滤数据的数据传输断点;
重新提取模块,用于以所述数据传输断点为起点,从所述源数据库中重新提取所述待过滤数据。
可选地,所述中间数据库为Kafka数据库,所述中间数据携带有递增标识,所述中间数据写入模块902包括:
中间数据转换子模块,用于将所述增量数据的原始数据格式转换为JSON格式,得到中间数据;
中间数据写入子模块,用于通过所述抽取线程将所述中间数据写入到Kafka数据库,并接收所述Kafka数据库依据所述递增标识返回的确认收到消息。
可选地,所述数据同步请求还携带有分片表和多个分片键,每个所述分片键具有对应的写入线程,所述写入模块905包括:
写入子模块,用于依据所述分片表,将所述待写入数据中的每一行数据通过与所述分片键对应的写入线程串行写入到目标数据库。
可选地,所述装置还包括状态线程和协调线程;
所述状态线程包括:抽取线程监控模块,用于实时监控所述抽取线程的抽取线程状态;第一调用模块,用于当所述抽取线程状态为断开时,检测第一断开位置,在所述第二断开位置重新调用新的抽取线程;
所述协调线程包括:线程状态定时监控模块,用于定时接收所述抽取线程状态和所述写入线程的写入线程状态;第二调用模块,用于当所述写入线程状态为断开时,检测第二断开位置,在所述第二断开位置重新调用新的写入线程。
可选地,所述装置还包括:比较模块,用于比较所述待写入数据的行数与所述增量数据的行数;返回模块,用于当所述待写入数据的行数与所述增量数据的行数不相等时,返回所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤;告警输出模块,用于若所述待写入数据的行数与所述增量数据的行数不相等的次数大于预设失败阈值,则输出告警信号。
本发明实施例还提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述任一实施例所述的异构数据实时同步方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被所述处理器执行时实现如上述任一实施例所述的异构数据实时同步方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种异构数据实时同步方法,其特征在于,涉及抽取线程、写入线程和多个源数据库,所述方法包括:
响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据;
通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
通过所述写入线程从所述中间数据库中并行获取所述中间数据;
通过所述写入线程对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
通过所述写入线程将所述待写入数据串行写入到目标数据库。
2.根据权利要求1所述的方法,其特征在于,所述响应于用户输入的数据同步请求,通过所述抽取线程从所述源数据库中并行提取增量数据的步骤,包括:
响应于用户输入的数据同步请求,通过所述抽取线程实时监听所述源数据库是否产生增量日志;
当所述源数据库产生增量日志时,通过所述抽取线程从所述源数据库中并行提取所述增量日志对应的待过滤数据;
对所述待过滤数据按照预定过滤规则执行数据过滤操作,得到所述增量数据。
3.根据权利要求2所述的方法,其特征在于,还包括:
当所述待过滤数据提取中断时,通过所述抽取线程检测所述待过滤数据的数据传输断点;
以所述数据传输断点为起点,通过所述抽取线程从所述源数据库中重新提取所述待过滤数据。
4.根据权利要求1所述的方法,其特征在于,所述中间数据库为Kafka数据库,所述中间数据携带有递增标识,所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤,包括:
通过所述抽取线程将所述增量数据的原始数据格式转换为JSON格式,得到中间数据;
通过所述抽取线程将所述中间数据写入到Kafka数据库,并接收所述Kafka数据库依据所述递增标识返回的确认收到消息。
5.根据权利要求1所述的方法,其特征在于,所述数据同步请求还携带有分片表和多个分片键,每个所述分片键具有对应的写入线程,所述通过所述写入线程将所述待写入数据串行写入到目标数据库的步骤,包括:
依据所述分片表,将所述待写入数据中的每一行数据通过与所述分片键对应的写入线程串行写入到目标数据库。
6.根据权利要求1所述的方法,其特征在于,还涉及状态线程和协调线程,所述方法还包括:
通过所述状态线程实时监控所述抽取线程的抽取线程状态;
通过所述协调线程定时接收所述抽取线程状态和所述写入线程的写入线程状态;
当所述抽取线程状态为断开时,通过所述状态线程检测第一断开位置,在所述第一断开位置重新调用新的抽取线程;
当所述写入线程状态为断开时,通过所述协调线程检测第二断开位置,在所述第二断开位置重新调用新的写入线程。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
比较所述待写入数据的行数与所述增量数据的行数;
当所述待写入数据的行数与所述增量数据的行数不相等时,返回所述通过所述抽取线程对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库的步骤;
若所述待写入数据的行数与所述增量数据的行数不相等的次数大于预设失败阈值,则输出告警信号。
8.一种异构数据实时同步装置,其特征在于,包括多个抽取线程和多个写入线程;
所述抽取线程包括:
增量数据提取模块,用于响应于用户输入的数据同步请求,从所述源数据库中并行提取增量数据;
中间数据写入模块,用于对所述增量数据执行序列化解析操作,生成中间数据并写入中间数据库;
所述写入线程包括
中间数据获取模块,用于从所述中间数据库中并行获取所述中间数据;
待写入数据生成模块,用于对所述中间数据执行反序列化解析操作和幂等操作,得到待写入数据;
写入模块,用于将所述待写入数据串行写入到目标数据库。
9.一种电子设备,其特征在于,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-7中任一项所述的异构数据实时同步方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1-7任一项所述的异构数据实时同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011095864.8A CN112231402A (zh) | 2020-10-14 | 2020-10-14 | 一种异构数据实时同步方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011095864.8A CN112231402A (zh) | 2020-10-14 | 2020-10-14 | 一种异构数据实时同步方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231402A true CN112231402A (zh) | 2021-01-15 |
Family
ID=74112688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011095864.8A Pending CN112231402A (zh) | 2020-10-14 | 2020-10-14 | 一种异构数据实时同步方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231402A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112507013A (zh) * | 2021-02-07 | 2021-03-16 | 北京工业大数据创新中心有限公司 | 一种工业设备数据的存储方法及装置 |
CN112800064A (zh) * | 2021-02-05 | 2021-05-14 | 成都延华西部健康医疗信息产业研究院有限公司 | 一种基于Confluent社区开源版的实时大数据应用开发方法及系统 |
CN113297034A (zh) * | 2021-05-31 | 2021-08-24 | 中电福富信息科技有限公司 | 基于TeleDB和MySQL数据库的分布式数据集成系统及方法 |
CN113505173A (zh) * | 2021-07-08 | 2021-10-15 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN114048178A (zh) * | 2021-11-29 | 2022-02-15 | 众和空间(北京)科技有限责任公司 | 一种数据的双模式存储及同步方法 |
CN115858503A (zh) * | 2023-02-28 | 2023-03-28 | 江西师范大学 | 一种基于迁移链表的异构数据库迁移管理方法及系统 |
CN116204593A (zh) * | 2023-03-17 | 2023-06-02 | 北京金和网络股份有限公司 | 一种数据实时同步的方法、系统、设备及存储介质 |
CN116932779A (zh) * | 2023-08-14 | 2023-10-24 | 企查查科技股份有限公司 | 知识图谱的数据处理方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
US20200073859A1 (en) * | 2018-08-28 | 2020-03-05 | Palantir Technologies Inc. | Data storage method and system |
-
2020
- 2020-10-14 CN CN202011095864.8A patent/CN112231402A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
US20200073859A1 (en) * | 2018-08-28 | 2020-03-05 | Palantir Technologies Inc. | Data storage method and system |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800064A (zh) * | 2021-02-05 | 2021-05-14 | 成都延华西部健康医疗信息产业研究院有限公司 | 一种基于Confluent社区开源版的实时大数据应用开发方法及系统 |
CN112507013A (zh) * | 2021-02-07 | 2021-03-16 | 北京工业大数据创新中心有限公司 | 一种工业设备数据的存储方法及装置 |
CN113297034A (zh) * | 2021-05-31 | 2021-08-24 | 中电福富信息科技有限公司 | 基于TeleDB和MySQL数据库的分布式数据集成系统及方法 |
CN113505173A (zh) * | 2021-07-08 | 2021-10-15 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN113505173B (zh) * | 2021-07-08 | 2024-03-19 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN114048178A (zh) * | 2021-11-29 | 2022-02-15 | 众和空间(北京)科技有限责任公司 | 一种数据的双模式存储及同步方法 |
CN115858503A (zh) * | 2023-02-28 | 2023-03-28 | 江西师范大学 | 一种基于迁移链表的异构数据库迁移管理方法及系统 |
CN116204593A (zh) * | 2023-03-17 | 2023-06-02 | 北京金和网络股份有限公司 | 一种数据实时同步的方法、系统、设备及存储介质 |
CN116932779A (zh) * | 2023-08-14 | 2023-10-24 | 企查查科技股份有限公司 | 知识图谱的数据处理方法和装置 |
CN116932779B (zh) * | 2023-08-14 | 2024-03-12 | 企查查科技股份有限公司 | 知识图谱的数据处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112231402A (zh) | 一种异构数据实时同步方法、装置、设备和存储介质 | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN111723160B (zh) | 一种多源异构增量数据同步方法及系统 | |
CN107018042B (zh) | 用于在线服务系统的追踪方法及追踪系统 | |
CN108681569B (zh) | 一种数据自动分析系统及其方法 | |
CN113360554B (zh) | 一种数据抽取、转换和加载etl的方法和设备 | |
US20150310044A1 (en) | Database device and processing of data in a database | |
CN107330098B (zh) | 一种自定义报表的查询方法、计算节点及查询系统 | |
CN111221791A (zh) | 一种多源异构数据导入数据湖的方法 | |
CN112035471A (zh) | 一种事务处理方法及计算机设备 | |
CN113722277A (zh) | 一种数据导入方法、装置、服务平台及存储介质 | |
US11226986B2 (en) | Data table partitioning management method and apparatus | |
Schales et al. | FCCE: highly scalable distributed feature collection and correlation engine for low latency big data analytics | |
CN113672668A (zh) | 大数据场景下的日志实时处理方法及装置 | |
CN110309206B (zh) | 订单信息采集方法及系统 | |
Zhou et al. | A runtime verification based trace-oriented monitoring framework for cloud systems | |
CN111400370A (zh) | 数据流通中的数据监控方法及装置、存储介质、服务器 | |
CN113360319B (zh) | 一种数据备份方法和装置 | |
Chardonnens | Big data analytics on high velocity streams | |
US20040111706A1 (en) | Analysis of latencies in a multi-node system | |
KR101656011B1 (ko) | 빅데이터 기반 고장 모니터링 시스템 및 방법 | |
CN114490865A (zh) | 数据库同步方法、装置、设备及计算机存储介质 | |
CN105718485B (zh) | 一种将数据录入数据库的方法及装置 | |
CN112286875A (zh) | 用于处理实时数据流的系统框架及实时数据流处理方法 | |
Vilaça et al. | On the expressiveness and trade-offs of large scale tuple stores |
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 |