异构数据库

2024-09-25

异构数据库(精选9篇)

异构数据库 篇1

0 引言

随着企业的发展, 企业原有的各种信息系统常常需要升级, 以性能更好、规模更大的系统替代原有的系统。例如企业常常考虑使用Oracle或DB2等大型数据库软件来代替MS SqlServer, 在信息系统升级中, 一个不可避免的问题就是数据迁移。而在不同数据库之间进行数据迁移是其中的一个难点, 因为不同厂商的数据库中定义的数据类型不尽相同, 企业可以选择一些数据库系统自带的工具软件进行数据迁移, 例如Oracle公司的Migration WorkBench、MS SQLServer的DTS (Data Transformation Service, 数据转换服务) 。但是这些工具的针对性不强, 不够灵活[1], 所以许多企业在升级数据库时, 常常自己编写软件来完成数据迁移。

本文设计的系统专门用于MS SQL Server和Oracle数据库之间的数据迁移, 本系统采用了Java为编程语言, 采用Oracle10g和SQL server2005作为数据库环境, 并利用Java语言的跨平台性和JDBC的无差异数据使用来为数据迁移提供技术支撑。

1 系统设计和实现

1.1 总体设计

为实现数据迁移功能, 将系统划分为下面几个步骤: (1) 读取源数据; (2) 生成数据转换的规则; (3) 使用Java语言实现操作[2]。

1.2 系统结构设计

系统结构用来描述系统内部各组成要素之间的相互联系、相互作用的方式或秩序, 即各要素在时间或空间上排列和组合的具体形式。系统功能结构设计如图1所示。下面依照这个结构图来描述各个软件功能模块。

(1) 连接模块。使用此系统之前, 必须先连接数据库。本功能模块用于连接SQL Server数据库和Oracle数据库, 通过输入数据库连接所需的用户名、密码、数据库名称等。

(2) Oracle数据区模块。该模块用于显示所连接的Oracle数据库及表的信息。用户通过连接模块进行数据库连接, 如果连接成功, 将在窗口中显示当前连接的服务器下各个Oracle数据库的结构, 采用树形结构显示。显示信息包括服务器、用户名和当前用户可以访问的表。用户可以查看表名称、表中的字段属性及约束条件等详细信息。

(3) SQL Server数据区模块。该模块用于显示所连接的SQL Server数据库及表的信息。用户通过连接模块进行数据库连接, 连接成功后将在窗口中显示各个数据库的结构, 以树形结构显示, 结构分3层, 最上面是现在已连接的SQL Server数据库的服务器名, 第2层为现在可以访问的数据库名。

(4) 操作模块。本模块的主要功能是对选中的表进行操作, 分为两个界面, 左边显示SQL Server数据库信息, 右边显示Oracle数据库信息。

迁移表的操作是新建表与删除表操作, 用户在界面左边选择SQL Server数据库中的一个表, 这时本系统会在连接的Oracle数据库中查找是否存在同样的表, 如果没有, 将会在Oracle数据库中新建立一个表, 表的字段、数据类型、约束条件、主键等信息全部通过读取相应的SQL Server数据库获得, 按照本系统预先建立的数据类型转换对应表, 生成SQL语句并在Oracle数据库中运行该语句以建立相应的表。这个过程完成了以下操作:读取SQL Server数据库->生成SQL语句->在Oracle数据中建立表, 这就相当于完成了从SQL Server到Oracle的表的迁移。

(5) 操作结果模块。本模块用于显示数据迁移完成后的结果。这些信息包括用户选中表中的各个字段信息、表中的具体数据, 还有根据数据类型转换规则执行后的一些字段信息和生成的SQL语句, 以及在目的数据库表中的新数据和系统本身记录下来的操作日志。

(6) 辅助功能。在迁移过程中显示迁移的时间进度表, 提示估计完成时间和剩余时间, 如果迁移过程中出现错误, 将中止迁移操作并且提示错误类型和出错位置等信息。

2 系统详细设计

详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法逻辑上要正确且算法描述要简明易懂。这里仅描述这个阶段的关键步骤。

2.1 操作区模块

迁移模块主要完成的工作有:

(1) 连接Oracle和SQL Server数据库。

(2) 从SQL Server到Oracle数据库的迁移。该操作实现过程如下: (1) 从SQL Server数据库中获取到将要迁移的表; (2) 获得表的详细信息:表名、数据类型、约束条件、主键等; (3) 从Oracle数据库中寻找相应的数据库, 如果没有则重新建立新数据库; (4) 完成从SQL Server到Oracle的迁移; (5) 提示迁移成功消息框, 完成迁移日志记录。

(3) 从Oracle到SQL Server数据库的迁移。实现的方法和从SQL Server到Oracle数据库的迁移方法相似, 不再赘述。

2.2 大数据字段的迁移

在数据迁移过程中有一些大数据字段的迁移比较复杂, 所以单独在本节进行分析。例如, 在SQL Server表中有一种二进制数据类型是image, Oracle数据库中没有image数据类型, 但是Oracle有存储为二进制数据的类型, 比如BLOB类型, 这样就可以将SQL Server中的image类型转换为Oracle中的BLOB[4]。下面对步骤进行描述:

首先使用SQL语句以获得一个结果集, 然后调用这个结果集的getBinaryStream方法, 从而获得二进制数据, 接下来将此二进制数据写入到一个临时文件中。接下来, 就可以把数据转换成BLOB型存到Oracle表中[5]。

因为BLOB类型的特殊性, 这里写入BLOB字段与写入其它类型字段的方式不同。由于BLOB必须使用其自身的cursor才能对BLOB进行操作, 所以在写入BLOB之前需要获取cursor。

可以先插入一个空的BLOB, 这会创建一个BLOB的cursor, 接下来再将这个空的BLOB的cursor查询出来。这样通过两个步骤, 就间接获得了BLOB的cursor, 此时才能真正写入BLOB数据了, 代码编写需分成3个步骤来完成这个功能[6]。

(1) 插入空BLOB:

into javatest (name, content) values (?, empty_blob () ) ;

(2) 获得BLOB的cursor:

select content from javatest where name=?

(3) 用cursor写数据:

update javatest set content=?where name=?

通过上面几个步骤就能完成从image到BLOB的转换。而text到CLOB的方法, 以及ntext到NCLOB的转换, 因为都是二进制数据, 所以可以用相同的方法实现, 这里不再赘述。

3 系统测试

为了测试系统的有效性, 特设置测试环境[7]用于测试, 方法是从Oracle数据库中将较大的数据量迁移到SQL Server数据库中, 测试数据使用Oracle中样例数据库SH中的SH.SALES和SH.PRODUCTS两个表, 两个表的数据行约为100万行和1万行。实验主机配置为表1所示。

为了更好地比较, 测试中还选用了SQL Server自带的数据迁移工具DTS, 当迁移完成后记录测试中所花费的时间和内存资源, 如表2所示。

从表2可知, 使用DTS运行时占用内存资源比较稳定, 消耗内存资源比较少;而迁移系统在运行时仅耗内存资源50~120MB。当数据量比较小时, 所需内存资源比较小;当数据增加时, DTS所耗内存资源将随着迁移数据的增加而显著增加。

本系统对两个表的迁移都比SQL Server自带工具DTS要快, 并且数据量越大时, 效率越明显。虽然使用本系统将会耗费更多的内存, 但在目前机器内存普遍比较高的情况下, 多占用一些内存并不影响系统的有效性。

4 结语

文中对异构数据库进行了研究, 对SQL Server和Oracle数据库的数据类型进行了分析, 根据软件工程思想对系统进行了总体设计和详细设计, 并使用Java程序设计了语言实现系统。该系统可以在SQL Server和Oracle数据库之间进行数据迁移, 最后通过搭建测试环境证实了系统的有效性。

参考文献

[1]张玲.数据库迁移测试系统的设计与实现[D].大连:大连理工大学, 2005.

[2]陈海宁, 索旺.Java语言案例教程[M].北京:北京工业大学出版社, 2000.

[3]刘天时, 孟东升.信息系统数据迁移方法研究与应用[J].西北大学学报:自然科学版, 2006 (1) .

[4]于海涛.基于Java的异构数据库间数据迁移[D].长春:吉林大学, 2007.

[5]罗林球, 孟琦, 李晓.异构数据库迁移的设计和实现[J].计算机应用研究, 2006 (1) .

[6]余秋明.异构数据库间数据迁移[D].南昌:南昌大学, 2009.

