异构数据库复制技术的研究与实现(上)

数据|数据库

异构数据库复制技术的研究与实现

 

1 引言
网络技术的飞速发展和广泛应用,特别是因特网的普及,大大方便了企业的跨地域发展。同时,为了适应不断增长的商业竞争环境,许多企业通过不断重组和分散经营来提高效率,形成了分散、异构的环境特点。同时这些组织在地域上虽然分散,但在管理上相对集中,往往既要有各部门的局部控制和分散管理,也要有整个组织的全局控制和高层次的协同管理。这种协同管理要求各部门之间的信息既能灵活交流和共享,又能统一管理和使用。

当前,分布式数据库技术已经成熟,并且因计算机成本的下降以及通信费用的降低而得到了广泛的应用。然而,分布式数据库系统既要提供局部自治又要实现全局控制,带来了很大的挑战性。为此,引入数据库复制机制,数据库复制依赖于分布式数据库技术但又可以提供分布式数据库所不具备的功能,特别是由于在存取数据时有可选的数据副本,因此可以改进系统的性能和保护应用的可用性。通过使用数据库的复制技术可以实现集中和自治相结合的控制机制,并可大大提高整个分布式数据库系统的可靠性和响应速度。

现有的异构数据库复制方案优势突出,比如在运行性能和整体性方面都有着明显的优势,而且产商大多提供了一些辅助工具可以协助用户更好地完成复制任务等;但同时问题也存在:数据库产商提供的复制方案依赖于产商自己的DBMS核心关系紧密的实现技术,不一定适用于其它DBMS,也就是说复制方案不是完全异构的。

为解决完全异构问题,本文提出一种新的复制技术:“基于SQL重现法”复制技术,“基于SQL重现法”复制技术的核心思想就是为源数据库中的复制对象(源表或视图)创建变更轨迹表,当源表发生变化时,变更轨迹表中记录了变更情况,再通过事后从变更轨迹表中获取SQL语句,将源表中的数据复制到目标表中。这种方法可以获得复制对象的净变化,运行和传输效率很高,而且易于管理,弥补了解决复制冲突的不足。这种方法适合于除同步复制之外的各种复制形式。

本文将从工作原理、设计思维、实施过程以及技术特点等几个方面介绍“基于SQL重现法”复制技术。

数据库复制就是通过将源数据库中指定的数据复制到目标数据库中,以保持源数据库与目标数据库中指定数据的同步。它应该由哪些部分组成,关于这一点目前还没有很统一的看法。

本文这样描述数据库复制的流程:在源数据库获得复制对象的变化情况,然后把它们从源数据库传送到目标数据库,并修改那里的副本。

根据以上描述本文把整个复制流程分为两个功能相对独立的处理步骤:变化捕获(Change Capture)与数据分发(Data Distribute),把它们称为组成数据库复制的两个主要环节。

本文后面的内容都将围绕这两个环节进行阐述。
2 工作原理
(1)变化捕获

变化捕获是捕获源表的变化序列的过程。“基于SQL重现法”数据复制技术捕获变化的核心思想是为多个相关源表(极端的情况可能是一张源表或整个数据库的所有表,在这里称为一个“源集”)创建一个变更轨迹表,其中包含发生变更的序列号、变更时间以及还原后的SQL语句等信息,当源表发生变化时,就立刻在变更轨迹表中记录下源表的变化情况,此时变更轨迹表相当于基于日志法中的“日志”,变更时间相当于基于时间戳法中的“时间戳”,但是由于这个过程不是由数据库引擎本身实现的,因而需要依靠触发器来实现。也就是说,需要为每个源表建立触发器,当源表发生修改、插入和删除操作时,触发器被启动,通过调用存储过程,将源表发生的操作还原为SQL语句,向该源表对应的变更轨迹表中插入变更时间和还原后的SQL语句,工作原理如下图所示。

 

 图1 “基于SQL重现的数据复制”变化捕获工作原理

 

(2)数据分发

数据分发是指将源表的变化信息实施到相应的目标表中的过程。针对“基于SQL重现法”复制技术捕获变化的方法,数据分发是指根据变更轨迹表中的序号,按顺序从变更轨迹表中获取对应的SQL语句,然后通过实施程序在目标服务器上执行此SQL语句,将源表发生的变化应用于目标表,执行成功后删除变更轨迹表中对应序号的记录。数据分发工作原理如图2所示。

图2 “基于SQL重现的数据复制”数据分发工作原理

时间: 2024-10-01 16:36:34

异构数据库复制技术的研究与实现(上)的相关文章

基于HBase的医疗卫生数据中心构建与异构数据库同步研究

