差异数据源系统数据同步和整合方案探讨
2014-04-29杨晓亮
杨晓亮
【摘 要】差异数据捕获是数据库同步的重要环节,对后续的系统数据处理也起着决定性的作用。在进行差异数据捕获时,首要任务是取得复制对象的变化序列或当前映像,在此过程中要求提供尽可能详细的控制信息,选择合适的差异数据捕获方法可以有效的提高差异数据捕获的迁移效率。本文对当前比较常用的不同数据源之间数据同步的几种实现方式及优缺点进行了分析和探讨。
【关键词】数据源;同步;变化
随着分布式数据设计在系统应用中的普及,越来越多的企业、教育机构、政府部门都选择建立自己的数据库来完成日常数据的存储。建立并使用数据库的关键是解决数据同步问题。数据同步是指当某个数据源的数据发生变化时,与之相关联的数据源的数据也会随之变化,可以简单的理解为通过数据同步要让各部门未来的变化信息及时的传递到数据中心,从而保证数据库信息的完整。差异数据捕获作为数据库同步的基础环节,对数据迁移效率起着关键性的作用。当前国内出现了很多差异数据的捕获方法,由于不同差异数据捕获方法适用范围和捕获效率在不同的系统环境中差异较大,因此,对不同差异数据捕获方法的特点进行研究对提高差异数据系统同步和整合效率有着重要的理论和实践意义。本文对当前比较常用的几种差异数据捕获方法进行了分析和比较。
一、触发器法
(1)原理:在为复制对象创建相应的触发器过程中,当对复制对象进行修改、插入和删除等DML命令时,触发器被唤醒,将变化捕获。
(2)优点:能做到实时同步,数据迁移效率较高;可以与其他机制联合用于同步复制和对等式复制等。
(3)缺点:占用的系统资源比较多,降低了原有应用系统的运行效率;在复杂的系统环境里对配置要求较高,该捕获方法实施难度偏大。当数据库系统中存在多触发器机制时,该方法可以在保证效率的前提下完成作业。
二、时间戳法
(1)原理:在要同步的源表里有时间戳字段,每当数据发生变化,时间戳会记录发生变化的时间。
(2)优点:基本不会对业务系统的性能产生影响,有效的保证了原有应用系统的运行效率。
(3)缺点:要对原有系统进行大幅度的调整(源表中要求有时间戳、删除数据时要对系统进行特殊处理);不能捕获非通过应用系统引起的操作数据变化。
三、日志法
(1)原理:通过对源数据库日志的分析,来得源数据库中的变化的数据。
(2)优点:基本不会对业务系统的性能产生影响;大多数数据库都有日志,取源方便;操作过程中对应用系统的占用率较低。
(3)缺点:由于部分数据库系统的日志格式是隐藏的,要建立一个基于日志的变化捕获程序难度较大;不同数据库在具体细节上一般都会存在较大的差异,日志法获得的异构数据库就可能差生很多新问题;日志法会加剧DBA日常数据库管理工作的负担,加大了业务系统的运行强度。
四、控制表法
(1)原理:为每个要同步的源表创建一个控制表,控制表只包含源表的主键字段和一些控制信息字段(更新时间、更新类型等),当源表中的某条记录发生变化时,同时添加或修改控制表相应主键记录。
(2)优点:及时获得同步对象的净变化,运行和数据传输的效率较高,占用系统存储空间较小,管理方便;应用过程中会自动保存更新时间,操作者等控制信息,避免了同步冲突问题。
(3)缺点:控制表法要依靠触发器才来完成,适用范围受到一定程度的限制。
五、API法
(1)原理:在应用程序和数据库之间引人一类中间件,由它提供一系列API,在API上來完成应用程序对数据库修改的同时,记录下同步对象的变化序列。
(2)优点:具备日志法的大多数优点,如基本不会对业务系统的性能产生影响、操作过程中对应用系统的占用率较低。
(3)缺点:不能捕获不经过API的操作所引起的数据变化;应用程序的可移植性差。
六、影子表法
(1)原理:初始化数据库时,为每一个同步对象表建立一个影子表,即作为一份当时的拷贝,以后通过比较当前的影子表与源表获取变化信息。
(2)优点:适用范围广,移植性强,很适合解决异构数据库同步。
(3)缺点:占用空间大,不能获得中间操作信息和控制信息;每次捕获变化都要扫描源表和影子表,效率较低。
通过上文的分析可以看出,不同差异数据捕获方法其特色较为明显,在实际应用中根据系统及采用同步方案的特点选择合适的捕获方法可以有效的提高数据捕获的迁移效率,而且将对原有业务系统运行的负面影响降到最低。本文分析的是最为基础的几种数据捕获方法,现实应用中很多方法都是在此基础上优化或组合而来的,如触发器与API相结合、触发器与控制表结合。
【参考文献】
[1]徐富亮,周祖德.变化数据捕获技术研究[J].武汉理工大学学报(信息与管理工程版),2009(05).
[2]郑祥云,张娟,葛文庚.数据库同步中差异数据捕获方案设计与实现[J].电脑知识与技术,2009(07).
[3]杨鹏,杨海涛,王正华.异构数据库变化捕捉及同步策略[J].计算机工程,2008(16).
[4]杨亚楠,闫健卓,方丽英.“基于SQL重现法”变化捕获方法的研究与实现[J].微计算机信息,2006(36).