[7]刁兴春, 严浩, 丁鲲.异构数据转换关键技术的实现[J].计算机工程, 2008 (17) .

异构数据库 篇2

Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务.

Sub-job: 数据同步作业切分后的小任务

Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX

Storage: Reader和Writer通过Storage交换数据

Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地

DataX框架内部通过双缓冲队列、线程池封装等技术,集中处理了高速数据交换遇到的问题,提供简单的接口与插件交互,插件分为Reader和 Writer两类,基于框架提供的插件接口,可以十分便捷的开发出需要的插件,

电脑资料

比如想要从oracle导出数据到mysql,那么需要做的就是开发出 OracleReader和MysqlWriter插件,装配到框架上即可。并且这样的插件一般情况下在其他数据交换场合是可以通用的。更大的惊喜是我们 已经开发了如下插件:

Reader插件

hdfsreader : 支持从hdfs文件系统获取数据。

mysqlreader: 支持从mysql数据库获取数据。

sqlserverreader: 支持从sqlserver数据库获取数据。

oraclereader : 支持从oracle数据库获取数据。

streamreader: 支持从stream流获取数据(常用于测试)

httpreader : 支持从http URL获取数据。

Writer插件

hdfswriter:支持向hdbf写入数据。

mysqlwriter:支持向mysql写入数据。

oraclewriter:支持向oracle写入数据。

streamwriter:支持向stream流写入数据。(常用于测试)

异构数据库 篇3

关键词:数字化校园 异构数据集成 数据中心

中图分类号:G250.74 文献标识码:A 文章编号:1673-8454(2008)19-0026-03

一、引言

数字校园是以网络为基础,利用先进的信息化手段和工具,实现从环境(包括设备、教室等)、资源(如图书、讲义、课件等)到活动(包括教、学、管理、服务、办公等)的全部数字化,在传统校园的基础上构建一个数字空间以拓展现实校园的时间和空间维度,从而提升了传统校园的效率,扩展了传统校园的功能,最终实现教育过程的全面信息化。

但是由于历史的原因,学校各个部门之间已经存在许多子系统,而这些子系统各自采用了不同的数据库系统,采用了不同的应用开发技术。各子系统具有各自的用户管理和授权机制,各个应用系统的数据之间具备很强的互补性,但同时相互之间又缺乏数据共享关系和通常的交换途径,作为学校的管理层无法获得一个整体的数据视图,从而也就无法进行数据的全面分析和利用。因此,迫切需要建立一个统一的信息集成平台对分散在各应用系统中的异构数据进行整合,使校园内的各个信息管理系统达到无缝连接。同时,还要实现在应用层面上的整合,使得教师、学生和校领导能够在一个单一的应用界面中访问到所有被授权访问的应用。

本文主要是在某学校数字化校园信息平台上,研究各个子系统之间的数据集成问题。着重研究数据之间的迁移和数据库之间同步的实现方法。

二、数字化校园系统简介

图1是某学院数字化校园系统框架图,从图中可以看出该学校数字化校园平台主要分为五个层次。

(1)数据资源层;

(2)支撑层;

(3)业务层;

(4)门户应用层;

(5)终端层。

其中业务层主要包括该校各单位已建的子系统,主要有学籍管理库系统、教务管理系统、财务系统、人事管理系统、图书馆自动化系统、全国普通高等学校人文社会科学研究管理系统、来华留学生电子信息管理系统、邮件系统、一卡通系统、网络教学平台、数字资源库系统、OA系统、档案管理系统、各种资源系统等等。

这些子系统虽然功能都相对完善,但各自为政,没有达到完全有效的集成。核心问题在于这些应用系统都采用各自的数据库,这样就会导致数据无法共享,一个子系统的数据只能为这个子系统服务。同时由于各子系统之间缺乏互联,造成数据之间不同步,往往需要向各系统中添加用户信息。通过对该学校的业务处室进行调研,得出以下信息:

应用系统主要分为基于WEB的信息系统、C/S结构的信息系统和单机信息系统。数据库系统包括ORACLE、SQL SERVER、VFP、ACCESS以及一些文本文件。同时操作系统也比较繁杂,有UNIX、LINUX和WINDOWS。

因此这些应用系统的数据库类型大多不同,并且其中存在着很多相互关联甚至是重复的数据,导致了数据的不一致和数据冗余,形成“数据孤岛”。因此从数据库的安全和高效方面考虑,需要建立一个统一的数据中心对各个应用系统的数据库进行管理,对已有的数据可以共享或迁移,对相关的数据要实现数据同步等。本文正是在这个研究背景下,着重研究在该平台上如何实现异构数据库中数据集成。

三、方案概述

本方案中我们利用IBM在信息管理领域的最新产品WebShpere Information Integrator(WII)建立一个信息集成访问接口,建立一个逻辑上集中、物理上集中存储结合分布存储的校园综合信息平台,WII 将会建立一个可读写的双向访问接口,在WII所提供的访问接口的支持下,就可以在一个整体数据库的逻辑视图下(这一视图是跨越当前校园内各个业务系统之上的),来实现新的面向校园综合业务管理的数据流程和业务流程,实现整个数字校园综合业务系统的开发和部署。

同时考虑到需要建设一个以教育部数据标准为校内数据标准的公共数据平台(ORACLE 10G),实现汇总全校的关键数据、作为各信息系统之间数据交换的中介和可基于该数据库开发所需的全校应用。

根据应用系统的分类和学校对数据的保密程度,制定了三种数据集成方案。

1.数据迁移方案

将一些原来单机版的数据库,如资产管理系统中的数据,迁移到公共数据平台中。

2.数据库同步方案

(1)对于不便于操作的数据库:主要是采用WII提供的联邦功能,通过包装器将各类数据源映射到公共数据平台中。

(2)对于其他数据库:主要是采用WII提供的复制功能,采用程序将数据抽取出来,通过中间的传输,最后加载到目的地。

3.预留接口

主要是为该学校新建项目在公共数据平台上预留接口。

四、具体的解决方案

1.数据迁移的解决办法

由于该学校资产系统采用的是早期的VFP产品,不能通过网络进行数据的同步,因此可通过WII提供的工具实现非关系型数据库与关系型数据库的集成整合。

首先将为Excel表格数据文件配置为ODBC数据源,同时在WII自身提供的DB2数据库创建资产数据库tl_zichan;然后创建非关系型包装器,系统根据我们先前所选择的数据源类型(ODBC),将自动为包装器查找到对应的包装器模块库(db2rcodbc.dll),此模块库是包装器的核心,包含所有用于完成DB2和ODBC数据源之间交互的例程;创建昵称后就可以访问Excel数据源中对应的数据表。

2.数据库同步的解决办法

(1)联邦是利用SQL或产生SQL的工具(整合的开发环境、报表、分析工具)来访问、整合及处理分布式和异构的数据。通过部署这一模式,可以将所有的异构数据源(分布在各个业务系统中的Oracle、Sybase、SQL Server等),统一成一个数据库读写访问接口,应用开发者只需要使用WII提供的一套访问接口就可以实现与各个异构数据的连接、访问、处理操作,简化编程难度,从而开发出跨越校园内各个业务数据的综合业务功能。

由于该学校教务管理系统陈旧,无法在其后台数据库上操作,创建控制文件和触发器,因此采用联邦的方式进行数据同步。首先我们利用WII的联邦数据库技术,将以下数据库表按照下列规则进行映射:

1)把教务管理数据库中的课程设置资料数据库表,映射到利用WII建立的公共数据平台中的数据库表上;

2)人事管理系统数据库中的教师资料数据表,映射到利用WII建立的公共数据平台中的数据库表上;

3)学生管理系统数据库中的学生选课记录数据库表,映射到利用WII建立的公共数据平台中的数据库表上。

当学生通过网上选课系统进行课程选修时,就可以在一个查询视图上将课程情况(分布在教务系统中)、任课教师情况(分布在人事管理系统中)全部获得,帮助其进行课程选修。确认选修课程后,可以通过WII提供的双向读写接口,将选课记录直接写入学生管理系统中。

(2)复制通过两个应用CAPTURE和APPLY来实现。CAPTURE用于获取数据源数据的增量。对DB2家族的数据源而言,是通过读取日志信息获取。APPLY是将数据源的增量应用到数据目标。若数据目标是非DB2的数据库,则通过结合数据联邦技术先将数据目标在信息整合平台建立昵称(NICKNAME),对昵称进行操作即可完成完整的数据复制过程。如果数据源是非DB2的数据库,其获取数据增量的CAPTURE由数据源的TRIGGER机制实现,这些TRIGGER由WII的复制机制维护,见图2。

