CN108197263A - 数据同步方法 - Google Patents
数据同步方法 Download PDFInfo
- Publication number
- CN108197263A CN108197263A CN201711493687.7A CN201711493687A CN108197263A CN 108197263 A CN108197263 A CN 108197263A CN 201711493687 A CN201711493687 A CN 201711493687A CN 108197263 A CN108197263 A CN 108197263A
- Authority
- CN
- China
- Prior art keywords
- data
- distribution subscription
- subscription system
- database
- trigger
- 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
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/273—Asynchronous replication or reconciliation
Abstract
本发明提出一种数据同步方法,通过触发器、发布订阅系统和连接模块实现,所述触发器实时接收源数据库中相关业务表中的数据变更信息,并将所述数据变更信息发送至连接模块;所述连接模块与发布订阅系统进行连接通讯,将所述数据变更信息发送至所述发布订阅系统;所述发布订阅系统接收所述数据变更信息后,将所述变更信息发布给订阅所述业务表变更操作主题的业务系统。采用本发明可实现数据同步过程的异步处理,从而避免因实时查询、实时写入带来的数据库性能下降问题。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据同步方法。
背景技术
在软件应用场景中,会经常遇到不同系统的关联数据之间需要数据同步的情形,例如源数据库和目标数据库进行数据同步,源数据库和目标业务系统之间进行数据同步等。数据库的应用场景可以分为实时事务处理型和分析事务处理型,前者用于实现数据的实时增删改查,强调及时性,后者则侧重数据的写入和查询,对查询速度要求高,以便实现分析统计。
现有技术中常用的数据同步方法包括:
1.Triger触发机制同步数据
通过在源数据库的表中增加触发器Trigger,在源数据库的表发生新增、修改、删除时,通过Trigger逻辑写入目标数据。
2.ETL工具同步数据
源数据库和目标数据库之间的数据同步通常采用ETL(Extract-Transform-Load)工具,通过配置ETL参数及SQL或存储过程进行数据查询,查询数据后再经过处理写入到目标数据库中。
3.应用系统查询同步数据
在具体应用中根据需要查询并导入数据。
然而,对于使用Trigger触发机制的数据同步方法,实时事务处理型数据在处理自身数据的增删改时,还要处理分析型事务型数据库的增删改,增加了自身的业务处理时间和负荷,影响了自身系统的性能,若分析事务型数据库出现宕机或无法连接状况,会使实时事务处理型数据库的数据也无法进行增删改作业,导致数据回滚。通过ETL工具和应用系统查询进行数据同步,都会因为对实时事务处理型数据库进行查询而影响其CPU、内存和硬盘IO的效能,最终影响数据的同步过程。
发明内容
针对现有技术的不足,本发明的主要目的在于:在实现数据同步时,将对源数据库的影响降至最低,并提高数据同步速度,进而提升工作效率。
为实现前述目的,本发明公开了一种数据同步方法,在源数据库相关业务表中设置触发器,用于实时响应业务表中数据变更操作;定义发布订阅系统,至少用于接收和发布数据变更信息;定义连接模块,至少用于接收触发器的消息和向发布订阅系统发送消息;具体包括:
所述触发器实时接收相关业务表中的数据变更信息,并将所述数据变更信息转为格式化数据后发送至连接模块;
所述连接模块与发布订阅系统进行连接通讯,将所述格式化数据发送至发布订阅系统;
所述发布订阅系统接收所述格式化数据后对其进行解析存储,并将解析后的数据变更相关信息发布给订阅所述相关业务表变更操作主题的业务系统;
所述业务系统根据接收到的数据变更相关信息进行业务数据同步处理。
优选地,所述发布订阅系统基于消息队列实现。
优选地,所述发布订阅系统基于采用消息机制的内存数据库实现。
优选地,所述数据变更操作包括数据增加、数据删除、数据修改。
优选地,所述业务系统为目标数据库,所述目标数据库的相关数据表根据接收到的数据变更相关信息进行数据同步处理。
优选地,所述业务系统为软件应用系统,所述软件应用系统根据接收到的数据变更相关信息进行业务数据同步处理。
优选地,所述连接模块根据不同的数据库类型所支持的开发语言,预置相应的语言代码或程序文件。
与现有技术相比,本发明的优点在于:通过发布订阅机制,对源数据库和目标数据库或源数据库和目标业务系统之间进行松耦合处理,实现数据同步过程的异步处理,从而避免因实时查询、实时写入带来的数据库性能下降问题。
附图说明
图1是本发明一典型实施例提出的一种数据同步方法的示意图。
具体实施方式
鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为本发明一典型实施例提出的一种数据同步方法的示意图,如图1所示,该方法具体包括:
在源数据库的相关数据表中建立触发器Trigger,当相关数据表发生增、删、改操作时,Trigger实时响应并接收增、删、改操作信息;
Trigger需向发布订阅系统通知和发送所述增、删、改操作信息,然而,一般受限于源数据库的类型以及发布订阅系统所在的网络位置,Trigger与发布订阅系统不能直接通信,因此,需要通过连接模块进行转发连接。那么,Trigger向发布订阅系统通知和发送增、删、改操作信息的过程为:Trigger向连接模块发送关于增、删、改操作信息的格式化数据,所述格式化数据可被发布订阅系统解析;连接模块接收所述格式化数据,根据数据库类型和发布订阅系统所在的网络位置,自动选择合适的连接通讯指令,并将增、删、改操作信息格式化数据发送给发布订阅系统。
发布订阅系统接收到所述增、删、改操作信息格式化数据后,解析并存储于系统内,适时向订阅此类主题的目标系统(如图中第一目标系统、第二目标系统)推送所述增、删、改操作的相关信息。
作为本发明一优选实施方式,所述发布订阅系统基于消息队列(Message Queue,简称MQ)实现,如图1所示的过程中,MQ将所述增、删、改操作信息格式化数据解析后存储于队列中,根据队列的先进先出规则,到达增、删、改操作信息格式化数据出队列时,向订阅相应增、删、改操作主题的目标系统进行消息发布。
作为本发明另一优选实施方式,所述发布订阅系统基于采用MQ机制的内存数据库实现,如图1所示的过程中,所述增、删、改操作信息格式化数据存储于所述内存数据库中,所述内存数据库根据自身的存储性能,适时向订阅相应增、删、改操作主题的目标系统进行消息发布。
本发明实施例所述的目标系统包括但不限于数据库系统、应用系统,例如数据同步可以是源数据库和目标数据库之间的同步,也可以是源数据库和目标应用系统间的同步。由于本发明技术方案是通过发布订阅机制进行数据同步,可实现对源数据库和目标系统之间进行松耦合、异步化处理,避免因实时查询处理给源数据库和/或目标系统带来的性能压力。同时,由于发布订阅系统接收源数据库信息以及向目标系统发送主题信息后,对源数据库系统和目标系统的后续操作皆没有直接影响,具有松耦合的关系,可保证源数据库系统和目标系统的响应速度和数据的稳定性。
在实际应用场景中,消息队列可采用RabbitMQ、ZeroMQ、KafkaMQ等,基于消息队列机制的内存数据库可采用Redis等。
作为本发明另一优选实施例,当源数据库为SQL Server,目标系统为数据库,采用基于RabbitMQ的发布订阅系统时,实现数据同步的过程为:
S11.在源SQL Server数据库欲转出数据的表T1中增加after或instead of触发器;
S12.目标数据库中指定接收变更数据的表;
S13.在发布订阅系统中部署一RabbitMQ,并在RabbitMQ中建立一个队列Q和主题T;
S14.在连接模块中设置一个用C#实现的DLL程序,所述DLL程序中包括用于初始化连接RabbitMQ的方法F1,还包括用于向RabbitMQ发布数据的方法F2,所述方法F2可调用方法F1中的初始化连接信息;
S15.在SQLServer中引用步骤S14中实现的DLL程序;
S16.在T1中的触发器中增加调用DLL程序的逻辑,将触发器中的NEW或OLD变量数据转成特定格式的字符串S1,然后调用DLL程序中的方法F2,传入字符串S1,实现将增删改数据处理后发布到RabbitMQ。
S17.RabbitMQ的队列Q和主题T订阅者收到发布的S1,接收到后进行字符解析处理,并变更目标数据库表数据。
作为本发明另一优选实施例,当源数据库为SQL Server,目标系统为数据库,采用基于Redis数据库的发布订阅系统时,实现数据同步的过程为:
S21.在源SQL Server数据库欲转出数据的表T2中增加after或instead of触发器;
S22.目标数据库中指定接收变更数据的表;
S23.在发布订阅系统中部署一内存数据库Redis,并在Redis中建立一个Channel;
S24.在连接模块中设置一个用C#实现的DLL程序,所述DLL程序中包括用于初始化连接RabbitMQ的方法Fun1,还包括用于向Redis发布数据的方法Fun2,所述方法Fun2可调用方法Fun1中的初始化连接信息;
S15.在SQLServer中引用步骤S24中实现的DLL程序;
S16.在T1中的触发器中增加调用DLL程序的逻辑,将触发器中的NEW或OLD变量数据转成特定格式的字符串S2,然后调用DLL程序中的方法Fun2,传入字符串S2,实现将增删改数据处理后发布到Redis。
S17.Redis的Channel订阅者收到发布的S2,接收到后进行字符解析处理,并变更目标数据库表数据。
当源数据库为MySQL、Oracle等数据库时,则不能使用SQL Server所采用的C#语言实现。由于不同的数据库所支持的开发语言不同,连接模块内可根据不同的数据库类型预置相应的语言代码或程序文件,以供为不同类型的数据库调用。
需要说明的是,以上实施例内容所述,仅为本发明较佳的具体实施方式,用于帮助理解本发明的方法和核心思想,在具体实施方式及应用范围上均会有改变之处。对于熟悉本领域的技术人员来说,任何不脱离本发明构思的前提下,做出的若干变形和改进,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种数据同步方法,其特征在于,在源数据库相关业务表中设置触发器,用于实时响应业务表中数据变更操作;定义发布订阅系统,至少用于接收和发布数据变更信息;定义连接模块,至少用于接收触发器的消息和向发布订阅系统发送消息;具体包括:
所述触发器实时接收相关业务表中的数据变更信息,并将所述数据变更信息转为格式化数据后发送至连接模块;
所述连接模块与发布订阅系统进行连接通讯,将所述格式化数据发送至发布订阅系统;
所述发布订阅系统接收所述格式化数据后对其进行解析存储,并将解析后的数据变更相关信息发布给订阅所述相关业务表变更操作主题的业务系统;
所述业务系统根据接收到的数据变更相关信息进行业务数据同步处理。
2.根据权利要求1所述的数据同步方法,其特征在于:所述发布订阅系统基于消息队列实现。
3.根据权利要求1所述的数据同步方法,其特征在于:所述发布订阅系统基于采用消息机制的内存数据库实现。
4.根据权利要求1所述的数据同步方法,其特征在于:所述数据变更操作包括数据增加、数据删除、数据修改。
5.根据权利要求1所述的数据同步方法,其特征在于:所述业务系统为目标数据库,所述目标数据库的相关数据表根据接收到的数据变更相关信息进行数据同步处理。
6.根据权利要求1所述的数据同步方法,其特征在于:所述业务系统为软件应用系统,所述软件应用系统根据接收到的数据变更相关信息进行业务数据同步处理。
7.根据权利要求1所述的数据同步方法,其特征在于:所述连接模块根据不同的数据库类型所支持的开发语言,预置相应的语言代码或程序文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711493687.7A CN108197263A (zh) | 2017-12-30 | 2017-12-30 | 数据同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711493687.7A CN108197263A (zh) | 2017-12-30 | 2017-12-30 | 数据同步方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108197263A true CN108197263A (zh) | 2018-06-22 |
Family
ID=62587420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711493687.7A Pending CN108197263A (zh) | 2017-12-30 | 2017-12-30 | 数据同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108197263A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112017752A (zh) * | 2020-08-31 | 2020-12-01 | 聚跑(广东)科技有限公司 | 一种收益数值转换方法及系统 |
CN112417050A (zh) * | 2020-11-25 | 2021-02-26 | 青岛海尔科技有限公司 | 数据同步方法和装置、系统、存储介质及电子装置 |
CN114827171A (zh) * | 2022-03-23 | 2022-07-29 | 青岛中科曙光科技服务有限公司 | 信息同步方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826560B1 (en) * | 1999-07-06 | 2004-11-30 | International Business Machines Corporation | Subscription and notification with database technology |
CN104954469A (zh) * | 2015-06-19 | 2015-09-30 | 长沙廖氏软件科技有限公司 | 一种异构系统信息交换方法 |
CN105956084A (zh) * | 2016-04-29 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 一种变更数据抽取方法及装置 |
-
2017
- 2017-12-30 CN CN201711493687.7A patent/CN108197263A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826560B1 (en) * | 1999-07-06 | 2004-11-30 | International Business Machines Corporation | Subscription and notification with database technology |
CN104954469A (zh) * | 2015-06-19 | 2015-09-30 | 长沙廖氏软件科技有限公司 | 一种异构系统信息交换方法 |
CN105956084A (zh) * | 2016-04-29 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 一种变更数据抽取方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112017752A (zh) * | 2020-08-31 | 2020-12-01 | 聚跑(广东)科技有限公司 | 一种收益数值转换方法及系统 |
CN112417050A (zh) * | 2020-11-25 | 2021-02-26 | 青岛海尔科技有限公司 | 数据同步方法和装置、系统、存储介质及电子装置 |
CN114827171A (zh) * | 2022-03-23 | 2022-07-29 | 青岛中科曙光科技服务有限公司 | 信息同步方法、装置、计算机设备和存储介质 |
CN114827171B (zh) * | 2022-03-23 | 2023-12-15 | 青岛中科曙光科技服务有限公司 | 信息同步方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106209948B (zh) | 一种数据推送方法及装置 | |
US10152480B2 (en) | Archiving indexed data | |
CN102571420B (zh) | 一种网元数据管理方法及系统 | |
CN101902473B (zh) | 基于网格gis的数据同步更新实现方法 | |
CN101741911A (zh) | 基于多副本协同的写操作方法、系统及节点 | |
CN108197263A (zh) | 数据同步方法 | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN101996165A (zh) | 智能终端上网页信息的拷贝处理方法、装置及设备 | |
CN111026567B (zh) | 基于区块链的handle标识编码系统及方法 | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
CN104699723A (zh) | 数据交换适配器、异构系统之间数据同步系统和方法 | |
CN110990482A (zh) | 异步数据库之间的数据同步方法及装置 | |
WO2020108544A1 (zh) | 同步缓存数据的方法、装置和系统 | |
WO2020258666A1 (zh) | 一种分布式系统及数据处理方法 | |
CN111046100A (zh) | 一种关系型数据库到非关系型数据库的同步方法和系统 | |
CN102982171A (zh) | 一种数据库同步方法 | |
US20170004152A1 (en) | System and method for dynamic data archival and purging | |
CN106897316B (zh) | 一种信令数据的处理方法和装置 | |
US8141103B2 (en) | Solution for modifying a queue manager to support smart aliasing which permits extensible software to execute against queued data without application modifications | |
CN100574439C (zh) | Iptv系统中实现第三方音视频内容上传的系统和方法 | |
CN110457380A (zh) | 一种数据存储系统 | |
CN107451211B (zh) | 一种基于RabbitMQ和MongoDB的下载系统 | |
CN107786661B (zh) | 信息同步方法 | |
CN111722942A (zh) | 一种分布式实时操作系统的改造方法 | |
CN109492038B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 215000 room 402, building 1, maishanlong building, 168 Yuxin Road, Suzhou Industrial Park, Jiangsu Province Applicant after: SUZHOU JINGYIHUI INFORMATION TECHNOLOGY Co.,Ltd. Address before: Room 503, HaoChen building, 286 Dongping street, Suzhou Industrial Park, Jiangsu 215000 Applicant before: SUZHOU JINGYIHUI INFORMATION TECHNOLOGY Co.,Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180622 |