一种通过事件触发同步不同数据库的方法技术

技术编号:8366773 阅读:152 留言:0更新日期:2013-02-28 05:19
本发明专利技术公开了一种通过事件触发同步不同数据库的方法,实现在不同种类数据库、不同的数据模型环境下,一个源数据库及时同步到多个目标数据库,以及大批量数据快速同步,它包括当源数据库中的数据变更时,产生请求同步的变更事件;推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块;接收数据模块经过数据包解析后写入目标数据库。

【技术实现步骤摘要】

本专利技术涉及一种数据库技术,尤其涉及。
技术介绍
目前关于在不同的数据库间进行数据同步的技术方案较多,但能实现不同数据模型间并且实时同步的产品较少,而且其功能不能满足一些场合下的使用需求,比如运营商的同一套IPTV系统可能由不同的供货商承建,这样在IPTV系统设计时就会将整个系统分割成不同的网元,每个网元都可以独立运行,并与其他网元无缝连接。各个网元可能根据自己的需要,使用不同的数据库,并设计出不同的库表结构,这样就产生了在各个网元之间的数据同步与交换,需要一个源数据库同步到其他多个数据库,而且有实时性要求,在这样 的系统环境下进行数据同步,现有技术方案不能满足要求或存在一些缺陷。比如公开日为2011年05月18日、公开号为CN102063511A的专利文献公开了这样的技术方案一种数据同步系统,包括生成模块,用于当存在对第一数据库内的数据或者第一文件内的文件进行操作时,生成相应操作的类对象,并将该类对象序列化成二进制流,传送模块,用于将该二进制流按照顺序传送给第二服务器,接收模块,用于接收第一服务器发送的二进制流,将该二进制流按照顺序插入至操作队列表中;及执行模块,用于反序列化操作队列表中的二进制流,并根据该反序列化后的操作数据对第二数据库中的数据或第二文件中的文件进行相应操作。本专利技术可以实现对不同数据类型或文件类型的服务器中的数据进行同步操作。但是该方案的不足之处一是不能实现数据库间的一对多同步,二是由于未使用事件触发方式,因此,数据同步不及时,三是不支持大批量数据一次同步等。
技术实现思路
本专利技术的目的在于提供,实现在不同种类数据库、不同的数据模型环境下,一个源数据库及时同步到多个目标数据库,以及大批量数据快速同步,在一个源数据库中的更改能够实时地同步到多个目标数据库中。本专利技术针对现有技术问题主要是通过下述技术方案得以解决的,包括 Ca)当源数据库中的数据变更时,产生请求同步的变更事件; (b)推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块; (C)接收数据模块经过数据包解析后写入目标数据库。本专利技术包括一个源数据库和多个目标数据库,所述的目标数据库可以是与源数据库相同的数据库,也可以是与源数据库不同的数据库。同时还包括一个将源数据库中的变更数据推送给目标数据库的推送数据模块,和一个或多个接收推送过来的数据的接收数据模块,推送数据模块将源数据库中变更的数据按照每个接收数据模块各自要求的数据结构组成数据包,发送给相应的目标接收数据模块,接收数据模块将接收到的数据写进相应的不同数据库,实现了不同的数据库间的数据同步。推送数据模块连接源数据库,接收数据模块连接目标数据库。当源数据库中的数据变更时,产生请求同步的事件。推送数据模块不停地扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块,将这次变更的数据按照接收数据模块要求的数据结构组成数据包,发给接收数据模块,由接收数据模块经过数据包解析后写入目标数据库。由推送数据模块实现了数据的实时、准确同步,并可根据接收数据模块的需要进行数据结构的变更。本方法运用源数据库中的数据变更事件触发同步数据模块(推送数据模块和接收数据模块)工作,实现不同的数据库(包括不同种类数据库)间的数据同步,满足了源数据库对多个目标数据库同步的需求,利用事件触发方式进行及时同步,满足了系统对数据同步的时效性要求。本方法可以应用于任何领域,源数据库和目标数据库不限,如Oracle、SQLServer、Mysql 等等。作为优选,每个目标数据库对应与不同的接收数据模块,接收数据模块将接收到的数据写进相应的目标数据库。 作为优选,当通信出现中断时,变更的数据自动重新下发,直到通信恢复数据同步成功。作为优选,当目标数据库处理出错时,通过修改数据变更事件的状态标志来触发变更的数据重新下发。作为优选,当接收数据模块处理出错时,对源数据库中的数据进行处理,在数据正确后,通过修改数据变更事件的状态标志实现再次下发。接收数据模块处理出错,应该是源数据库中的数据错误,在重新下发前,人工处理源数据库中的数据,在源数据正确后,通过修改事件的状态标志实现再次下发。作为优选,在源数据库中当一次批量增加大量数据或修改大量数据时,不再每条数据产生一条数据变更事件,而是一批数据只产生一条数据变更事件去触发推送数据模块和接收数据模块进行数据同步。源数据库中可能存在某些表的数据量特别大,比如十万、百万级别的,如果通过Socket通讯逐条进行同步,则花费在通信交互上的时间就太多了,势必影响数据同步的效率,影响用户体验。针对这种情况,采取当一次在源数据库中批量增加大量数据或修改大量数据时,不再每条数据产生一条同步事件,而是一批数据只产生一个同步事件,比如100000条数据只产生一个同步事件,当推送数据模块接收到这类大批量数据同步事件时,就会启动特殊的同步处理模式将这大批量的数据按照规定的组织方式一次性写到一个大的内存块中,再发送给接收数据模块,由接收数据模块再根据协议分析其中的数据包,将数据写入相应的目标数据库。这样节约了交互通信的时间,提高了效率。同时,也减少了频繁地读取源数据库,导致影响源数据库性能的问题。本专利技术带来的有益效果是,实现了在不同种类数据库、不同的数据模型环境下,一个源数据库可以同步到多个目标数据库,可以进行大批量数据快速同步,通过事件触发方式实现了数据及时同步,数据实时性好。附图说明图I是本专利技术的一种数据同步处理流程图;图2是本专利技术在UTStarcom公司IPTV应用中数据同步处理流程图。具体实施例方式下面通过实施例,并结合附图,对本专利技术的技术方案作进一步具体说明。实施例如图I所示,本专利技术是,用于将一个源数据库及时同步到多个不同种类数据库不同数据模型的目标数据库。步骤包括 1、在源数据库A里部署产生变更事件的数据库脚本,当源数据库A中有数据变更时就记录一条事件到数据库事件表中,当需要进行大量数据增加或修改时通过设置按批量产生一条事件记录到数据库事件表中,供推送数据模块使用; 2、部署推送数据模块,将推送数据模块连接到源数据库A; 3、部署接收数据模块,并配置接收数据模块的IP地址和端口号,可以是多个接收数据模块,每个接收数据模块连接需要同步的目标数据库,比如连接到目标数据库之一的数据库B ; 4、推送数据模块不停地扫描同步事件表,当发现有同步事件时,就启动推送数据模块进行处理,根据事件类型,读取需要同步的数据,发送给接收数据模块,由接收数据模块根据目标数据库要求的数据结构写到目标数据库中,供目标系统快速读取。图I的具体过程是 (1)部署数据库A; (2)部署推送数据模块,该模块连接到数据库A; (3)部署数据库B; (4)部署接收数据模块,该模块连接到数据库B; (5)源数据改变,产生同步数据请求事件; (6)推送数据模块接收到请求,向接收数据模块请求握手; (7)握手失败,重复握手请求,直到握手成功; (8)推送数据模块组织数据,发送给接收数据模块; (9)接收数据模块将接收到的数据写入数据库B; (10)如果第(9)步处理成功,则数据同步成功,删除并备份同步本文档来自技高网...

【技术保护点】
一种通过事件触发同步不同数据库的方法,用于将一个源数据库及时同步到多个不同种类、不同数据模型的目标数据库,其特征包括:(a)当源数据库中的数据变更时,产生请求同步的变更事件;(b)推送数据模块扫描源数据库中的变更事件,当有变更事件时,就触发推送数据模块将这次变更的数据按照接收数据模块的数据结构组成数据包,发给接收数据模块;(c)接收数据模块经过数据包解析后写入目标数据库。

【技术特征摘要】

【专利技术属性】
技术研发人员:高中虎
申请(专利权)人:UT斯达康通讯有限公司
类型:发明
国别省市:

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

1