由于该学校公共数据平台采用ORACLE,并且人事数据库采用的是SQL SERVER数据库,为了安全起见,我们首先在人事数据库中新建一个备份库,然后对人事数据表建触发器,保证人事信息实时同步到备份库中。之后将备份库作为数据源配成ODBC数据源,创建关系型包装器、SERVER、用户映射和昵称,至此已将人事数据库引入了联邦数据库。

同样,我们也能将ORACLE数据库引入到联邦数据库中。下面介绍一下数据复制的过程:首先创建CAPTRUE服务器,由于是非DB2的复制,所以需要选择人事处源端的WRAPPER名;选择需要注册NICKNAME的表;以上步骤实现了从源端抓取哪些表。下面就是将数据如何放到目标数据库中,创建APPLY服务器,接下来是创建源与目标的预定集,定义APPLY控制服务器别名、集合名、APPLY限定符、CAPTRUE控制服务器别名、CAPTRUE模式和目标服务器别名,在时间表中设置需要同步的时间点;至此,人事数据库与公共数据库同步设定完成。

五、结束语

数据中心的建立是校园信息化过程中的重要一环,如何在最大程度保护和利用现有子系统的基础上,建立一个合理、适用的数据中心则是实现校园网统一规划、疏导全校数据流,使整个校园网络信息管理系统可持续发展并上升到一个新的高度的根本保证。数据中心将校园中分散的数据资源集中存放,提高了数据的共享性,加强了数据的安全性。本文分析了数据中心在数字化校园中的重要意义,提出了应用异构数据集成技术构建数据中心的方案。?筅

参考文献:

[1]王馨迪.网络数据库[M].北京:清华大学出版社,2004.9.

[2]严慰敏.数据结构及应用算法教程[M].北京:清华大学出版社,2001.2.

[3]王珊.数据库系统原理教程[M].北京:清华大学出版社,1998.7.

[4]Erik Pace Birkholz著.赵彦玲等译.Microsoft,UNIX及Oracle主机和网络安全[M].北京:电子工业出版社,2004.7.

[5]肖伟,赵嵩正.异构环境下Oracle数据移植问题研究[J].自动化技术与计算机技术,2004(2).

异构数据库同步问题研究 篇4

关键词:数据同步,一致性,变化捕获

本章在分析数据同步技术现状的基础上,针对异构数据库环境,提出了一种“基于SQL还原法”的适合于企业级数据同步的技术。该方法运用触发器或日志分析工具对源数据库变化进行捕获,还原出源数据库发生变更的SQL语句并记录日志,然后通过从日志文件中获取被还原的SQL语句,执行更新目标数据库,从而达到数据同步。该方法具有完全异构、灵活性好、通用性强、安全性高的特点。

一、数据同步方法分类

对象变化捕获是数据同步的基础,它直接决定了数据同步的更新方式和选时方式,所以数据同步常常按照其变化捕获的不同进行分类,一般可以归纳为以下六种基本方法。

1、基于快照法:

快照(Snapshot)是数据库中存储对象在某一时刻的即时映像。通过为同步对象定义一个快照或采用类似方法,可以将它的当前映像作为更新副本的内容。

2、基于触发器法:

在源数据库为同步对象创建相应的触发器,当对同步对象进行修改、插入或删除等DML(Data Manipulation Language)命令时,触发器被唤醒,将变化传播到目标数据库。

3、基于日志法:

数据库日志作为维护数据完整性和数据库恢复的重要工具,其中已经包含了全部成功提交的操作记录信息。基于日志法就是通过分析数据库日志的信息来捕获同步对象的变化序列。

4、基于API法:

一些小型数据库和非关系型的数据库没有触发器和日志机制,可以在应用程序和数据库之间引入一类中间件,由它提供一系列API[包括ODBC驱动程序),在API上来完成应用程序对数据库修改的同时,记录下同步对象的变化序列。

5、基于影子表法:

许多情况下,源数据库无须了解同步对象的每一次操作,只要知道最后总共发生了什么变化就足够了。因此,可以在初始化时为同步对象表T建立一个影子(shadow)表S,也就是作一份当时的拷贝,以后就可在适当时机通过比较当前T和S的内容来获取净变化信息。

6、基干控制表变化法:

基于控制表变化(Control Table Change)法就是为每个要同步的源表T创建一个控制表C,C只包含T的主键字段Pk和一些控制信息字段,当T中某个记录发生变化时,C中同主键Pk的记录也随即被修改。这一过程通常可以通过触发器实现,到时候只需根据C就能知道T的变化信息。

上述的6种同步方法各有利弊。为解决完全异构的数据库同步的问题,本文将保留优点、摒弃缺点,提出一种更加适用于企业级数据同步的方法,这里称它为“基于SQL还原法”。“基于SQL还原法”同步技术的核心思想就是为源数据库创建用户日志文件,当源表发生变化时,就立刻在日志文件中记录变化并还原SQL操作语句,然后通过从日志文件中获取被还原的SQL语句,将源表中的变更数据更新到目标表。

二、数据同步过程

“基于SQL还原法”的数据同步过程如下图所示。

整个同步流程可分为三个功能相对独立的处理步骤:变化捕获(Change Capture)、数据分发(Data Distribute)和数据更新(Data Update),它们是组成数据同步的三个主要环节。

三、变化捕获技术

变化捕获是捕获源表的变化序列的过程。由于绝大多数数据库的日志格式不公开,直接读取逻辑日志有困难,所以要对源数据库的变化进行跟踪、捕获。仔细分析第一大节所述的6种同步方法,不难看出每种方法(除了影子表法)归根结底还是依赖于触发器或日志,触发器法和日志法是最基本的变化捕获的方法,目前流行的商用数据库都提供触发器机制或日志分析工具,因此本方法将采用触发器法或日志分析法来捕获源数据库的变化。

1、触发器法:

在源数据库为需要同步的每一个源表分别创建插入(INSERT)、删除(DELETE)和修改(UPDATE)三个触发器,当源表发生插入、删除或修改操作时触发器被启动,利用触发器中记录影响行变化的临时表来获取源表的变化信息,将发生的操作还原为SQL语句,并记录日志文件,日志文件应至少包含操作时间、被还原的SQL语句等必要信息。

2、日志分析法:

另有一部分数据库的触发器机制没有上述功能表,则可以通过读取数据库的日志来获取同步对象的变化,因为数据库日志已经包含了全部成功提交的操作记录。由于大部分数据库的日志格式不公开,需用专用的日志分析工具或接口来解析数据库的逻辑日志将发生的操作还原为SQL语句,并记录日志文件,日志文件同样应包含操作时间、SQL语句等必要信息。

四、SQL语句还原技术

在获得同步对象的变化信息后,就可以根据源表与目标表的映射关系,还原出目标表的SQL语句。“基于SQL还原法”将统一按照SQL92标准进行SQL语句还原,而不针对某一具体的数据库DML,因为目前几乎所有的流行数据库都支持SQL92标准,这样支持面就更广泛了。

还原SQL语句不外乎三种情况:如果源表是插入操作,则被还原成目标表的INSERT语句;如果源表是删除操作,则被还原成目标表的DELETE语句;如果源表是修改操作,有两种情况,若是采用触发器法,则被还原成目标表的DELETE和INSERT两个语句,即UPDATE语句被拆分为先删除后插入两个子操作,因为从触发器的两个临时表可以直接还原出DELETE和INSERT两个语句;若是采用日志分析法,则被直接还原成目标表的UPDATE语句,因为日志分析的结果就是UPDATE语句,没有必要再拆分成两个语句。

1、数据类型格式的统一:

由于不同数据库的数据类型和引用格式与SQL92标准有所差异,所以在SQL语句还原过程中要进行类型格式的转换。“基于SQL还原法”采用接口的方式来统一转换,接口内预置有一张Oracle,SQLServer,DB2,Sybase等流行数据库的数据类型与SQL92标准的数据类型的映射表。

2、含有多媒体类型的SQL语句:

倘若同步对象中含有多媒体类型的字段,因为SQL92标准里没有对多媒体类型进行定义,所以只能根据数据库本身的DML语法来还原处理多媒体类型字段的SQL语句。例如Oracle,DB2都用BLOB来保存图像、声音等大数据对象,但是它们的用法却不尽相同。