基于HBase的医疗卫生数据中心构建与异构数据库同步研究 电子科技大学 方诗伟 为确定数据模型,提出以关系数据库的E-R建模基础提出HBase的C-O-R建模思想,然后综合分析卫生部颁布医疗卫生元数据标准和部分医疗卫生机构的实际情况,实现医疗卫生信息的HBase数据中心构建.为实现把各医疗机构的异构关系数据库中的数据透明无差异的同步到数据中心,提出以下方案.首先,在数据格式上提出异构数据库产生的异构数据进行标准化的XML和JSON通用数据格式封装实现屏蔽异构数据库的数据差异;其次是传输协议简单及

利用数据库复制技术 实现数据同步更新

数据|数据库|数据同步 利用数据库复制技术 实现数据同步更新复制的概念复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据.复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性.SQL复制的基本元素包括出版服务器.订阅服务器.分发服务器.出版物.文章SQL复制的工作原理SQL SERVER 主要采用出版物.订阅的方式来处理复

XML实现异构数据库间转换的实现与分析(转)

xml|数据|数据库|转换 XML实现异构数据库间转换的实现与分析 类型: XML/Biztalk 收录时间: 2002-4-8 9:20:00 XML中一种扩展的标记语言,它具有很好的扩展性标记.本文通过XML实现不同数据库的定义,实现对XML数据库的访问和异构数据库之间的互访.   关键词:XML  异构数据库  信息交换  数据库访问  1  引言   XML(Extensible  Markup  Language)它是由W3C组织于1998年2月  制定的一种通用语言规范,是SGML 

VFP与SQL远程异构数据库

数据|数据库 <P> </P>熟悉 VFP的朋友都知道,在 VFP 里我们可以使用远程视图 (Remote View) 和 SPT(SQL Pass Through) 技术控制远程异构数据库.这些技术其实是 VFP 对 ODBC 的 API 的封装,所以对于用户来说访问远程数据库就像操作传统的DBF一样简单.关于这两种技术的使用,完全可以洋洋洒洒地写下一本书,鉴于本文主题及篇幅,这里仅枚举 SPT 技术访问远程数据的应用. 很多人认为有了远程视图这样直观.简单的工具,为什么还需要

如何理解异构数据库

问:什么是异构数据库? 答:异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS.异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性.完整性控制和安全性控制.异构数据库系统的异构性主要体现在以下几个方面: 计算机体系结构的异构 各个参与的数据库可以分别运行在大型机.小型机.工作站.PC或嵌入式系统中. 基础操作系统的异构 各个数据库系统的基础操作系统可以是U

使用链接服务器在异构数据库中查询数据

SQL Server提供了链接服务器用于分布式查询异构数据库.通过链接服务器可以链接到Oracle.Sybase.DB2.SQL Server等大型关系数据库,也可以连接到Access.Excel等文件数据库,甚至可以连接到目录服务(AD).索引服务等.要链接到一种数据库需要使用相应的接口.微软为很多数据库提供了驱动接口,所以可以直接使用,但是对于没有提供驱动的数据库比如Sybase,则需要在服务器上安装对应数据库厂商提供的驱动. 使用SSMS或者使用T-SQL语句配置成功链接服务器后便可通过:

Window Mobile RDA数据库操作解决方案研究

Window Mobile RDA数据库操作解决方案研究 一.RDA (Remote Data Access ) 远程数据访问     简单介绍:远程数据访问 (RDA) 使移动应用程序能够访问远程 SQL Server 数据库表中的数据,并将这些数据存储在本地 SQL Server Mobile 数据库表中.随后,该应用程序就可以读取和更新本地 SQL Server Mobile 数据库表.SQL Server Mobile 可以选择跟踪对本地表所做的所有更改.之后,应用程序可以将本地表中更改

自己做的项目涉及到数据库,怎么样把这个项目上传到服务器上?

问题描述 我想知道具体的流程是怎样的,望各位能解答解答,谢谢了!!另外,自己已经有了服务器空间,上传过项目,但都是没有涉及到数据库的!!想知道如果涉及到数据库怎样才能把这个项目上传上去!! 问题补充:是不是除了申请服务器空间外还要申请数据库空间啊??不是很懂!!另外自己本地的数据库表包括数据放在哪啊?梦中有你 写道 解决方案 MySQL数据库 :用SQLyog Enterprise这个工具可以把你的数据库所有数据.存储过程.触发器都会一并给你导出一个SQL文件,(这是一个很好用的MySQL的GU

利用MS SQL实现异构数据库的分布式查询的t-sql代码

分布式|数据|数据库         /*利用MS SQL实现异构数据库的分布式查询的t-sql代码*/ exec sp_addlinkedserver  'MS_SQL','','SQLOLEDB','172.18.9.20'exec sp_addlinkedsrvlogin 'MS_SQL','false',null,'Sa','capec' /*创建一个sqlserver对sqlserver的数据库远程链接*/ exec sp_addlinkedserver 'ora', 'Oracle'