CN102945236A - 一种通过事件触发同步不同数据库的方法 - Google Patents
一种通过事件触发同步不同数据库的方法 Download PDFInfo
- Publication number
- CN102945236A CN102945236A CN2011103878298A CN201110387829A CN102945236A CN 102945236 A CN102945236 A CN 102945236A CN 2011103878298 A CN2011103878298 A CN 2011103878298A CN 201110387829 A CN201110387829 A CN 201110387829A CN 102945236 A CN102945236 A CN 102945236A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- synchronous
- event
- module
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过事件触发同步不同数据库的方法,实现在不同种类数据库、不同的数据模型环境下,一个源数据库及时同步到多个目标数据库,以及大批量数据快速同步,它包括当源数据库中的数据变更时,产生请求同步的变更事件;推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块;接收数据模块经过数据包解析后写入目标数据库。
Description
技术领域
本发明涉及一种数据库技术,尤其涉及一种通过事件触发同步不同数据库的方法。
背景技术
目前关于在不同的数据库间进行数据同步的技术方案较多,但能实现不同数据模型间并且实时同步的产品较少,而且其功能不能满足一些场合下的使用需求,比如运营商的同一套IPTV系统可能由不同的供货商承建,这样在IPTV系统设计时就会将整个系统分割成不同的网元,每个网元都可以独立运行,并与其他网元无缝连接。各个网元可能根据自己的需要,使用不同的数据库,并设计出不同的库表结构,这样就产生了在各个网元之间的数据同步与交换,需要一个源数据库同步到其他多个数据库,而且有实时性要求,在这样的系统环境下进行数据同步,现有技术方案不能满足要求或存在一些缺陷。比如公开日为 2011年05月18日、公开号为CN102063511A的专利文献公开了这样的技术方案:一种数据同步系统,包括生成模块,用于当存在对第一数据库内的数据或者第一文件内的文件进行操作时,生成相应操作的类对象,并将该类对象序列化成二进制流,传送模块,用于将该二进制流按照顺序传送给第二服务器,接收模块,用于接收第一服务器发送的二进制流,将该二进制流按照顺序插入至操作队列表中;及执行模块,用于反序列化操作队列表中的二进制流,并根据该反序列化后的操作数据对第二数据库中的数据或第二文件中的文件进行相应操作。本发明可以实现对不同数据类型或文件类型的服务器中的数据进行同步操作。但是该方案的不足之处一是不能实现数据库间的一对多同步,二是由于未使用事件触发方式,因此,数据同步不及时,三是不支持大批量数据一次同步等。
发明内容
本发明的目的在于提供一种通过事件触发同步不同数据库的方法,实现在不同种类数据库、不同的数据模型环境下,一个源数据库及时同步到多个目标数据库,以及大批量数据快速同步,在一个源数据库中的更改能够实时地同步到多个目标数据库中。
本发明针对现有技术问题主要是通过下述技术方案得以解决的,包括:
(a)当源数据库中的数据变更时,产生请求同步的变更事件;
(b)推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块;
(c)接收数据模块经过数据包解析后写入目标数据库。
本发明包括一个源数据库和多个目标数据库,所述的目标数据库可以是与源数据库相同的数据库,也可以是与源数据库不同的数据库。同时还包括一个将源数据库中的变更数据推送给目标数据库的推送数据模块,和一个或多个接收推送过来的数据的接收数据模块,推送数据模块将源数据库中变更的数据按照每个接收数据模块各自要求的数据结构组成数据包,发送给相应的目标接收数据模块,接收数据模块将接收到的数据写进相应的不同数据库,实现了不同的数据库间的数据同步。推送数据模块连接源数据库,接收数据模块连接目标数据库。
当源数据库中的数据变更时,产生请求同步的事件。推送数据模块不停地扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块,将这次变更的数据按照接收数据模块要求的数据结构组成数据包,发给接收数据模块,由接收数据模块经过数据包解析后写入目标数据库。由推送数据模块实现了数据的实时、准确同步,并可根据接收数据模块的需要进行数据结构的变更。
本方法运用源数据库中的数据变更事件触发同步数据模块(推送数据模块和接收数据模块)工作,实现不同的数据库(包括不同种类数据库)间的数据同步,满足了源数据库对多个目标数据库同步的需求,利用事件触发方式进行及时同步,满足了系统对数据同步的时效性要求。本方法可以应用于任何领域,源数据库和目标数据库不限,如Oracle、SQL Server、Mysql等等。
作为优选,每个目标数据库对应与不同的接收数据模块,接收数据模块将接收到的数据写进相应的目标数据库。
作为优选,当通信出现中断时,变更的数据自动重新下发,直到通信恢复数据同步成功。
作为优选,当目标数据库处理出错时,通过修改数据变更事件的状态标志来触发变更的数据重新下发。
作为优选,当接收数据模块处理出错时,对源数据库中的数据进行处理,在数据正确后,通过修改数据变更事件的状态标志实现再次下发。接收数据模块处理出错,应该是源数据库中的数据错误,在重新下发前,人工处理源数据库中的数据,在源数据正确后,通过修改事件的状态标志实现再次下发。
作为优选,在源数据库中当一次批量增加大量数据或修改大量数据时,不再每条数据产生一条数据变更事件,而是一批数据只产生一条数据变更事件去触发推送数据模块和接收数据模块进行数据同步。源数据库中可能存在某些表的数据量特别大,比如十万、百万级别的,如果通过Socket通讯逐条进行同步,则花费在通信交互上的时间就太多了,势必影响数据同步的效率,影响用户体验。针对这种情况,采取当一次在源数据库中批量增加大量数据或修改大量数据时,不再每条数据产生一条同步事件,而是一批数据只产生一个同步事件,比如100000条数据只产生一个同步事件,当推送数据模块接收到这类大批量数据同步事件时,就会启动特殊的同步处理模式:将这大批量的数据按照规定的组织方式一次性写到一个大的内存块中,再发送给接收数据模块,由接收数据模块再根据协议分析其中的数据包,将数据写入相应的目标数据库。这样节约了交互通信的时间,提高了效率。同时,也减少了频繁地读取源数据库,导致影响源数据库性能的问题。
本发明带来的有益效果是,实现了在不同种类数据库、不同的数据模型环境下,一个源数据库可以同步到多个目标数据库,可以进行大批量数据快速同步,通过事件触发方式实现了数据及时同步,数据实时性好。
附图说明
图1是本发明的一种数据同步处理流程图;
图2是本发明在UTStarcom公司IPTV应用中数据同步处理流程图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体说明。
实施例:如图1所示,本发明是一种通过事件触发同步不同数据库的方法,用于将一个源数据库及时同步到多个不同种类数据库不同数据模型的目标数据库。步骤包括:
1、在源数据库A里部署产生变更事件的数据库脚本,当源数据库A中有数据变更时就记录一条事件到数据库事件表中,当需要进行大量数据增加或修改时通过设置按批量产生一条事件记录到数据库事件表中,供推送数据模块使用;
2、部署推送数据模块,将推送数据模块连接到源数据库A;
3、部署接收数据模块,并配置接收数据模块的IP地址和端口号,可以是多个接收数据模块,每个接收数据模块连接需要同步的目标数据库,比如连接到目标数据库之一的数据库B;
4、推送数据模块不停地扫描同步事件表,当发现有同步事件时,就启动推送数据模块进行处理,根据事件类型,读取需要同步的数据,发送给接收数据模块,由接收数据模块根据目标数据库要求的数据结构写到目标数据库中,供目标系统快速读取。
图1的具体过程是:
(1)部署数据库A;
(2)部署推送数据模块,该模块连接到数据库A;
(3)部署数据库B;
(4)部署接收数据模块,该模块连接到数据库B;
(5)源数据改变,产生同步数据请求事件;
(6)推送数据模块接收到请求,向接收数据模块请求握手;
(7)握手失败,重复握手请求,直到握手成功;
(8)推送数据模块组织数据,发送给接收数据模块;
(9)接收数据模块将接收到的数据写入数据库B;
(10)如果第(9)步处理成功,则数据同步成功,删除并备份同步请求事件;
(11)如果第(9)步处理失败,则更新同步请求事件的状态标志,以备手工重新同步用。
图2所示是本发明在UTStarcom公司IPTV (交互式网络电视)的应用实例。
在UTStarcom公司的IPTV系统中存在媒资管理系统MAM (媒资管理网元)与EPG(电子节目菜单系统),MAM使用的是Oracle数据库,而EPG使用的是mysql数据库,并且基于效率考虑两个网元的数据结构差别很大。MAM是媒资数据的入口,EPG是出口,最终展现给终端用户。这样就产生了当MAM上录入或者修改了媒资数据后,如何快速地反应到EPG中的问题,为了解决此问题,应用本发明开发出媒资数据同步的网元,该网元使用的技术就是利用数据库中数据的变更产生变更事件,由此事件触发同步网元工作,将数据同步给EPG网元。在该过程中,EPG不直接接收同步网元MAM2CM(媒资管理网元数据修改下发给电子节目菜单数据库的网元)发过来的数据,而是通过中间接收网元CMM (电子节目菜单数据前端接收网元)接收,并处理后再写入EPG(电子节目菜单)的数据库MDDB中。
图2的具体步骤是:
(A) 部署OSS数据库Oracle(OSS:运营支持系统);
(B) 部署推送数据模块MAM2CM,MAM2CM模块连接到OSS数据库;
(C) 部署EPG数据库MDDB(Mysql数据库);
(D) 部署接收数据模块CMM,CMM模块连接到数据库MDDB;
(E) OSS数据库中的媒资元数据发生改变,产生同步数据请求事件;
(F) MAM2CM推送数据模块接收到请求,向接收数据模块CMM请求握手;
(G) 握手失败,重复握手请求,直到握手成功;
(H) 推送数据模块MAM2CM组织数据,发送给接收数据模块CMM;
(I) 接收数据模块CMM将接收到的数据写入数据库MDDB;
(J) 如果第(I)步处理成功,则数据同步成功,删除并备份同步请求事件;
(K) 如果第(I)步处理失败,则更新同步请求事件的状态,以备手工重新同步用。
所以本发明具有在不同的数据库、不同的数据模型环境下,一个源数据库可以同步到多个目标数据库,可以进行大批量数据快速同步,通过事件触发方式实现了数据及时同步,数据实时性好等特征。
Claims (7)
1.一种通过事件触发同步不同数据库的方法,用于将一个源数据库及时同步到多个不同种类、不同数据模型的目标数据库,其特征包括:
(a)当源数据库中的数据变更时,产生请求同步的变更事件;
(b)推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块;
(c)接收数据模块经过数据包解析后写入目标数据库。
2.根据权利要求1所述一种通过事件触发同步不同数据库的方法,其特征在于:在源数据库里部署产生变更事件的数据库脚本,当源数据库中有数据变更时就记录一条事件到数据库事件表中。
3.根据权利要求1所述一种通过事件触发同步不同数据库的方法,其特征在于:所述的接收数据模块是多个接收数据模块,每个接收数据模块连接需要同步的目标数据库,每个接收数据模块将接收到的数据写进相应的目标数据库。
4.根据权利要求1,2或3所述一种通过事件触发同步不同数据库的方法,其特征在于:当通信出现中断时,变更的数据自动重新下发,直到数据同步成功。
5.根据权利要求1,2或3所述一种通过事件触发同步不同数据库的方法,其特征在于:当目标数据库处理出错时,通过修改数据变更事件的状态标志来触发变更的数据重新下发。
6.根据权利要求5所述一种通过事件触发同步不同数据库的方法,其特征在于:当接收数据模块处理出错时,对源数据库中的数据进行处理,在数据正确后,通过修改数据变更事件的状态标志实现再次下发。
7.根据权利要求2所述一种通过事件触发同步不同数据库的方法,其特征在于:在源数据库中当一次批量增加大量数据或修改大量数据时,不再每条数据产生一条数据变更事件,而是一批数据只产生一条数据变更事件去触发推送数据模块和接收数据模块进行数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103878298A CN102945236A (zh) | 2011-11-29 | 2011-11-29 | 一种通过事件触发同步不同数据库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103878298A CN102945236A (zh) | 2011-11-29 | 2011-11-29 | 一种通过事件触发同步不同数据库的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102945236A true CN102945236A (zh) | 2013-02-27 |
Family
ID=47728183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103878298A Pending CN102945236A (zh) | 2011-11-29 | 2011-11-29 | 一种通过事件触发同步不同数据库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102945236A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462353A (zh) * | 2014-12-04 | 2015-03-25 | 北京国双科技有限公司 | 数据库批量同步处理方法及装置 |
CN106055654A (zh) * | 2016-06-01 | 2016-10-26 | 东软集团股份有限公司 | 异构数据的整合方法以及装置 |
CN106156094A (zh) * | 2015-04-01 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
CN106980643A (zh) * | 2017-02-14 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 变更消息的发送方法、装置及电子设备 |
CN107038088A (zh) * | 2016-09-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据恢复方法和装置 |
CN107908481A (zh) * | 2017-10-17 | 2018-04-13 | 链家网(北京)科技有限公司 | 一种数据同步方法、装置和系统 |
CN108900497A (zh) * | 2018-06-25 | 2018-11-27 | 江苏欧软信息科技有限公司 | 一种异构系统间的数据同步方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407465A (zh) * | 2001-08-13 | 2003-04-02 | 深圳市丛文软件技术有限公司 | 异构、异种数据库间适用的数据交换方法及装置 |
KR20070109204A (ko) * | 2006-05-10 | 2007-11-15 | 주식회사 케이티프리텔 | 복수 시스템으로의 데이터베이스 복제 방법 및 장치 |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
CN101464888A (zh) * | 2008-12-29 | 2009-06-24 | 深圳市迈科龙电子有限公司 | 信息系统平滑升级的装置和方法 |
CN102012909A (zh) * | 2010-11-17 | 2011-04-13 | 深圳市多赢软件技术有限公司 | 一种事件提醒业务处理方法 |
CN102129478A (zh) * | 2011-04-26 | 2011-07-20 | 广州从兴电子开发有限公司 | 数据库同步方法及系统 |
-
2011
- 2011-11-29 CN CN2011103878298A patent/CN102945236A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407465A (zh) * | 2001-08-13 | 2003-04-02 | 深圳市丛文软件技术有限公司 | 异构、异种数据库间适用的数据交换方法及装置 |
KR20070109204A (ko) * | 2006-05-10 | 2007-11-15 | 주식회사 케이티프리텔 | 복수 시스템으로의 데이터베이스 복제 방법 및 장치 |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
CN101464888A (zh) * | 2008-12-29 | 2009-06-24 | 深圳市迈科龙电子有限公司 | 信息系统平滑升级的装置和方法 |
CN102012909A (zh) * | 2010-11-17 | 2011-04-13 | 深圳市多赢软件技术有限公司 | 一种事件提醒业务处理方法 |
CN102129478A (zh) * | 2011-04-26 | 2011-07-20 | 广州从兴电子开发有限公司 | 数据库同步方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462353A (zh) * | 2014-12-04 | 2015-03-25 | 北京国双科技有限公司 | 数据库批量同步处理方法及装置 |
CN104462353B (zh) * | 2014-12-04 | 2017-12-22 | 北京国双科技有限公司 | 数据库批量同步处理方法及装置 |
CN106156094A (zh) * | 2015-04-01 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
CN106156094B (zh) * | 2015-04-01 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据同步方法和装置 |
US10877990B2 (en) | 2015-04-01 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Remote database synchronization |
CN106055654A (zh) * | 2016-06-01 | 2016-10-26 | 东软集团股份有限公司 | 异构数据的整合方法以及装置 |
CN106055654B (zh) * | 2016-06-01 | 2019-06-25 | 东软集团股份有限公司 | 异构数据的整合方法以及装置 |
CN107038088A (zh) * | 2016-09-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据恢复方法和装置 |
CN106980643A (zh) * | 2017-02-14 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 变更消息的发送方法、装置及电子设备 |
CN107908481A (zh) * | 2017-10-17 | 2018-04-13 | 链家网(北京)科技有限公司 | 一种数据同步方法、装置和系统 |
CN108900497A (zh) * | 2018-06-25 | 2018-11-27 | 江苏欧软信息科技有限公司 | 一种异构系统间的数据同步方法及系统 |
CN108900497B (zh) * | 2018-06-25 | 2021-11-02 | 江苏欧软信息科技有限公司 | 一种异构系统间的数据同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102945236A (zh) | 一种通过事件触发同步不同数据库的方法 | |
CN106250543B (zh) | 一种自动化数据查询同步存储方法 | |
CN110309218B (zh) | 一种数据交换系统和数据写入方法 | |
WO2021203979A1 (zh) | 运维处理方法、装置及计算机设备 | |
CN110851253B (zh) | 一种远程运维的方法、系统、存储介质及电子设备 | |
CN108073625B (zh) | 用于元数据信息管理的系统及方法 | |
CN106294741B (zh) | 一种自动化数据查询同步存储系统 | |
CN104809202A (zh) | 一种数据库同步的方法和装置 | |
CN101895536A (zh) | 多媒体信息共享方法 | |
CN106802947B (zh) | 实体关系图的数据处理系统及方法 | |
CN103795754A (zh) | 多系统间的数据同步方法和系统 | |
CN109634970A (zh) | 表数据同步方法、设备、存储介质及装置 | |
CN111913884A (zh) | 分布式测试方法、装置、设备、系统和可读存储介质 | |
CN104796390B (zh) | 一种电子白板全网同步撤销和恢复的系统及其方法 | |
CN112416991A (zh) | 一种数据处理方法、装置以及存储介质 | |
CN112347192A (zh) | 数据同步方法、装置、平台以及可读介质 | |
CN109213955B (zh) | 数据处理方法及相关设备 | |
CN103440302B (zh) | 实时数据交换的方法和系统 | |
CN110661851A (zh) | 数据交换方法和装置 | |
CN116340363B (zh) | 一种基于关系型数据库的数据存储、加载方法及相关装置 | |
US20200409972A1 (en) | Method for synchronization of repository data using data criteria | |
CN111414363A (zh) | 适用于MySQL中客户数据的并行异构方法、系统、介质及设备 | |
CN103036999A (zh) | 一种交互式产品服务系统及其使用方法 | |
US20200409969A1 (en) | Method for automated query language expansion and indexing | |
CN113537954B (zh) | 一种项目里程碑的处理方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130227 |