综上所述,因此在还原过程中要根据各自的DML语法进行对应转换。

五、数据分发技术

分发有时也称传播(Propagate),负责节点之间的数据发送和接收。一般情况下,它把更新数据从源节点传输到目标节点。

1、连接方式

连接方式一般认为有基于消息(Message-based)式和基于会话(Session-based)式两种。

基于消息式连接又称消息队列(MessageQueuing)式或保存并转发(Store-and-Forward)连接。源节点事先把要分发的数据保存在本地日志中,到时再按照发送和接收消息包的方式来传递数据,传递消息包通过源节点和目标节点的出/入(Outbound/Inbound)消息队列来完成。典型的有通过Ftp,Email或使用诸如MQ这样的消息中间件来实现。

基于会话式连接也称点对点(Peer-to-Peer)连接。该方式不需要事先准备分发数据,允许在分发时才捕获变化。节点之间的数据传播以会话方式进行,每个节点可以同时发送和接收数据。基于会话式连接在效率、可标量性等方面优于基于消息式连接,但在可靠性方面却不如基于消息式连接。

2、分发模型:

分发由不同的节点承担会产生不同的分发模型,从而影响同步的组织形式和效率。一般可分成推式(Push)、拉式(Pull)、推拉结合等三类模型。

(1)推式模型:如果由源节点承担分发任务,传播内容表现为由源节点主动地发送给目标节点,称为“推式(Push)”模型。推式模型的优势在于效率较高;但可调度性差,它的传播信息都是事先定好的。

(2)拉式模型:如果由目标节点承担分发任务,传播内容表现为由目标节点向源节点申请而来,称为“拉式(Pull)”模型。拉式模型的优势在于容易调度,源节点可以减少传播信息,随着参与节点数量的增多而表现得更为明显;但是它的效率较差,且不能实现实时的信息传播。

(3)推拉结合模型:如果分发任务由第三节点承担,称为“推拉结合”模型。当节点增多而又有大量同步任务,特别是需要把同步工作独立出来时,推拉结合模式最为合适。而当节点数目比较少或同步任务比较轻松时,它的性能和成本都不合算。

考虑到同步的实时性要求,“基于SQL还原法”采用推式模型来实现分发。

六、数据更新技术

数据更新是指根据同步对象的变化信息来修改目标数据库,从而保证数据的一致性。在通常情况下,它紧接着分发环节执行,有时甚至被捆绑在一起。

1、更新操作

更新数据内容可以是同步对象的完全拷贝、变化序列或净变化。目标数据库在按不同操作处理它们时,对主键的要求也不一样。

(1) CREATE操作:用更新数据创建一个新表,一般用于初始化。源表和目标表是否有主键以及主键域是否等价都非必要条件。

(2) INSERT操作:将更新数据作为新记录插入已存在的表。有两种情况,已定义主键时,目标表的主键字段数一定多于或等于源表;而没有定义主键时,目标表包含重复记录的现象就不可避免。

(3) DELETE操作:删除已存在表的相关记录。源表和目标表都必须有主键而且主键域必须等价。

(4) UPDATE操作:修改已存在表的相关记录。只有在更新数据是完全拷贝的情况下,才可以不定义主键;否则源表和目标表都必须有主键而且主键域必须等价。

2、例外处理

数据更新并不肯定成功,失败的原因包括传输中断、超时、硬件故障以及违反原有的约束条件等,其中有部分可以通过DBMS的恢复机制得以解决,这里把不能恢复的更新失败称为“例外(Exception)”。例外的产生会延长数据不一致性的潜在期(Latency),严重时会造成数据库挂起,甚至引起系统崩溃。

如何处理例外主要取决于例外对数据一致性的破坏程度以及用户承受程度的影响,一般可供选择的处理方式有:

(1)Redo方式:要求重新分发更新数据;

(2) Ignore方式:忽略本次例外,留待下次同步时再解决;

(3) Execute方式:执行预先定义的一组指令,这是一种最为灵活的处理方式。

经过以上表明,运用“基于SQL还原法”实现的系统在理论上能够满足实际需求,体现了它的功能特性,达到了预期的目标。

相比于其它各种同步方法,“基于SQL还原法”具有以下技术特色:

1、完全异构:“基于SQL还原法”同步技术是完全异构的。同步能够在所有数据库至少是与关系数据库(RDB)兼容的数据库之间进行,而且能够做到不同表结构之间的同步更新。

2、DBMS无关性:“基于SQL还原法”同步技术可以做到DBMS无关。目前的许多同步方案,特别是数据库厂商提供的数据复制方案,都依赖于与厂商自己的DBMS核心关系紧密的实现技术,而“基于SQL还原法”采用ODBC或JDBC接口连接各种数据库,各大数据库厂商都制作了符合ODBC或JDBC标准的驱动,这样利用这些接口,就不用考虑太多底层的DBMS特性,可以透明地操作各种DBMS。

3、通用性:“基于SQL还原法”同步技术的变化捕获结果是按SQL92标准的SQL语句形式出现的,可以给任何支持SQL92标准的数据库作同步。如果不用标准的SQL语句,就必须写对应的数据库DML操作,这样一来就必须知道是哪种数据库,因为不同数据库的DML语句不尽相同。“基于SQL还原法”做的事情就是从源数据库获取变更操作的SQL语句,在目标数据库执行该SQL语句实施更新。

七、小结

数据同步作为分布式环境中的一项关键技术,文章在分析数据同步技术现状的基础上,针对异构数据库应用环境,研讨了一种“基于SQL还原法”的适合于企业级数据同步的技术。文章从数据同步的变化捕获、数据分发和数据更新等三个环节阐述了“基于SQL还原法”的基本工作原理,并着重讨论了实现该方法的变化捕获与SQL还原技术及其异构处理问题。

参考文献

[1]张正明,伶俐鹃,异构数据库系统集成的研究[J].计算机科学,2004,31(10增刊):372-374.

[2]张震,异构数据库同步系统的研究与实现[J].计算机应用,2002年10月,43-45.

[3]李扬,耿昌宇,张丽芬.基于Socket通讯模式下的跨平台数据同步[J].北京理工大学学报,2002,22(1):81-84.

[4]仲跻来,袁海等.数字同步技术网维护技术[M].北京:人民邮电出版社.2001:1-6.

[5]王存思,黄庆荣,傅清祥,异构数据库间的数据复制技术及其应用[J].福州大学学报(自然科学版),2001,29(3):21-23.

[6]张晓,张羽.远程数据库迁移技术研究[J].计算机应用研究,2005第4期.

异构数据库 篇5

一、异构数据库系统

从异构数据库系统来看, 它的意图是合并和共享各个数据库之间的数据、信息、资源、硬件设备以及人力资源。在集成过程中, 最为重要的技术是以各个局部数据库类型为基础, 构建整体的全局视图。

二、异构数据库数据共享

鉴于异构数据库系统内有语义语法方面的不一致, 要等价转换系统中的数据显得不那么容易。因此, 它的转换意图是转换源数据库中整体有意义的资料和信息, 使得他们都进入到目标数据库。在这个过程中, 尽可能不含有无用信息。本文下面来论述若干数据转换的途径。

1. 使用软件工具进行转换

通过运用数据导入工具, 可以以文件形式将异构数据导入到集成好的数据库表内容。例如, PowerBuilder、Server以及SQL DTS、Oracle分别通过各自的数据管道Data Pipeline和SQL*Loader等, 可以在很大程度上整合和集成系统、文本、表格等以系统格式存在的数据和信息。在编写完成各个分系统所运用的转换代码后, 这些原始数据就能够转换、清理错误的数据、转化数据结构、消除冗余信息、存储以及刷新数据。但是, 数据转换工具本身没有独立性, 必须先要打开行该数据库产品中的前端应用程序, 之后才能运用有关的转换工具。而且, 转换程序比较多, 人工操作成分比较多。

通常情况下, 各数据库都载有此类专用工具, 这些工具密切结合了自身数据库的特征。在集成完成后, 如果没有转换到转换工具一一对应的数据库中去, 则不能使用这些数据转换工具, 而只能运用和集成相同类型的DBMS异构数据库。

2. 利用第三方数据库的转换

在转换规模较大的数据库时, 由于它的数据量非常大, 再加上不能使用工具软件的, 这就要运用其他小型的桌面数据库来进行转换, 如Access、Excel等。在转换具体的数据库过程中, 要从字段、表和关系定义出发, 借助原始数据库, 先通过中间数据库的转换, 读出数据, 并导入到对应的目的数据库内。

