一种数据库同步方法

文档序号:6384456阅读:158来源:国知局
专利名称:一种数据库同步方法
技术领域
本发明涉及一种数据库同步方法。
背景技术
数据库同步指的是把源数据库的待同步数据(可以是数据库全部或者部分数据) 对目标数据库的副本进行更新,使该副本与原数据库待同步数据保持一致的操作。
通常应用系统中的数据库同步操作实现方法与应用系统数据库的具体结构有关。 当应用系统需求发生变化时,数据库同步的实现方法往往也需要随之调整。因此,常规的数据同步方法不便于系统的维护与升级,在以下的内容中对此做出详细描述。
中国发明专利申请公开之《一种分布式数据库同步系统、同步方法和节点管理方法》(公开号CN102693324A)提供了一种数据库同步方法,该方法通过定期读取管理节点的相关同步信息表,实现与其它节点的数据同步。该方案的目的是建立有效的多节点数据同步更新过程中的管理调度机制,没有提供实现数据从原始数据到数据副本之间的复制更新的具体方法。
中国发明专利申请公开之《基于数据库服务间的通用数据同步方法及其系统》(公开号CN102637214A)提供了一种数据库同步方法,可以实现不同节点之间的磁盘文件的同步。该方案实现了数据文件从一个服务器复制到另一个服务器的操作,该方法用于数据库同步,只能针对文件型数据库,例如Microsoft Access,把文件型数据库从一个节点完整复制到另一个节点。该方法不能把多个客户端节点数据同步到公用的后台服务器。
中国发明专利申请公开之《关系型数据库之间的同步方法及系统》(公开号 CN102542007A)提供了一种方法,通过建立多个数据库之间的针对变化数据的数据同步任务。该方法针对关系型数据库开发,利用关系型数据库的触发器机制和任务机制。由于触发器和数据库任务的建立都依赖应用系统数据库的具体结构,因此该方法与应用需求密切相关,不利于系统的维护和升级。
中国发明专利申请公开之《一种嵌入式设备与数据库数据同步方法》(公开号 CN102456052A)提供了一种方法,实现嵌入式设备与远程数据库间的数据一致性。该方法只能解决嵌入式设备与服务器通讯中断的情形下,通过缓存数据,等通讯正常后续传数据的功能,不属于数据库同步技术范畴。
中国发明专利申请公开之《一种数据库同步方法及装置》(公开号CN102426611A) 提供了一种方法,提供了一种数据库同步方法及与方法对应的装置,用于将第一数据库的内容同步到第二数据库中。该方法为数据库的数据表建立了一个哈希字段,把表中的每条数据记录转变为哈希值,通过必将原始数据和数据副本得哈希值判断数据是否一致,如果不一致的话就进行同步操作。这种同步方法具体实施的时候需要逐个对每个需要同步的数据表添加哈希值的计算管理模块,与具体应用需求关联比较密切,不利于系统的维护与升级。
中国发明专利申请公开之《数据库的数据同步信息处理方法及装置》(公开号CN102413149A)提供了一种方法,将待同步的数据剥离出来并处理成待发送文件,实现同步 操作。“将待同步的数据剥离出来并处理成待发送文件”这一过程与具体的业务需求密切相 关,不利于数据库的后期维护与升级。发明内容
因此,本发明的目的在于提供一种便于后期维护和升级的数据库同步方法。
本发明采用以下技术方案一种数据库同步方法,原数据库中的待同步内容与目标数据库中对应于待同步内容的 副本具有相同或者等价的数据库存储结构;从而所述同步方法包括以下步骤1)分配数据表,顺序存放所述待同步内容产生数据变化的操作命令;以及2)目标数据库调用所述数据表,执行该数据表中匹配的所述操作命令完成对所述副本 的操作。
从以上的技术方案可以看出,通过分配数据表,记录原数据库的命令日志,通过原 数据库命令日志传送至目标服务器,让目标服务器执行原数据库的所述数据表中或者说日 志中的操作命令而实现数据库的同步。这种方法,与业务系统的耦合比较松,一些情况下与 具体的业务完全无关,从而不会对后续的维护和升级产生太大的影响,而利于系统的后期 维护和升级。
在一些较佳的实施例中,上述数据库同步方法,为每一个待同步内容创建一个数 据表,并在步骤2)完成后,删除该数据表,在避免重复执行相应操作命令的情况下,减轻服 务器的负担。
在另一些实施例中,所有待同步内容共用一个所述的数据表,而在步骤2)后删除 对应的操作命令或者做出执行标记,也可以减轻服务器的负担,并可以针对不同的应用其 灵活性更好。
在一些实施例中,上述数据库同步方法,步骤2)调用所述数据表时采用顺序执行 的方式执行所记录的操作命令,并在同步过程中,基于命令指针的方式标记操作指令序列 的执行位置,这种情形下,所执行的命令被完整保存,有利于后续服务器的维护;同时,基于 命令指针,又不会充分执行相应的操作命令。
在一些实施例中,所述分数据表含有时间表项,所述执行标记为独立存放的一个 时间标志,这种方式也能够准确的标定操作命令项的执行位置。
在一些实施例中,所述数据表含有序列表项,从而在本次执行完毕后,记录当前操 作命令的执行完毕的序号,作为下次执行的位置标志,存储结构更加简单,且能够对执行位 置进行准确标识。
优选地,所述数据表中被执行完毕的操作命令被做出标记,使得该操作命令不能 够在被执行,也能够避免相应的操作命令被重复执行。
上述数据库同步方法,所述步骤2)与所述步骤I)在一天内不同的时间段内执行, 减轻服务器的负担。


