[发明专利]一种数据同步的方法有效
申请号: | 201310663003.9 | 申请日: | 2013-12-10 |
公开(公告)号: | CN103605809B | 公开(公告)日: | 2016-09-14 |
发明(设计)人: | 赵亚南 | 申请(专利权)人: | 厦门诚创网络有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市盛峰律师事务所 11337 | 代理人: | 赵建刚 |
地址: | 361008 福建*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种数据同步的方法,从库i中存储数据表T‑i,主库中存储数据表T,数据表T存储记录的格式与数据表T‑i存储记录的格式相同;在从库i中建立修改历史表T_i‑act;同时,在主库中建立修改历史表T_‑act;当达到本次同步时间时,从库i读取获得有效操作增量,然后将有效操作增量、记录内容以及上次同步时保存的初始主库版本号打包,并将上传包上传给主库;主库入库后,统计得到有效操作增量,然后将有效操作增量、记录内容以及当前主库版本号打包,并将返回包返回给从库i;从库i进行入库操作,完成一个数据同步过程。该数据同步的方法,能够简单、快速、可靠、高效的实现一个主库与若干个从库之间数据表的同步。 | ||
搜索关键词: | 一种 数据 同步 方法 | ||
【主权项】:
一种数据同步的方法,其特征在于,包括以下步骤:S1,主库连接有n个从库,n个从库分别命名为:从库1、从库2…从库n;S2,分别为每一个从库设置定时同步时间,当任意的从库i到达自身配置的定时同步时间时,从库i与主库进行同步操作,使主库与从库i保持一致;其中,i∈(1、2…n);主库通过与各个从库依次进行同步操作,最终使主库、从库1、从库2…从库n这n+1个数据库均同步;其中,S2中,从库i与主库进行同步操作具体为:从库i的数据表与主库的数据表进行同步操作,并且,需同步的数据表在主库和从库i中具有相同的字段;其中,所述从库i的数据表与主库的数据表进行同步操作具体包括以下步骤:S21,设从库i中存储数据表T‑i,该数据表T‑i由若干条记录组成,每一条记录包括:记录ID、记录具体内容以及该条记录的操作时间;其中,记录ID用于唯一标识该条记录,当该条记录发生修改或删除操作时,记录ID仍然保持不变;所述操作时间为:对该条记录进行创建或修改时操作发生的时间点;设所述主库中存储数据表T,所述数据表T存储记录的格式与数据表T‑i存储记录的格式相同;S22,当需要同步所述数据表T和所述数据表T‑i时,在从库i中建立修改历史表T_i‑act,所述修改历史表T_i‑act用于记录对所述数据表T‑i进行的操作信息;同时,在主库中建立修改历史表T_‑act,所述修改历史表T_‑act用于记录对所述数据表T进行的操作信息;S23,设置针对从库i的定时同步时间间隔,则当达到本次同步时间时,所述从库i读取所述修改历史表T_i‑act,获得上次同步结束时间点到当前时刻时间段内所述修改历史表T_i‑act所记录的操作增量,通过对该操作增量进行分析,统计得到从库i的有效操作增量,针对该有效操作增量读取所述数据表T‑i,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及上次同步时保存的初始主库版本号打包,得到上传包,并将所述上传包上传给所述主库;S24,所述主库接收所述上传包,首先分析所述初始主库版本号是否为有效主库版本号,如果否,则执行S25;如果是,则执行S26;S25,所述主库将当前主库版本号以及数据表T打包,得到返回包,然后将所述返回包返回给所述从库i;然后执行S27;S26,所述主库对所述有效操作增量进行进一步分析过滤后,对所述主库进行入库操作,并更新所述修改历史表T_‑act,然后,所述主库获得上次与从库i同步结束时间点到当前时刻时间段内所述修改历史表T_i‑act所记录的操作增量,通过对该操作增量进行分析,统计得到主库的有效操作增量,针对该有效操作增量读取所述数据表T,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及当前主库版本号打包,得到返回包,并将所述返回包返回给所述从库i;然后执行S27;S27,所述从库i接收所述返回包,对所述从库i进行入库操作,并更新所述修改历史表T_i‑act,至此,完成一个数据同步过程,当下次定时同步时间到达时,循环S23‑S27;其中,S22中,所述修改历史表T_i‑act由若干条操作记录组成,每一条操作记录用于记录对数据表T‑i中某条记录进行的操作信息,即:每当数据表T‑i中某条记录被操作时,则在所述修改历史表T_i‑act中增加一条对应的操作记录,所述修改历史表T_i‑act具体包括以下字段:操作序号autoid‑i、记录ID、操作方式‑i、修改角色‑i和操作时间‑i;其中,所述操作序号autoid‑i在该修改历史表T_i‑act中具有唯一性和单一性,表示操作序号;每当从库i与主库同步时,均需读取修改历史表T_i‑act中操作序号的最大值作为从库i版本号并存储;所述记录ID即为所述数据表T‑i中存储的记录ID,表示被操作记录的记录ID;所述操作方式‑i指对所述数据表T‑i中记录进行的新增、修改或删除操作;所述修改角色‑i指本次修改的发起者,包括本地库修改和主库发起的修改;所述操作时间‑i区分以下两种情形:如果为本地库修改,则操作时间‑i指对所述数据表T‑i中记录进行操作的时间;如果为主库发起的修改,则操作时间‑i指主库下发的操作增量中所携带的对该记录的操作时间;对于修改历史表T_‑act,包括以下字段:操作序号autoid、记录ID、操作方式、修改角色和操作时间;其中,操作序号autoid在该修改历史表T_‑act中具有唯一性和单一性,表示操作序号;每当主库与从库i同步时,均需读取修改历史表T_‑act中操作序号的最大值作为主库版本号并存储;所述记录ID即为所述数据表T中存储的记录ID,表示被操作记录的记录ID;所述操作方式指对所述数据表T中记录进行的新增、修改或删除操作;所述修改角色指本次修改的发起者,包括本地库修改和从库发起的修改;所述操作时间区分以下两种情形:如果为本地库修改,则操作时间指对所述数据表T中记录进行操作的时间;如果为从库发起的修改,则操作时间指从库上传的操作增量中所携带的对该记录的操作时间;其中,S23具体为:S231,当达到本次同步时间时,所述从库i读取已存储的上次同步时获得的初始从库i版本号M1和初始主库版本号Z1;所述从库i读取当前修改历史表T_i‑act中操作序号的最大值M,则:操作序号大于M1且小于等于M的各条T_i‑act表中的操作记录集合构成从库的操作增量;S232,如果从库的操作增量中,存储针对同一记录ID的若干条操作记录,则过滤掉操作时间较早的操作记录,仅保留操作时间最晚的操作记录,由此得到的操作记录集合即为从库的有效操作增量;S233,以记录ID为关联,读取所述数据表T‑i,获取与该有效操作增量对应的记录内容,然后将有效操作增量、记录内容以及初始主库版本号Z1打包,得到上传包,并将所述上传包上传给所述主库;S24具体为:所述主库接收所述上传包,判断初始主库版本号Z1是否存在当前的修改历史表T_‑act中,如果不存在,则得出初始主库版本号Z1为无效主库版本号,然后执行S25;相反,则得出初始主库版本号Z1为有效主库版本号,然后执行S26;S26具体为:S261,对于从库i上传的有效操作增量,其由若干条操作记录组成,对于任意一条关于指定记录ID的指定操作记录,首先判断修改历史表T_‑act中是否存在关于同一指定记录ID的操作记录,如果不存在,则对该指定操作记录进行入库操作;反之,则执行S262;S262,进一步判断修改历史表T_‑act中关于同一指定记录ID的操作时间是否晚于从库i上传的操作时间,如果晚,则过滤从库i上传的该条指定操作记录,即忽略该条指定操作记录;反之,如果早,则对该指定操作记录进行入库操作,并更新修改历史表T_‑act,即:向该修改历史表T_‑act中增加一条操作记录;S263,所述主库计算得出修改历史表T_‑act当前时刻的操作序号的最大值作为新主库版本号Z2,然后统计操作序号大于初始主库版本号Z1且小于等于新主库版本号Z2的若干条操作记录,该若干条操作记录构成主库操作增量;S264,对所述主库操作增量进行分析,删除来自从库i的修改所增加的操作记录,同时,还删除针对同一记录ID的非最近发生的操作记录,得到主库的有效操作增量;S265,针对该有效操作增量读取所述数据表T,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及新主库版本号Z2打包,得到返回包,并将所述返回包返回给所述从库i;然后执行S27;S27具体为:S271,所述从库i接收所述返回包,对所述从库i进行入库操作,并更新所述修改历史表T_i‑act,获得更新后修改历史表T_i‑act操作序号最大值作为新从库i版本号M2,同时,所述从库i存储主库下发的新主库版本号Z2;至此,完成一个数据同步过程;S272,当下次定时同步时间到达时,用新主库版本号Z2替换初始主库版本号Z1,同时,用新从库i版本号M2替换初始从库i版本号M1,循环S23‑S27。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门诚创网络有限公司,未经厦门诚创网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310663003.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种大叶藻种子增殖的方法
- 下一篇:一种治疗小儿慢性咳嗽的药物的制备方法
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置