在这种方法中, 要求所需转换的模块比较少、扩展性能很强大, 它的缺点是要撰写大量SQL语句才能完成实现转换, 而且这种过程比较复杂, 但是质量并不高, 转换过程也比较冗长。

3. 设置传递变量的转换

在数据库应用程序中, 要充分运用数据库连接和开发工具功能, 先设定若干个有差异的传输变量, 这样就可以在源数据库与目的数据库进行转换, 而且可以链接和直接转换两个数据库异构数据库之间。在现存的数据库系统扩展过程中, 这种转换方法相对而言容易些, 且转换速度和转换的质量也是比较高的, 但是它的通用性非常差。

4. 通过数据库组件的转换

在转换过程中, 要充分运用数据库中应用程序里面的开发技术, 首先要设定ODBC, 在此基础上, 直接运用相关的数据工具进行数据转换。借助ODBC组件, 源数据库与目的数据库能够存取相关数据, 直接转换相关数据。信息数据的类别成为了组件存取数据的核心内容。假如源数据库并不能一一对应于目的数据库中的数据类型和数据定义, 则必须等价地转换这些数据的类型, 进而开展数据转换工作。如果进行完全等价, 则存在很大难度 (图1) 。

5. 利用XML实现转换

就XML来讲, 它和平台性并没有关系、可以扩展, 而且互操作性非常强大。它的数据语义描述能力以及传送能力都非常好, 作为数据源交互媒介, XML是非常不错的选择。就XML来看, 它自身的灵活、可扩展等特征使得它能够很好地描述不同应用类型的数据、甚至还可以描述存在很大差异的应用数据, 尤其适用于专门记录数据库数据的应用。除此之外, XML自身还具备自我描述性特征, 这就能够使它在不同的应用程序直接处理和交换相关的数据。这样, 也不必根据该数据二制定与与之有关的应用程序。

从XML来看, 它还能够在Web浏览的基础上实现多种形式的可视化显示, 从中间过程的转换处理程序来看, 需要访问管理系统内部的数据信息以及输出XML文档。为了能够很好地在XML文档和数据库之间传输和转换信息数据, 这就要求在文档以及数据库的结构间构建起相关的映射关系。建立映射关系, 标志着实现了中间转换处理过程中的程序功能。在XML的基础上, 数据库系统集成的核心内容是构建数据公共映射的相关模型, 这样就可以完成XML模式和数据库模式这二者之间所存在的映射关系, 这样一来, 关系模型就被映射到该公共数据模型上, 而后再通过公共模型映射到关系模型上。这个模型务必要达到下列要求:从模型的设置来看, 它应尽量简单, 要有很强的可操作性, 还要非常容易转换相关的数据库模型。因此, 这种模型的描述性也要非常好, 可以系统地描述和读取相关的数据模型, 要与偶非常强大的可扩展性。这种模型不仅要能够映射相关的数据结构和数据操作, 还要约束好数据库的完整性特征, 以这样就能够规避完整性不够而导致后来的插入以及删除异常。

从异构数据库来看, 它所牵涉到的数据形式主要有以下几种:结构化、半结构化以及非结构化等3种类型的数据。结构化数据的存在范围很广泛, 它在各类的信息系统数据库中都是大量存在的, 而且在关系数据库的存在最具有代表性。通常情况下, 半结构化数据都是存在于Web页面中, 它包括普通的文档、文件、各类电子邮件等内容。从XML来看, 它能够很好地处置和设定这两类数据。

XML可以用来转换数据转换, 这样就能够共享异构数据库中的相关数据, 这种方案的可行性也比较强。它的核心是构建起一一对应的映射模型。数据库异构和技术数据库异构问题的实习主要通过以下两种方式:第一是以客户端为基础提出相应的解决方案。比如, 可以借助PowerBuilder来进行软件开发, 通过把异构数据库和客户端链接到ODBC或其它数据库专用接口上, 此种类型的解决方案通常适用于C/S类型;第二是以服务器端为基础提出相应的解决方案。这就是说, 为例减少客户端的工作压力和工作负担, 通常都是在服务器端处理信息, 这种类型以B/S方式为主。

三、结语

在应用这些技术解决异构数据库问题时, 通常都要构建不少子系统, 它们构成了集成计算机信息系统, 这样就可以实现复杂度更高、更高水平的性能。然而既有的异构信息系统, 通常情况下信息孤岛情况是普遍存在的。这就是说, 在各个子系统间, 它们都是相互分开的、实现信息交换和信息共享的难度很大。这就要我们运用系统集成手段来处理这些问题。从上文分析可以看出, 信息集成技术是为了更好地处理和转换系统中复杂度更高的、分布更为广泛的、结构各不相同的多媒体信息数据和转换、交换、集成以及共享普通结构数据。在这个过程中要以异构数据库为基础实现系统集成, 这样就可以增强系统的可移植、互操作、互换以及稳定等特征。

为了更好地交换和共享异构数据库中的相关信息, 要处理好异构数据库中的数据转换。在转换过程中, 要处理好相关的理论与技术措施。这样以来, 就能够很好地破解数据转换、信息技术发展以及数据库升级所带来的各种问题, 也能够尽可能地运用已有资源, 更好地服务于经济社会的发展。

摘要:在企业开展信息化过程中, 异构数据库中的数据共享是非常关键的问题。本文首先厘清了异构数据库的目标, 在文章的第二部分提出了异构数据库数据共享中的转化方式。希望这些方式能够尽可能地运用既定资源, 节省开发资源。

关键词:异构数据库,数据共享,转化方式,软件工具,第三方数据库

参考文献

[1]杜宝伟.信息化建设中异构数据的共享策略和方法[A].2012油气藏监测与管理国际会议暨展会论文集[C], 2012

[2]万静, 刘健, 王学伟, 易军凯.基于XML的异构数据库信息共享方法研究[J].北京化工大学学报 (自然科学版) , 2010 (05)

[3]许晓林.一种基于本体的异构数据库集成方法[J].煤炭技术, 2007 (09)

异构数据库间数据同步的方法实现 篇6

为了提升业务管理平台的易维护性、可延展性、数据安全性, 大多数业务管理平台选择将数据分层管理, 以轻量级业务管理平台为例, 既只将数据分离为数据采集层和数据应用层两层。数据的分离意味着不同数据层之间为了实现数据交互以满足业务需要就必须按照业务规则将数据采集层的数据同步到数据应用层。

数据同步在时间维度上可以分为实时数据同步和非实时数据同步。实时数据同步要求数据存储到采集层与同步到应用层同步进行, 几乎不存在时间差。非实时数据同步要求数据存储到采集层与同步到应用层异步进行, 即将数据存储到采集层之后根据业务需要按照规定的触发时间 (固定周期的固定时间点) 将数据采集层的数据同步到数据应用层。

本文以石油行业信息系统数据统计模块中针对数据实时性的迫切需求为背景进行讨论。支撑系统的数据由数据采集层和数据应用层组成, 拥有各自独立的数据库进行数据的管理。数据采集层采用指标维度的组合方式存储数据, 即一个数据单元是由一个指标及其对应的维度组 (多个维度的组合) 来唯一存储定位。系统开发初期使用ETL工具进行两个异构数据库之间的数据同步。数据应用层采用维度组与指标组联合定义事实表结构, 事实表与维度组所对应的维表关联形成星形模型, 通过BI工具进行建模, 按照业务规则将各项数据灵活地展现出来。

ETL的工作方式是在一个固定的周期或固定的时间点 (例:每天晚上十二点整) 批量地将数据采集层按照相应的业务规则同步到数据应用层, 这种方式必然会造成两个数据库之间在某些时间周期内存在数据差异性的问题, 无法满足用户“即填即用”的业务需求。由于ETL方式对于实时性数据要求的局限性, 最后探讨并提出了通过存储过程实现部分数据实时同步、通过ETL方式实现部分数据非实时同步的数据同步方案。

一、相关技术分析

通过ETL技术进行数据同步, 可以对多种操作 (数据源的数据抽取、转换, 维护) 过程进行简化和自动化管理, 定期或按调度接收数据, 并将其输入数据集市或数据仓库目标数据库的集成工具。ETL可以从多个不同的业务系统、多个平台的数据源中抽取数据, 完成转换和清洗, 将结果数据装载到各种系统里面。其提供了图形化的开发环境, 可维护性较强, 能自如应对业务的复杂变化, 兼容多种数据源。