图I为一种数据库同步装置的结构图。
具体实施方式
参照说明书附图1,一种数据库同步装置,其具有以下特点源数据库代理模块P在源数据库进行操作时记录对数据库进行操作的操作命令,而生 成源数据库执行日志E,以数据表的形式进行存放。
其中数据表存放的应当是被同步的内容所对应的操作命令。
配置同步模块Q,调用所述源数据库执行命令日志E,执行所述源数据库执行命令 日志E中的操作命令而对目标数据库B进行更新。
从而,把“源数据库A”中的“待同步内容C”同步到“目标数据库B”中的“原数据 库待同步内容副本D”,参见附图I。具体步骤如下I、“源数据库A”中的“待同步内容C”和“目标数据库B”中的“原数据库副本D”的具 有相同或者等价的数据库存储结构,以保证同步操作的顺利进行。
在一些应用中,采用不同存储结构的数据库之间的同步实现起来非常困难而不具 有实际操作价值。
1-1、根据1,“源数据库A”中的“待同步内容C”是“源数据库A”全部内容。
这种实施方式中,若目标数据库B与源数据库A的数据结构一致,可以认为目标数 据库B是源数据库A至少在内容上的存储内容上镜像。
加以对应的以下几种实施方式,本领域的技术人员可根据自己的实际需要灵活选择。
1-2、根据1,“源数据库A”中的“待同步内容C”是“源数据库A”部分数据项目。
1-3、根据1,“目标数据库B”中的“源数据库副本D”用于保存“源数据库A”中的 “待同步内容C”的副本。
1-4、根据1,“目标数据库B”中的“源数据库副本D”是“目标数据库B”全部内容。
1-5、根据1,“目标数据库B”中的“源数据库副本D”是“目标数据库B”部分内容。
1-6、根据1,“目标数据库B”中的“源数据库副本D”含“源数据库A”中的“待同 步内容C”副本以外其它内容。
2、进而外部操作或者预定的内部操作的对“源数据库A”中的“待同步内容C”的 数据修改操作通过“源数据库代理模块P”进行。
这里外部,如外部程序或者通过外部中断产生的操作,以及预定的内部操作,均指 会对源数据库待同步内容C产生影响的操作。
3、从而,“源数据库代理模块P”把影响对“源数据库A”中的“待同步内容C”产生 数据变化的操作命令按照执行的先后顺序记录在“源数据库执行日志E”中。
其中,所述日志文件以数据表的形式存放。可以为每一个源数据库带同步内容创 建一个数据表,也可以共用一个数据表,当共用一个数据表时,需要对数据表进行相应的维 护。
3-1、根据3,“源数据库代理模块P”记录在“源数据库执行日志E”中的操作命令 是SQL (Structured Query Language,结构化查询语言)命令。
3-2、根据3,“源数据库代理模块P”记录在“源数据库执行日志E”中的操作命令 是NDL命令。
4、“同步模块Q”在执行同步操作时,从“源数据库执行日志E”按顺序取出未曾执行过的操作命令,提交“目标数据库B ”执行。应当理解,这里的未曾执行应指在目标数据库端未曾执行,同时应当理解,这里的未曾执行而非如具体的某一个指令,而是如执行序列中的对应该序列的指令。其实,可以这样来理解,源数据库带同步内容副本D的操作匹配源数据库带同步内容C的操作,具有完全相同或者基于等价数据库存储结构的等价操作。5、“同步模块Q”在执行同步操作时,对“源数据库执行日志E”中已经提交“目标数据库B”执行的命令,进行标记或删除,防止重复提交执行。对于标记的方式可以保存日志文件,供如后期维护时使用,对于删除则可以节省出存储空间。5-1、根据5,“同步模块Q”保存“源数据库执行日志E”中上次读取并执行指令的位置,防止重复读取执行“源数据库执行日志E”中记录的操作命令。5-1-1、根据5-1,“同步模块Q”保存“源数据库执行日志E”中上次读取并执行指令的位置是时间标志。5-1-2、根据5-1,“同步模块Q”保存“源数据库执行日志E”中上次读取并执行指令的位置是数据库操作命令日志的有序编号。5-2、根据5,“同步模块Q”设置“源数据库执行日志E”中上次读取并执行指令的标记,防止重复读取执行“源数据库执行日志E”中记录的操作命令。5-3、根据5,“同步模块Q”删除“源数据库执行日志E”中已经提交“目标数据库B”执行的命令。一个更具体的实施例,使相关技术手段得到更清楚地表述
下属实例的业务部分来自一个银行客户分布式身份认证系统,实现客户端数据同步上传志服务器,以保证服务器数据与客户端数据的同步。工作步骤如下
客户端数据库“源数据库A”采用Access2007设计,服务器端数据库“目标数据库B”采用 SQLServer2000 设计。“源数据库A”和“目标数据库B”具有相同的数据库结构,数据表字段仅采用整型数字、浮点数字和文字三类Access2007与SQLServerfOOO在SQL命令中完全兼容的数据类型。 待同步数据是“源数据库A”中全部数据。“源数据库代理模块P”运行在“源数据库A”所在的客户端节点,并在客户端节点数据库“源数据库A”中添加数据表“源数据库执行日志E”,该表格包括两个字段“操作顺序号”和“操作SQL命令”。“源数据库代理模块P”仅在每天9:00-17:00时间段工作,在此期间“源数据库代理模块P”把接收并执行的SQL命令保存到“源数据库执行日志E”。“同步模块Q”每天夜间18:00-6:00执行同步操作时,从“源数据库执行日志E”按顺序取出全部操作命令,提交“目标数据库B”执行。“同步模块Q”从“源数据库执行日志E”执行完同步操作后,清空“源数据库执行日志E”全部内容。
权利要求
1.一种数据库同步方法,其特征在于,原数据库中的待同步内容与目标数据库中对应于待同步内容的副本具有相同或者等价的数据库存储结构;从而所述同步方法包括以下步骤 1)分配数据表,顺序存放所述待同步内容产生数据变化的操作命令;以及 2)目标数据库调用所述数据表,执行该数据表中匹配的所述操作命令完成对所述副本的操作。
2.根据权利要求I所述的数据库同步方法,其特征在于,为每一个待同步内容创建一个数据表,并在步骤2)完成后,删除该数据表。
3.根据权利要求I所述的数据库同步方法,其特征在于,所有待同步内容共用一个所述的数据表,而在步骤2)后删除对应的操作命令或者做出执行标记。
4.根据权利要求3所述的数据库同步方法,其特征在于,步骤2)调用所述数据表时采用顺序执行的方式执行所记录的操作命令,并在同步过程中,基于命令指针的方式标记操作指令序列的执行位置。
5.根据权利要求3所述的数据库同步方法,其特征在于,所述分数据表含有时间表项,所述执行标记为独立存放的一个时间标志。
6.根据权利要求3所述的数据库同步方法,其特征在于,所述数据表含有序列表项,从而在本次执行完毕后,记录当前操作命令的执行完毕的序号,作为下次执行的位置标志。
7.根据权利要求3所述的数据库同步方法,其特征在于,所述数据表中被执行完毕的操作命令被做出标记。
8.根据权利要求I所述的数据库同步方法,其特征在于,所述步骤2)与所述步骤I)在一天内不同的时间段内执行。
全文摘要
本发明公开了一种数据库同步方法,原数据库中的待同步内容与目标数据库中对应于待同步内容的副本具有相同或者等价的数据库存储结构;从而所述同步方法包括以下步骤1)分配数据表,顺序存放所述待同步内容产生数据变化的操作命令;以及2)目标数据库调用所述数据表,执行该数据表中匹配的所述操作命令完成对所述副本的操作。依据本发明便于后期维护和升级。
文档编号G06F17/30GK102982171SQ201210547180
公开日2013年3月20日 申请日期2012年12月17日 优先权日2012年12月17日
发明者许野平, 方亮 申请人:山东神思电子技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1