虽然ETL技术具有非常强大的数据处理能力, 但其无法实现数据的实时同步, 即无法满足用户在数据采集层进行数据填报后随即在数据应用层进行数据分析、查询等操作。

存储过程 (STORED PROCEDURE) 是一组为了完成特定功能的SQL语句集, 是数据库中的一种重要对象。它能够接受输入参数, 并以输出参数的形式将多个数据值返回给调用程序, 包括执行状态, 并能够执行其他存储过程, 经过第一次编译后再次调用不需要再次编译, 是一种高性能的数据操作。

虽然存储过程是一种高性能的数据操作, 但其后台需要大量的SQL语句支撑其实现, 没有成熟的开发工具支撑, 面对灵活多变的业务, 其维护难度极大。

系统中数据采集层与数据应用层为异构数据, 数据采集层同步到数据应用层的数据量庞大, 并且一部分数据必须满足实时同步的业务要求, 所以数据采集层到数据应用层的异构数据同步既要满足大数据同步的要求, 又要满足实时数据同步的要求。通过对实时数据相关业务的分析, 发现其业务具有很强的稳定性, 故采用存储过程的方式实现实时数据的同步, 其他非实时数据采用ETL技术实现数据同步。同时选择两种不同的异构数据同步方式既满足了数据实时性的要求, 又满足了大批量数据同步的现实业务要求。

二、数据结构描述

数据采集层的数据存储是以指标、维度组合的方式实现存储, 即一个数据单元由一个指标及其对应的维度组 (多个维度的组合) 唯一存储定位, 如表1。

数据应用层按照维度组与指标组组合定义事实表 (如表2) , 事实表与事实表中各个维度对应的维度表相关联形成星形模型 (如图1) 。其中, 事实表中的一行数据代表数据采集层中所有维度相同的指标的数值信息。

三、数据实时同步 (存储过程数据同步)

数据实时同步实现步骤。系统中存储过程通过数据采集层与数据应用层之间的业务关联性构建视图实现数据采集层与数据应用层的异构数据转换。根据数据结构描述章节中提到的两个异构数据库间表结构的特点, 在视图中应用“行转列”方式, 对数据采集层的数据进行抽取和转换, 生成满足数据应用层要求的数据集, 并将数据集数据存储到数据应用层对应事实表中。

1) 创建存储过程。填报机构、填报年份、填报月份、报表编号四个参数, 定位数据采集层中唯一的报表实体, 并支撑数据抽取和转化视图数据抓取范围。考虑到存储过程的使用效率, 故将其建立在数据应用层中, 并建立数据应用层到数据采集层的DATABASE LINK连接支撑数据抽取和转化视图数据抓取。

2) 数据抽取和转换。根据数据采集层与数据应用层的业务逻辑以及数据模型特点, 通过“行转列”方式实现从数据采集层到数据应用层的SQL逻辑视图。

维度根据指标分组, 并将其行转列。具体实现代码如下:

维度行转列的执行结果, 如表3所示。

指标根据行转列后的维度组分组, 并将其行转列。具体实现代码如下:

指标行转列的执行结果, 如表4所示。

3) 数据存储。将数据抽取与转化视图生成的结果数据集定义为一个游标对象CURSOR, 具体代码模型如下:

CURSOR游标名称IS SELECT*FROM结果数据集SQL

获取到游标对象后, 可以通过LOOP循环获取每行数据, 逐行数据进行插入操作, 具体实例实现代码如下:

4) 日志记录。事实表表结构发生变化或者机器网络故障等突发情况下, 存储过程执行势必会受到影响, 通过事实表存储过程调用已创建的日志记录存储过程来定位事实表存储过程的执行情况。

日志记录存储过程包含报表编号、填报机构、填报年份、填报月份四个参数, 该参数组定位唯一存储过程的执行情况, 如果执行有异常, 那么在EXCEPTION WHEN OTHERS THEN之后, 将SQLERRM错误信息作为返回结果参数传递给日志记录存储过程, 通过SQLERRM的内容, 能够很容易分辨出执行存储过程中存在的问题, 方便开发人员进行存储过程的问题跟踪。具体实例实现代码如下:

四、批量数据同步 (ETL工具)

数据准备区:考虑到数据采集层随时都可能进行更新等操作, 被频繁的访问, 为了不影响数据采集层对应数据库的IO性能, 所以建立数据准备区, 减少数据转换/清洗操作对采集层的影响。

CSV文件:对于一次维护并且较长时间不变的数据可以用CSV格式文件 (ETL工具也支持其他文件格式) 进行维护并通过ETL工具同步到数据应用层, 如系统中涉及到的维度, 维值。

批量数据同步实现步骤:

1) 数据抽取。通过ETL工具将数据采集层的数据抽取到数据准备区有两种方式:全量抽取和增量抽取。

全量抽取:ETL工具将所有数据采集层中的表、视图等数据对象抽取出来, 并转换为满足业务需要的表数据对象。

增量抽取:只抽取数据库中以上次抽取结束时间为起点的所有新增或修改的数据。

增量抽取较全量抽取应用更广, 如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性, 能够将业务系统中的变化数据按一定的频率准确地捕获到;性能, 不能对业务系统造成太大的压力, 影响现有业务。数据抽取如图3。

2) 数据转换、清洗、加载。数据转化、清洗由两部分组成, 第一部分数据准备区到数据应用层的数据转换/清洗, 第二部分CSV文件中数据到数据应用层的数据转换/清洗。

数据准备区到数据应用层的数据转换、清洗、加载, 如图4。

CSV文件中数据到数据应用层的数据加载, 如图5。

五、总结

随着信息时代的高速发展, 对于企业, 如何能使决策者随时查看生产过程数据, 以便快速地做出更为灵活的商业决策, 是企业信息化建设的关键, 但是面对不断膨大的海量数据, 结合企业自身业务的特点, 采用灵活的数据同步方法, 不仅降低了企业信息化建设费用, 同时也满足了企业对数据的需求。系统采用了数据存储过程和ETL工具数据同步两种数据同步方法, 即满足了数据实时性的要求, 又保留了大批量数据的处理能力, 同时为后续的业务扩展提供了空间。

摘要:本文针对系统中异构数据库间数据同步对数据实时性要求的不同, 提出了通过ETL实现非实时数据同步, 通过存储过程实现实时数据同步相结合的同步方法。该方法在实际使用过程中, 取得了良好的应用效果。

异构数据库 篇7

网络与数据库技术的发展,促使油田信息化的不断进步与完善。过去由于受到技术的限制,企业内部应用的软件部分为单机版软件,而且数据库以小型数据库居多,数据库表以DBF格式的居多,现在软件大多需要更新换代,新的开发数据库系统都集成到以B/S方式为基础的Oracle这类大型数据系统上,这就涉及到了原有数据库的数据与现有数据库的相互转换。例如,油田公司这两年推广的A系列项目的数据库都使用的是大型数据库Oracle,这就涉及到了如何将小型数据库系统中的数据迁移到大型数据库系统中的问题。如果以前应用小型数据库(例如:VF中的DBF)的旧软件还需要应用,那么还要把大型数据库中的数据再转换成小型数据库的数据格式再导入。

2 利用PowerBuilder的数据管道Data Pipeline

PowerBuilder通过对不同数据库采用不同接口的形式同时支持多种关系数据库,并提供了数据管道技术,这是实现两个数据源之间数据传输的一种常用数据处理技术,它在数据库系统转换、原始数据录入、数据导出、移动存储、分布式数据库复制等方面应用非常广泛。通过数据管道,应用程序能够在不同的数据库之间移动数据,也就是说,可以把一个或多个源表中的数据复制到新表或已存在的目的表中,可以删除目的表及其数据后重建目的表,也可以只把最新数据传送到目的表中。而且,这种数据迁移既可以在同一个数据库的不同数据表之间进行,也能在不同数据库管理系统的不同数据库之间进行。除了迁移常规数据(比如数值型、字符型等)外,数据管道还可以在数据库之间迁移图像、声音之类的大二进制对象(Blob型数据)。用数据管道复制数据时,可以复制表中的所有数据,也可以复制部分数据,甚至还可以复制出加工了的数据。

2.1具体操作方法

在使用数据管道前首先要创建数据管道对象。创建数据管道对象时,需要确定源数据库、目的数据库,要从中复制数据的源表,要存放数据的目的表,要执行的数据管道操作类型,运行数据管道事务提交的频率,容许出现的最多错误数,是否要把表的扩展性一起传送到目的数据库中。

(1)启动画笔栏的“Pipeline”图标,系统显示“Select Data Pipeline”对话框.

(2)修改某数据管道对象时,通过单击从列出的对象中选择要修改的数据管道对象,然后单击“OK”按钮,进入数据管道画笔工作区;要创建新的数据管道对象时,单击“New”按钮,系统显示“New Data Pipeline”对话框.

(3)“New Data Pipeline”对话框分成了两个组:“Data Source”组框用于选择数据源,这些数据源的作用与创建数据窗口时的数据源的作用完全相同,它们生成指定的SQL SE-LECT语句;“Database Connections”组框用于指定提取数据的源表所在数据库的数据库配置和目的表所在数据库的数据库配置,如果所需的数据库配置没有在列表框中列出,那么必须使用数据库配置画笔定义相应的数据库配置.

(4)选择了源数据库、目的数据库以及数据源后,单击“OK”按钮,系统根据所选数据源的不同,出现不同的画面,按定义数据窗口数据源相似的方法定义数据源。

(5)定义了数据管道对象的各种选项后,就可以在数据管道画笔中运行数据管道了。单击数据管道画笔工具栏上的“Execute”图标或从“Design”菜单中选择“Execute”菜单项。

对于耗时较长的运行过程,随时都可以终止数据管道的运行,方法很简单:单击数据管道画笔工具栏“Execute”图标位置上的图标,此时图标的图案是只红色小手。数据管道运行结束后,小手图案又变成“Execute”图标图案。

3 利用VFP6.0的自动升迁

VFP6.0提供Oracle和SQL Server两个升迁向导。这两个升迁向导可以创建Oracle数据库或SQL Server数据库,实现数据库各表中的功能。VFP的数据库在升迁之前必须把所有的表都放在数据库里,自由表不能直接升迁,而实际上升迁上去的又只是表,数据库本身不能转到Oracle里。要把VFP数据升迁到Oracle上,必须先在Oracle里建立相应的数据库。

具体操作方法如下:

(1)先取得要导入的ORACLE的服务名,例如ORA10。

(2)配置ODBC,利用Oracle的服务ORA10创建DSN,命名为TEST。

(3)启动VFP,打开项目数据库,利用DSN创建连接Conn_test。

(4)选择“工具”、“向导”、“升迁”单击。

1)选择ORACLE升迁向导;

2)选择要升迁的本地数据库Library;

3)选择可用的数据源(test)或连接(conn_test);

4)输入用户名和口令;

5)选择要升迁的基表;

6)改变匹配字段的数据类型,即本地字段数据类型与服务器字段数据类型的映射;

7)选择表空间user_data;

8)选择表空间文件(采用默认值);

9)指定簇信息;

10)设置升迁选项;

11)单击完成。

4 格式转化

PL/SQL Developer软件是一个为ORACLE数据库开发存储单元的集成开发环境(IDE),使用PL/SQL Developer可以很方便地管理Oracle数据库。转换数据只是其中的极小部分的功能。具体操作如下:

打开PLSQL Developer软件后,点TABLE,找到要导出的表,右键单击,选择“Edit Date”,这时在“SQL”标签的右下角有一个“Expot Query Results……”的图标,单击后出现菜单“CSV File”,“TSV File”,“HTML File”,“XML File”,选择“CSV File”后存储路径,打开*.csv文件,另存为*.xls。然后用VFP导入。至此Oracle转化为dbf格式完成。

5 结语

数据转换中最重要的工作是建立正确的数据库连接数据,包括合适的驱动程序和正确的身份认证。如果源数据库类型与目标数据库类型相差较大转换时,一般可以采用过渡的方法,先将源数据库转成一种通用格式(如文本格式、表格格式或SQL数据等),然后再利用通用格式转换成目标格式。当针对一些简单的数据转换,也可以用VFP、Access等数据库软件自带的导入导出功能来实现转换。

数据转换是一项极为重要的数据库操作技术,它关系到应用系统的可移植和二次开发能力。数据转换可以很好地解决信息技术的发展和数据库的升级带来的问题,能够最大限度的利用现有资源,避免重复开发的浪费。数据转换灵活应用将会给油田应用软件开发带来极大的便利。

摘要:由于油田软件的更新换代,需要应用大型数据库管理系统以满足油田日益增长的业务需求,这就涉及到如何将现有小型数据库系统中的数据转移到一个大型数据库系统中的问题。本文对工作中经常使用的几种有效的数据转换方法进行了介绍。

关键词:数据库,数据,转换

参考文献

[1]Microsoft Corporation.Visual FoxPro6.0中文版程序员指南.北京希望电子出版社,2000.

[2]冯晓利,叶晓虎.学用Visual FoxPro6.0中文版.清华大学出版社,1999.

林业系统中异构数据库建设研究 篇8

1. 实用性

设计系统要求功能较全且实用, 能提供所需各类统计报表;提供城市林业的基础地图和专业地图, 实现空间数据和属性数据的结合, 可绘制出各类带有属性的地图;可实现不同数据的提取, 图形叠加, 派生新图, 重新分类等。系统的建立以能满足实际生产和管理需要为原则, 做到操作简单、快捷、容易。

2. 可扩充性强

考虑到系统的发展, 系统设计时采用模块化结构设计。它的特点是各个模块独立性强, 模块的增加、减少或修改均对整个系统影响较小, 这样便于对系统改进和扩充, 使系统处于不断完善过程中。

3. 数据转换功能强

系统保证已有的资源数据能够转入本系统。

4. 实现数据共享

城市林业资源管理信息系统的数据采集制度化、信息形式标准化、信息内容系统化、信息储存档案化、信息传递规范化, 达到信息横向、纵向贯通一致、数据共享的目的。

二、异构数据库互访

目前异构数据库互访的协议主要有ODBC、JDBC, JDBC具有跨平台特性。

1. 开放数据库互连 (ODBC)

开放数据库互连 (Open Data Base Connectivity, ODBC) 是微软公司开放服务结构 (Windows Open Services Architecture, WOSA) 中有关数据库的一个组成部分。它建立了一组规范, 并提供了~组对数据库访问的标准API。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持, 用户可以直接将SQL语句送给ODBC。

在ODBC中, ODBC API不能直接访问数据库, 必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序, 而驱动程序在执行完相应的操作后, 将结果通过驱动程序管理器返回给应用程序。

2. Java数据库连接 (JDBG)

Java数据库连接 (Java Data Base Connectivity, JDBC) 是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问, 它由一组用Java语言编写的类和接口组成。

3. SQL的一致性

对于复杂的应用程序, JDBC用第三种方法来处理SQL的一致性问题, 即它利用Data Base Meta Data接口来提供关于DBMS的描述性信息, 从而使应用程序能适应每个DBMS的要求和功能。由于JDBCAPI将用做开发高级数据库访问工具, 因此, 它还必须注意其所有上层建筑的一致性。“符合JDBC标准Ⅲ”代表用户可依赖的JDBC功能的标准级别, 表示提供者的JDBC实现已经通过了Java Soft提供的一致性测试。

三、林业系统中异构数据库建设

1. 数据采集

在进行数据库建设前, 首先要收集和整理所需的数据。GIS中涉及的数据不同于常规管理信息中的数据, 它是具有丰富地理特征的地理数据的集合, 这些数据信息量大、来源复杂、原始数据不规范, 空间信息和非空间信息的获取方式和数据来源也有很大不同。根据数据库建设方案, 可按图形信息和属性信息进行数据获取和组织。

2. 空间数据库建设

空间数据库建设的主要任务是把收集到的数据进行空间数据分析, 将得到的地理数据重新进行分类、组织, 从用户的角度描述空间数据的结构。对于经过预处理和分类的遥感影像数据, 可以利用Arc Info提取出相关信息, 矢量化后进行空间分析。

3. 属性数据库管理建设

属性数据库管理子系统是对城市林业中各类属性数据库进行管理, 包括数据库结构操作、属性数据输入、数据库操作、属性数据查询统计及报表输出等功能。 (1) 数据库结构操作:包括建立新库、修改库结构及拷贝库结构等; (2) 数据输入:包括数据的输入、修改和追加; (3) 数据库操作:包括数据库拼接、格式转换、查询及显示等; (4) 属性查询统计:包括逻辑条件查询、属性空间查询和条件统计输出; (5) 报表输出。

4. 系统数据的更新与维护

林木本身存在发展和消亡的过程, 城市林业资源时刻在发生变化。在信息管理系统中, 建立了相应的数据库和图形库, 只要资源发生了变化, 借助数据库强大的修改编辑功能, 便可直接在数据库中更改变动的数据, 增加新产生的数据和删除过时不存在的数据, 而且可以立即利用数据库接口, 将这些数据的变动在图形中体现出来, 必要时可以按需要打印成图。

5. SQL查询

是对于SQLServer数据库中的属性数据进行的查询功能, 其实现方法与Arc GISServer类库无关, 是基于.NET类库而实现的。在此, 以查询用户信息为例来描述SQL查询的原理。为了实现SQL查询, 在此构造了三层结构, 分别是数据访问层、业务逻辑层、页面显示层。数据访问层的Databas。类负责做连接数据库的工作;业务逻辑层中的Us。r类代表了一个User, 用于根据Usernam。获取User的详细信息;页面显示层设计了与客户端的交互页面, 其中添加了“查询”按钮的单击事件。相关代码如下:

参考文献

[1]葛亲红.“3S”技术在延平区森林资源管理中的应用[J].福建林业科技, 2005, 9:176-178

多源异构数据库的集成的研究 篇9

本文简要介绍了在大型企业中普遍存在的多源异构数据库状况,及几种行之有效的数据集成方法,同时以一种用对照表完成结构差异较大的数据库数据转化方法为例,详细阐述了多源异构数据库数据转化和共享的思路。

1 异构数据库的概念和特征

在大型企业中,由于生产自动化进程的阶段性,一般都存在基于多种数据库管理系统(DBMS)的应用程序系统,如基于Microsoft Access的底层生产过程控制系统、基于Oracle或者Sql Server的高层企业资源计划系统(ERP)等等,这些系统的数据库一般都只在本系统内部存取,而不能被其他系统访问。这种状况导致企业不同层次信息孤岛的出现,严重影响信息传递的实时性、加大信息维护的成本。

这些现存的数据库系统的异构主要体现在以下几个层次:

(1)操作系统的异构与网络平台的异构。

(2)数据模型的异构,查询语言的异构,事务管理、并发控制机制的异构和查询优化方法的异构等。

(3)模式冲突,数据库和运行方法的异构。

(4)数据库系统的开发环境和运行环境的不同,以及所使用的编程语言的不同。

我们所要集成的多源异构数据库系统是相关的多个数据库系统的集合,应该实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DBMS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。

2 异构数据库数据集成的几类方法

实现异构数据库的集成,首先要对加入的数据库资源实现完全透明的访问,既要保证全局数据的共享,又要保证各数据库管理系统的自治,确保基于异种系统平台实现对异构数据库的查询和联合使用,并提供一个独立于特定的数据库管理系统的统一编程界面。

根据不同的应用,一般有以下三种不同的异构数据库交互技术:

(1)中介层方式。该方式提供一个应用程序负责专用的数据转化与共享访问,这个程序是特定的、专用的、复杂的。这种特定的方式适合于企业间的相互合作。

(2)数据仓库方式。该方式将各个分布场地的数据提取到企业的中心数据仓库中,那么这种方法的一个显然特点就是数据仓库对于各个分布场地的数据的高度控制权。因此,这种方式适合于企业合并。

(3)中间数据方式。该方式与数据仓库的一个明显不同在于保留各个分布场地的高度自治权,因此该方式适合于Internet的电子商务方式,各个网站将自己的数据按照一定的通用格式提供出来,这样就方便了网上检索的需要。

在这些方法中,我们都必须用到一个统一的访问各个异构数据库的方式,具体说来一般有ODBC、JDBC、CORBA三种。下面简要介绍一下在应用程序中使用较多的ODBC方式。

ODBC是微软(Microsoft)为方便异构数据库之间进行数据共享,专门提出一个用于数据库访间的应用程序编程接口(API)。它使用结构化查询语言(SQL)作为其数据库访问语言。ODBC是依靠分层结构来实现的,这样可以保证其标准性、开放性。图1所示为ODBC的体系结构。

它通过使用驱动程序来提供数据源的独立性,上层应用程序与具体数据源无关,而驱动程序与具体的数据源有关,它是一个用以支持ODBC函数调用的模块,应用程序通过调用驱动程序所支持的函数来操作数据源,若想使应用程序操作不同类型的数据源,就要动态地链接到不同的驱动程序上,由驱动程序完成ODBC函数调用并与数据源对话。

JDBC与ODBC有相似的原理,只不过是应用于Java平台的应用程序。有关JDBC及CORBA的详细资料,请查阅其他参考文献,此处不再讲述。

3 一种异构数据库数据转化方法的实现

前面讲述了异构数据库的概念、特征,以及在一个系统中集成异构数据库数据的几类方法、用到的关键技术等,下面就介绍一例氧化铝化验数据管理系统与生产过程优化系统的异构数据库数据转化的方法实现。

氧化铝生产中,需要及时准确地化验生产过程中物料的化学成分,并尽快发布给各工作岗位和领导层,从而指导生产的顺利进行。为实现化验数据的及时快速发布,建立了一套基于B/S模式的化验数据管理系统。该系统采用Oracle数据库和Java平台,其中关键的化验报告数据字典如图2所示。

从图2可以看出,为实现某物料指标可以灵活增减和修改,物料基础信息字典(物料信息字典和指标信息字典)和报告信息字典(报告主信息字典和报告明细信息字典)都采用了一种主明细的结构,将不变的信息存储主表一条记录,将可变的信息存储明细表的若干条记录。如某一个物料的一条化验报告主信息(包括采样时间、采样班次、样品属性等)以一条记录的形式存储在报告主信息字典中;而其详细的指标化验数据(指标值、修改时间等)以每个指标一条记录的方式存储在报告明细信息字典中。通过编程实现存储与读取的行列转换,可以实现系统维护的灵活性和良好的适应性。

而共享这些化验结果数据的生产过程优化系统则采取了完全不一样的数据结构。如图3所示。

由于生产过程优化系统一般是工艺流程专用,而且应该考虑读取数据库的速度,所以如上图所示采用了将各个固定指标作为字段的形式。该系统采用了Microsoft Access作为底层数据库和Windows应用程序方式。

两者数据库结构的差别是存储方式的不同,化验数据管理系统指标数据是列向存储,而且不管何种物料统一存储,只通过连接报告主信息表和报告明细信息表的报告ID,得到该条指标值所属物料的ID(见图2)。而生产过程优化控制系统则针对某种物料定制表,以一条记录存储该物料全部指标值。要实现数据的相互转化,就必须实现从化验数据管理系统数据库数据和生产过程优化系统数据库数据的映射。

我们采用了上述中介层的方式。通过一段在逻辑上独立于两个系统的程序完成数据的转化。

我们通过ODBC方式访问两方数据库,如图4所示。

其中“数据转化模块”和ODBC配置都在生产过程优化系统服务器上。我们在化验数据管理系统数据库中定义如图5所示对应表,完成两个系统数据的映射关系。

通过将化验数据管理系统中的物料信息、指标信息、对应表、化验数据主信息、化验数据明细信息几个字典做自然连接查询,得到图6所示数据集。

通过对数据集做循环,组织好形如Insert into Ripe Stuff(Sample Date,Sample Class,Si O2,…)values(‘2004-10-10’,’1’,11.13,…)的插入语句。

4 结束语

异构数据库数据集成在各大企业和科研部门中都有很重要的作用和现实意义,研究异构数据库交互技术对于消除企业信息孤岛,提高数据利用效率,减少数据管理成本等都有及其重要的作用。

参考文献

[1]李思思.基于CSCW的分布式异构数据库的研究与实现[D].武汉理工大学,2006.

[2]黎小红,田富鹏.异构数据库中数据集成技术研究[J].西北民族大学学报(自然科学版),2006,(04).

[3]王艳君,王运格,吴丽红.异构数据库间数据集成的方法[J].烟台师范学院学报(自然科学版),1999,(04).

[4]王岩.数字化校园建设中异构数据库集成技术的研究与应用[J].电脑知识与技术,2005,(35).

[5]段永威,秦峰.异构数据源数据转换工具的设计与实现[J].现代图书情报技术,2004,(04).

[6]姚兰.企业多源异构数据库数据访问技术的研究[J].黑龙江大学自然科学学报,2002,(01).

上一篇:莲花湖湿地公园下一篇:社会成本构成