




已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)异构数据库间数据迁移研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 数据迁移,又称之为数据移植,是指,从一种数据环境( 源数据库) 中提取 数据,根据需要,迁移或移植到另一种数据环境( 目标数据库) 中。异构数据库 是指具有不同数据模型、不同体系结构,或者虽是同一类型但为不同厂家研制的 数据库,如同为关系型数据库的s q ls e r v e r 和o r a c l e 等。异构数据库间数据迁 移,即在如上所述数据库之间无损地,接近等价地移植数据。 本文通过研究分析异构数据库间数据迁移的技术、方法、以及工具,归纳并 总结现有方法迁移数据时存在的问题之后,提出采用c j | 编程并以a d o n e t 技 术来分别访问异构数据库,以异构数据库s q ls e r v e r 和o r a c l e 为参考设计数据 迁移程序。本文采用微软数据访问框架的最新产物a d o n e t 技术,该技术核心 d a t a s e t 是不依赖数据库的独立数据集合,可以把它认为是内存中数据库,采用该 技术将待迁移的数据一次性整体填充在数据集d a t a s e t 中,由于免去反复到源数 据表中提取数据的过程,转而直接到内存缓冲区d a t a s e t 中提取数据,转换数据, 迁移数据,则数据迁移速度明显加快,数据迁移效率有效提高。 关键字:异构数据库;数据迁移;a d o n e t ;d a t a s e t ( 数据集) a b s t r a c t k b s t ra c t d a t am i g r a t i o n ,w h i c ha l s oi sc a l l e dt h ed a t at r a n s p l a n t ,i sr e f e r st o ,f r o mo n e k i n do fd a t ae n v i r o n m e n t ( s o u r c ed a t a b a s e ) e x t r a c t i n gd a t a , a n da c c o r d i n gt ot h e n e e d ,t h e m i g r a t i n go rt r a n s p l a n t i n gt o a n o t h e rk i n do fd a t ae n v i r o n m e n t ( g o a l d a t a b a s e ) h e t e r o g e n e o u s d a t a b a s em e a n s d i f f e r e n td a t am o d e l s ,d i f f e r e n t a r c h i t e c t u r e s ,o ri st h ei d e n t i c a lt y p eb u td i f f e r e n td a t a b a s ed e v e l o p e db yd i f f e r e n t f a c t o r i e s w h i c hi ss i m i l a rt or e l a t i o nd a t a b a s es q ls e r v e ra n do r a c l ea n ds oo n t h e d a t am i g r a t i o nb e t w e e nh e t e r o g e n e o u sd a t a b a s e s ,a ss t a t e da b o v et h ed a t a b a s e l o s s l e s s ,c l o s e l ye q u a l st ot r a n s p l a n t i n gt h ed a t a i nt h i sp a p e r , r e s e a r c ha n da n a l y s i so fd a t ab e t w e e nh e t e r o g e n e o u sd a t a b a s e m i g r a t i o nt e c h n i q u e s ,m e t h o d s ,a n dt o o l s ,i n d u c t i v ea n ds u m m a r i z e de x i s t i n gm e t h o d s t om i g r a t ed a t ap r o b l e m s ,t h ep r o p o s e du s eo fc 群p r o g r a m m i n ga n da d o n e t t e c h n o l o g i e s i no r d e rt oa c c e s sh e t e r o g e n e o u sd a t a b a s e s ,r e s p e c t i v e l y , t o h e t e r o g e n e o u sd a t a b a s e ss q ls e r v e ra n do r a c l e a s t h er e f e r e n c ed e s i g nd a t a m i g r a t i o np r o c e s s i nt h i sp a p e r , t h ed a t a a c c e s sf r a m e w o r kf o rm i c r o s o f t sl a t e s t p r o d u c to fa d o n e tt e c h n o l o g y , t h ec o r eo fd a t a s e t i sn o td e p e n d e n to nad a t a b a s e i n d e p e n d e n td a t as e t s i tc a l l b ec o n s i d e r e da si n m e m o r yd a t a b a s e ,u s i n gt h i s t e c h n o l o g yw i l lb et om i g r a t ed a t af r o ma o n e t i m ef i l li nt h ew h o l ed a t as e td a t a s e t , s i n c er e m o v e df r o mt h et a b l er e p e a t e d l yt ot h es o u r c ed a t at o e x t r a c td a t ap r o c e s s , i n s t e a dd a t a s e td i r e c t l yt o t h em e m o r yb u f f e rt o e x t r a c td a t a , t r a n s f o r md a t a , m i g r a t i o nd a t a , d a t am i g r a t i o nn o t a b l yf a s tp a c e ,t oe f f e c t i v e l yi m p r o v et h ee f f i c i e n c y o f d a t am i g r a t i o n k e yw o r d s :h e t e r o g e n e o u sd a t a b a s e ;d a t am i g r a t i o n ;a d o n e t ;d a t a s e t ( d a t a s e t ) i i i 学位论文独创性声明 学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得直昌太堂或其他教育机 构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献 均已在论文中作了明确的说明并表示谢意。 学位论文作者签名( 手写) :嘲签字日期:勿9 尸年,2 月匆日 学位论文版权使用授权书 本学位论文作者完全了解直昌太堂有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和 借阅。本人授权直昌太堂可以将学位论文的全部或部分内容编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名( 手写) :舀漱嚼 签字日期:勿岬年仁月乡9 日 导师签名( 手写) :孑汐杉套 答字醐:7 钆堋如日 第1 章引言 1 1 背景介绍 第一章引言 在信息化建设过程中,随着计算机网络和数据库系统的迅速发展,企业信 息技术更新速度加快,为提供更好的性能并满足业务系统的需要,应用系统需要 更换平台或使用功能更强大的系统来替代原有系统。平台的切换或采用新系统可 能导致数据库系统的改变,比如原有系统采用的s q ls e r v e r 作为后台数据库, 当更新或升级为新的应用系统却采用的o r a c l e 作为后台数据库。那么此时原有 的旧系统在使用期间往往存储了大量宝贵的历史数据,其中许多历史数据都是新 系统都要用到的,是必须的;另外,这些历史数据也是进行决策分析的重要依据。 由此必然面临一个数据迁移的问题。 1 2 研究意义 当前应用系统中采用的数据库系统大部分是s q ls e r v e r 和o r a c l e 这两种, 但到目前为止,国内外软件升级几乎都会带来数据迁移问题,国外的大型软件 公司在给用户进行软件升级时,一般用户需要支付额外的费用,否则不为用户 提供历史数据迁移的保障;而国内的软件开发商在升级软件的同时,保障历史 数据的迁移,但前提是用户继续使用该公司的产品,如果用户选择其他的产品, 则会出现由于历史数据的无法迁移而不能继续使用原有数据的现象。基于此, 如果能开发设计出一个系统实现s q ls e r v e r 和o r a c l e 两个数据库系统无障碍相 互数据迁移,则将有效地解决了这一类问题。既节约了额外的费用,又不需要 耗费大量的人力重新建库输入数据,而且用户也有更大地选择余地。 再次,为目前所有异构数据库趋向融合、更加兼容提供了有意义的探索。 1 3 研究内容和预期目标 、本文研究的主要内容如下: 1 对异构数据库间数据迁移的研究 研究异构数据库之间的不同之处,以及重点研究如何在异构数据库间迁移 第1 章引言 数据。广泛、全面分析现有的这些迁移工具的优点、不足之处。 2 、对开发语言和环境的研究 本系统采用了v i s u a ls t d i o n e t 中c 存语言为编程语言,数据库环境采用 o r a c l e 9 i 和s q ls e r v e r 2 0 0 0 。研究c 撑语言编程开发的特点;o r a c l e 数据库和 s q ls e r v e r 数据库间异同,以及最重要的一点,数据访问技术a d o n e t 的 研究。 3 、对本系统的分析、设计与实现 对本系统在可行性研究的基础上进行需求分析,设计出系统数据流图和 数据字典,由此做出总体设计,详细设计,最终采用c 拌代码实现,并测试 通过。由此开发出异构数据库间相互进行数据迁移的系统。 二、预期目标 1 分析并提出现有异构数据库间数据迁移方法、过程以及迁移中可能存在的 问题; 2 分析、设计并实现s q ls e r v e r 与o r a c l e 数据库数据的双向迁移系统; 3 该系统能够完成数据相互迁移率9 0 以上,数据迁移正确率9 8 以上; 4 该系统迁移速度加快,对于迁移大量数据效果明显 1 4 本文组织结构 本文各章的内容安排如下: 第一章引言 简要介绍数据迁移背景和研究意义,以及本文的研究内容和预期 目标,并概述本文组织结构; 第二章异构数据库及数据迁移概述 概要介绍异构数据库和数据迁移的概念,以及数据迁移的一般步骤 第三章迁移技术及方法研究现状 介绍了现有数据库数据迁移的主要工具和基于数据访问技术并程 序实现数据迁移的方式,分析并归纳了各种技术、方法的特点。 第四章基于c 群a d o n e t 实现异构数据库数据迁移 简要介绍c 撑,a d o n e t ,重点分析、设计了s q ls e r v e r 2 0 0 0 数 据库和o r a c l e 9 i 数据库之间数据双向迁移系统,并最终编码实现 第五章测试与结论 测试本迁移系统,并对本系统的功能和性能两方面进行了总结。 2 第2 章异构数据库及数据迁移概述 第二章异构数据库及数据迁移概述 2 1 异构数据库简介 异构数据库【l 】是指各自拥有自己的应用特性、完整性控制和安全性控制 多个数据库,且在多个数据库之间存在着以下一种或多种异构性: 计算机体系结构的异构 分别运行在大型机、小型机、工作站、p c 或嵌入式系统等数据库 基础操作系统的异构 分别运行在不同基础操作系统上,如:u n i x 、w i n d o w sn t 、l i n u x 等 d b m s 本身的异构 可以是同为关系型数据库系统的o r a c l e 、s q ls e r v e r 等,也可以是不 同数据模型的数据库,如关系模式、层次模式、网状模式、面向对象, 函数型数据库等。 由于前面两种类型的数据库的异构性研究意义不大,而且目前我们所使 用的数据库若大多数为桌面型数据库f o x p r o ,a c c e s s ,或大型的数据库如 o r a c l e ,d b 2 ,s q ls e r v e r , s y b a s e 等,所以我们重点是第三种即d b m s 本身的 异构性。 这些数据库产品来自于不同公司研制,它们在物理和逻辑上存在许多差 异,如数据格式、数据精度、数据模型、语义定义等差异。 2 2 数据迁移理论知识概述 数据迁移,又称之为数据移植,是指,从一种数据环境( 源数据库) 中 提取数据,根据需要,迁移或移植到另一种数据环境( 目标数据库) 中。通 俗地说就是将数据从一种数据库中移入另一种数据库中,在实际应用中,往 往并不是简单的数据搬家。 数据迁移一般步骤如下: 一、读取数据库的源数据 数据库需要读取的信息如下:【2 l 1 连接信息:数据库名,服务器名,用户名,密码等,用于连接源数据库 和目的数据库 2 表信息:表名,表属主,表模式,表类型, 3 第2 章异构数据库及数据迁移概述 3 列信息:列名,类型,宽度,精度,标度,是否为空,用于数据转换 中表的创建以及列映射 4 类型信息:类型名,最大列宽度,最大最小标度,前后缀字符,是否 接受空,用于数据转换中表的创建以及列映射 5 键信息:主键名,主键列,外键名,外键列,外键关联列,用于数据 转换中表模式的转换。 在得到了数据库中的各种元数据以后,就可以根据这些元数据,定义不 同数据库间的各种数据类型转换。 二、数据类型转换 对不同数据库系统,每个d b m s 都定义了一套自己的数据类型,其功 能都满足用户的数据处理基本要求,如数值型,字符型,日期型,大对象 类型等,因此数据映射表负责把源数据库的表结构和目标数据库的表结构 数据类型映射成最接近或近乎等价的类型 三、根据类型转换,生成目标数据表结构 根据第二步的类型转换,生成目标数据表结构,即在目标数据库中创建 数据表,该表和源数据表结构近乎等价,该表用于容纳来自于待迁移的数 据。 四、迁移数据 完成前面三个步骤后,那么最后一步,实施数据的迁移,可循环处理, 在源数据表中提取一行数据后,采用s q l 语言的i n s e r t 语句直接插入到近 乎等价结构的目标数据表,完成数据的迁移。 2 3 本章小节 本章概要性阐述了异构数据库的概念,归纳起来数据库的异构性主要体 现在体系结构的异构,操作系统的异构以及d b m s 本身的异构,而本文侧 重于研究第三种即d b m s 本身的异构数据库。 此外,本章还概要性阐述了数据迁移的概念以及数据迁移的一般步骤: 读取数据库的源数据,数据类型转换,根据类型转换,生成目标数据表结 构,迁移数据。 4 第3 章迁移技术及方法研究现状 第三章迁移技术及方法研究现状 数据迁移可以采取不同方式进行,目前,归纳起来大致有三类方法或技术: 采用数据库自带数据迁移工具或第三方工具,基于数据访问技术并采用s q l 编 程实现数据迁移,以及采用手工建库重新输入数据迁移数据。其中,最后一种方 式是在新系统中建库,把原有系统的数据统一重新人工输入到新系统中,很显然 该方法工作量大,效率低下,同时出错率也较高,故而该方法一般不太采用,要 采用也仅仅是作为前面两类方法的有益补充。 本章节主要介绍并详细分析前面两类技术方法来迁移数据,最后,分析这两 类数据迁移方法优缺点后,提出了本文采用的数据迁移技术,并在后面章节采用 该技术编程,并以两个具体数据库为例实现数据迁移。下面将详细介绍并分析这 两大类数据迁移方法及技术。 3 1 数据迂移工具简介及分析 进行数据迁移的迁移工具一般是来自于数据库厂商自己研发,并随数据库 产品一并发布供数据库客户使用。主要的迁移工具有s q ls e r v e rd t s ( 数据转换 服务) 工具,o r a c l em i g r a t i o nw o r k b e n c h ( 迁移工作台) 工具,p o w e r b u i l d e rd a t a p i p e l i n e ( 数据管道) 7 - 具,以及d e l p h id a t a p u m p ( 数据泵) 7 - 具等。接下来对这四种 主要数据迁移工具进行介绍: 一、s q l s e r v e rd t s 工具 m i c r o s o f ts q ls e r v e r 2 0 0 0 数据转换服务( d t s ) 是可用于将完全不同源的 数据析取、转换并合并到单个或多个目的一组图形工具和可编程对象。数据迁移 一般采用该工具的d t s 导入导出向导来完成。d t s 导入导出向导提供了简单的 方法来实现不同数据源之间复制数据、迁移数据。打开s q ls e r v e r 的d t s 导入 导出i m p o r ta n de x p o r td a t a 工具,选择想要移出的数据库作为数据源,选择要 转入数据的数据库作为目的数据库,然后选择要转换的数据表名,并对表中的字 段类型按照不同数据库间的区别进行修改,就可以实现数据转换。 在连接到源和目的数据库之后,选择要导入或导出的数据,并可对要复制的数据 应用各种转换,在大多数情况下,可以自动与源数据一起复制主键和外键约束也 可以复制从s q l 查询中获得的数据。s q l 查询可以包含来自同一数据库或分 布式查询中的多个表的联接。如果不存在任何表,则d t s 导入导出向导自动 ( d 参考s o ls e r v e r 2 0 0 0 联机丛书 d t s 导入导出向导 5 第3 章迁移技术及方法研究现状 创建目的表。 使用d t s 导入导出向导进行数据迁移,可以连接到下列数据源: 大多数的o l ed b 和o d b c 数据源以及用户指定的o l ed b 数据源 文本文件 m i c r o s o f ts q ls e r v e r o r a c l e 和i n f o r m i x 数据库,必须已燃o r a c l e 或i n f o r m i x 客户黼 m i c r o s o f te x c e l 电子表格 m i c r o s o f ta c c e s s 和m i c r o s o f tf o x p r o 数据库 d b a s e 或p a r a d o x 数据库 二、o r a c l em i g r a t i o nw o r k b e n c h 工具 o r a c l em i g r a t i o nw o r k b e n c ht 具是由一套为迁移多种基本数据库类型的插 件框架组成,迁移平台及其插件读源数据库信息然后创建o r a c l e 数据库。迁移 平台使用一个带有在o r a c l e 数据库中存储所有迁移信息的一系列存储表的工作 台仓库,该仓库又由用于描述源数据库的源模式和用于描述o r a c l e 数据库的 o r a c l e 模式构成。迁移平台提取源数据库的信息并且存储在源模式中。使用o r a c l e m i g r a t i o nw o r k b e n c h 迁移数据主要有三个阶段组成: ( 1 ) c a p t u r eo f t h es o u r c ed a t a b a s e ,该步主要是复制在源模式中的源数据库 结构信息; ( 2 ) c r e a t i o no f t h eo r a c l em o d e l ,o r a c l e 模式用于描述o r a c l e 目的数据库的 结构,它根据第( 1 ) 步的源数模式信息来创建; ( 3 ) m i g r a t i o nf r o mt h es o u r c ed a t a b a s et ot h eo r a c l ed a t a b a s e ,在已经记录了 源数据库信息并且创建了o r a c l e 模式后,就可以执行数据的迁移。 根据o r a c l em i g r a t i o nw o r k b e n c h 迁移工具向导按照上述三个阶段带提示 一步一步完成数据库的迁移。 三、p o w e r b u i l d e rd a t ap i p e r l i n e 数据管道工具【3 】 p o w e r b u i l d e r 提供了一个称为数据管道( d a t ap i p e l i n e ) 的工具,使用该工具 可以实现数据库表间的数据移植,可以在单个数据库中迁移,也可以跨数据库甚 至跨数据库管理系统( d b m s ) 迁移。 使用数据管道通常有两种方法: ( 1 ) 作为开发人员的使用工具:在p o w e r b u i l d e r 开发环境中需要迁移数据, 如一个大的表创建小型的测试用表,就可以使用数据管道画板交互式地 实现; ( 2 ) 在应用程序中实现数据迁移功能:若应用程序需要在表间实现数据的转 移,就可以在数据管道画板中建立一个数据管道,保存它,在脚本中实 6 第3 章迁移技术及方法研究现状 现并使用户可以执行它。 在该工具中,要实现数据的迁移,数据管道画板起了非常大的作用,在数据 管道画板中可以完成以下工作: 一在同一个d b m s 中或不同d b m s 间,将一个或多个表中的数据( 及 扩展属性) 移植到某表中; 将整个数据库( 一次移植一个表) 移植到另一个d b m s 中,如有必要 也可以移植数据库的扩展属性系统表; 创建一个与已有表结构相同但没有数据的表; 日常修改的数据上载到公共的数据库中; 当在数据库画板中不允许修改( 如n u l l 值,主键) 时创建一个新表。 在数据管道画板中创建数据管道一般方法如下: ( 1 ) 新建一个n e wd a t ap i p l e l i n e ( 2 ) 在新建的d a t ap i p l e l i n e 对话框中选择s o u r c ec o n n e c t i o n 数据源连接; ( 3 ) 定义要迁移的数据( 根据数据源而定) ; ( 4 ) 显示数据管道定义,根据需要修改管道定义; ( 5 ) 连接到目标数据库; ( 6 ) 执行该数据管道,完成后在目标表中查看移植的结果。 四、d e l p h id a t a p u m p 数据泵 d e l p h i 为了提高数据的共享性和异构数据库的转移,自带了d a t a p u m p ( 数 据泵) 工具,可实现不同的数据库之间的数据的迁移。 利用d e l p h i 开发的应用系统,在配置完o d b c 后可以直接利用d e l p h i 自 带的d a t a p u m p 工具来完成数据转换。d a t a p u m p 工具具有简单易用的特点,通 过分别选择在o d b c 中配置好的数据源名作为s o u r c ea l i a sn a m e 和t a r g e t a l i a sn a m e 。然后选择要转换的数据表名,并对表中的字段类型按照不同数据库 间数据类型进行必要的修改,便可以很轻松地实现不同数据库间数据转换。 d a t a p u m p 是一个带向导的数据库转移应用程序,利用d a t a p u m p 进行数据迁移一 般步骤如下: 根据向导的提示: ( 1 ) 选择源数据库,在已有的数据库别名中选择; ( 2 ) 选择目标数据库; ( 3 ) 选择源数据库中要转移的全部或部分数据表; ( 4 ) 修改目标表信息,根据需要,可以修改表名、字段名和字段信息; ( 5 ) 按下u p s i z e 按钮,数据库中数据的转移工作完成了 五、以上数据迁移工具分析 由于论文篇幅限制,本文仅仅介绍以上四种具有代表意义的数据迁移工具, 7 第3 章迁移技术及方法研究现状 以上四种迁移工具各有长短,现归纳总结如下: 利用迁移工具进行数据迁移,有一个共同的特点,那就是都是可视化图形工 具,有对话框且带向导,使用起来简单方便,几乎都是以下几个步骤,源数据库 连接,目标数据库连接,选择待迁移的数据表,根据需要可更改目标表结构,最 后一步迁移数据。但是使用过后进行分析,我们各得出以下以下优缺点: 使用s q ls e r v e r 的d t s 数据导入导出工具进行数据迁移简单方便,但在 数据类型转换方面,在大数据量迁移方面,以及大型数据对象迁移存在一定问题。 比如在数据转换方面,根据s q ls e r v e rd t s 自身提供的帮助信息数据变换和转 换注意事项我们得知,当以s q ls e r v e r 作为数据源存在很多数据类型转换细节 不能一致的问题,如s q ls e r v e r2 0 0 0 不支持o l ed b 类型d b t y p ed a t e 等 等;还有数据量特别大时迁移,如超过百万行数据迁移,迁移速度很慢,时间过 长甚至不能正常运行,至于大型数据对象迁移仅能包含一个l o n g 类型的大型数 据对象字段。 使用o r a c l em i g r a t i o nw o r k b e n c h 工具为定义o d b cf o rs q ls e r v e r 或a c c e s s 或s y b a s e 等数据源很方便地把表、视图、触发器、存储过程、快照、用户等完 全转到o r a c l e 。对于t e x t ,可以镜像为c l o b 类型,c l o b 类型可以在一个o r a c l e t a b l e 里有多列,i m a g e 可以镜像为b l o b 等。根据集成的数据库类型的不一致可 能出现的界面不一致的情况,但大致的流程是相同的,o r a c l em i g r a t i o nw o r k b e n c h 提供了将异构的数据库迁移到o r a c l e9 i 的最容易实现的方法。但是使用该工具 一般是把其他异构数据库迁移到o r a c l e 数据库比较方便,反之,将o r a c l e 数据 库迁移数据到其他异构数据库却不易做到,且该迁移工具在迁移触发器和存储过 程可能发生迁移错误,有些因为数据类型不一致等原因,迁移到o r a c l e 后要手 工进行一定程度的修改,尽量要做到不影响数据库的使用。 使用p o w e r b u i l d e rd a t ap i p e r l i n e 数据管道工具进行数据迁移同样作为图形 工具具有操作简单方便,能够实现数据类型自动转换,且对于少量结构简单的数 据,不需要编程就可直接完成。但对于大量结构复杂的数据,由于受系统众多因素 的影响,运行起来容易出错,特别是数据量特别大时,可能导致整个管理系统不能 正常运行。 使用d e l p h id a t a p u m p 数据泵进行数据迁移能够比较快速地、直接地完成将 本地数据库向服务器数据库转移,这一方法处理简单,但缺乏灵活性,而且只适 用于使用连接的数据库,一般在转移用户的原始档案资料的时候多采取这种方 法。 最后,这些迁移工具还有一个共同缺点,它们不是独立软件产品,是捆绑式 软件,要使用它们就必须先运行它们的数据库前端程序。 8 第3 章迁移技术及方法研究现状 3 2 基于数据访问技术s q l 编程方式实现数据迁移 当前基于数据访问技术主要有:o d b c 技术,j d b c 技术,o l e d b 技术 等。下面分别介绍如何利用基于数据访问技术并结合s q l 语言编程方式实现数 据迁移。 一、o d b c 技术 4 1 o d b c 技术为应用程序提供了一套c l i ( c a l l - l e v e li n t e r f a c e ,调用层接口) 函 数库和基于d l l ( d y n a m i cl i l l l 【l i b r a r y ,动态链接库) 的运行支持环境。使用 o d b c 开发数据库应用程序时,在应用程序中调用标准的o d b c 函数和s q l 语 句,通过可加载的驱动程序将逻辑结构映射到具体的d b m s 或者应用系统所使 用的系统,即连接其他数据库和存取这些数据库的低层操作由驱动程序驱动各个 数据库完成。 o d b c 的卓越贡献是使应用程序具有良好的互用性和可移植性,并且具备同 时访问多种d b s 的能力,从而克服了传统数据库应用程序的缺陷。对用户来说, o d b c 驱动程序屏蔽了不同d b s 的差异。o d b c 是一个分层体系结构,由纵向 四部分组成,其主要功能如下: ( 1 )o d b c 数据库应用程序:用宿主语言和o d b c 函数编写的应用程序 用于访问数据库; ( 2 )驱动程序管理器:为应用程序加载、调用和卸载d b 驱动程序; ( 3 ) d b 驱动程序:处理o d b c 函数,向数据源提交用户请求执行的s q l 语句; ( 4 )数据源:是各个d b 驱动程序与d b s 之间连接的命名。 目前,使用o d b c 几乎可以将所有平台上的关系型数据库连接起来。 由于来自不同数据源在o d b c 平台上通过处理o d b c 函数和数据转换,会 获得一致数据类型。 基于o d b c 数据访问技术结合s q l 语言编程方式如何实现数据迁移,如下 图所示: 图3 1o d b c 编程方式实现数据迁移 9 第3 章迁移技术及方法研究现状 二、j d b c 技术 4 1 j d b c 是j a v a 数据库连接( j a v ad a t a b a s ec o n n e c t i v i t y ) 的简称,由一组用j a v a 语言编写的类与接口组成,已成为一种供数据库开发者使用的标准a p i ,使用 j d b c 可以很容易地把s q l 语句传递到任何关系数据库中,不必考虑r d b m s 的型号。 j a v a 与j d b c 的结合使程序员可以只写一次数据库应用软件便能在各种数 据库系统上运行。j d b c 的基本功能包括: ( 1 ) 建立与数据库的连接: ( 2 ) 发送s q l 语句; ( 3 ) 处理结果。 基于j d b c 数据访问技术结合s q l 编程实现数据迁移模型如下图所示,以 以o r a c l e 数据库和s q ls e r v e r 数据库数据迁移为例: 图3 2 j d b c 编程方式实现数据迁移 三、o l e d b 技术 o l e d b 是一套通过c o m 接口访问数据的a c t i v e x 接口。它的存在为用户 提供了一种统一的方法来访问所有不同种类的数据源,这是针对o d b c 仅支持 关系数据库的调整;同时o l e d b 可以在不同的数据源中进行转换。利用o l e d b , 客户端的开发人员在进行数据访问时只需把精力集中在很少的一些细节上,而不 必弄懂大量不同数据库的访问协议。o l e d b 仍有不少缺陷:同c o m 的多数结构 一样,o l e d b 的开发人员需要实现很多的接1 2 1 ,过于底层化,难于应用实现 不能被v b 、v b s c r i p t 等高级编程工具访问等。 基于o l e d b 数据访问技术结合s q l 编程实现数据迁移模型类似于o d b c 数据访问技术。 四、基于数据访问技术结合s q l 编程方式实现数据迁移分析 1 0 第3 章迁移技术及方法研究现状 无论采用哪种数据访问技术来访问异构数据库并结合s q l 编程方式实现数 据迁移,主要是编码来实现,一般主要过程如下: 采用某种编程语言如c 抖,j a v a , d e l p h i ,p b 等编写程序主要代码,同时利用某 种数据访问技术如o d b c j d b c o l e d b 等分别访问异构数据库来连接源数据库 和目的数据库,然后用户选定源数据库中待迁移的数据表,此时根据用户的选定, 读取源数据库中指定表的架构信息( 包含表名,表的属性,表属性的名称,数据 类型,键值,是否为空等等) ,然后根据读取来的源表结构信息通过数据类型映 射、转换,生成目的数据库表的结构信息,然后根据这个表结构信息在目的数据 库中创建近似等价的数据表,最后,通过编写程序代码提取源数据表中的数据, 再采用s q l 语句把源数据一行一行地插入到目的数据库表中,循环处理,最终 完成数据的迁移。 根据以上过程分析,我们了解到,基于数据访问技术结合s q l 编程方式实 现数据迁移要求必须精通一门计算机编程语言和一种数据访问技术以及基于待 迁移的异构数据库的熟练掌握,最重要的是需要较强的编程能力和调试技巧,不 如数据库本身自带的图形化迁移工具使用方便简单。 但是,无论是采用图形化迁移工具还是基于数据访问技术结合s q l 编程方 式实现数据迁移,它们在多个数据库之间访问的底层访问技术依然是本章节介绍 的o d b c o l e d b j d b c 等,根据前面的介绍,采用该种数据访问技术在提取源 数据库中数据时程序一直处于数据库连接状态,提取一行数据,迁移一行数据, 反复多次访问源数据库表,造成迁移效率不高,那么,是否存在把待迁移的数据 在连接一次源数据库时一次性全部提取出来,在完成目的数据表数据类型映射转 换后,全部整体迁移,免去反复到源数据表中提取数据的过程,转而直接到内存 缓冲区中提取数据,转换数据,迁移数据,虽然这样,内存消耗过大,但随着计 算机硬件的迅速发展,技术提升,应该影响不大,这样就可以大大提升迁移的速 度和效率。 基于以上迁移技术分析,本文提出采用数据库技术a d o n e t 并结合c 撑程 序设计语言编程并以s q ls e r v e r 和o r a c l e 作为异构数据库样例,实现异构数据 库数据迁移。该技术就是上面一段文中提到的可以一次源数据库连接后,把待迁 移数据表中数据整体提取出来,填充在数据集d a t a s e t 中完成数据的迁移。这样 操作,数据迁移速度大大加快。那么下面的章节,就以此展开,设计并实现该迁 移系统,并终测试比较该迁移系统的效率如何。 第3 章迁移技术及方法研究现状 3 3 本章小节 数据迁移可以采取不同方式进行,目前,归纳起来大致有三类方法或技术: 采用数据库自带数据迁移工具或第三方工具,基于数据访问技术并采用s q l 编 程实现数据迁移,以及采用手工建库重新输入数据迁移数据。手工建库工作量大, 效率低下,同时出错率也较高,故而该方法一般不太采用。 本章首先介绍了主要由数据库厂商自己研发的的迁移工具:s q ls e r v e r d t s ( 数据转换服务) 工具,o r a c l em i g r a t i o nw o r k b e n c h ( 迁移工作台) 工 具,p o w e r b u i l d e rd a t ap i p e l i n e ( 数据管道) 工具,以及d e l p h id a t a p u m p ( 数据泵) 工 具。同时分别介绍了迁移工具进行数据迁移的方法和步骤,重点是详细分析了各 个迁移工具进行数据迁移的特点及不足之处,总的说来,采用这些工具是可视化 图形工具,有对话框且带向导,使用起来简单方便,但它们不是独立软件产品, 是捆绑式软件,要使用它们就必须先运行它们的数据库前端程序,而且对于数据 量特别大时进行迁移,如超过百万行数据迁移,迁移速度比较慢,时间过长甚至 不能正常运行。 其次本章还介绍了基于数据访问技术s q l 编程方式实现数据迁移,当前基 于数据访问技术主要有:o d b c 技术,j d b c 技术,o l e d b 技术等。分别介绍 如何利用基于数据访问技术并结合s q l 语言编程方式实现数据迁移,重点是分析 了采用这些方法、技术进行数据迁移的过程,存在的不足之处,最后总结出以上 工具、技术方法进行迁移数据时程序一直处于数据库连接状态,提取一行数据, 迁移一行数据,反复多次访问源数据库表,造成迁移效率不高,如何加快迁移速 度,本章最后提出采用数据库技术a d o n e t 并结合c 撑程序设计语言编程,该 数据库技术中的d a t a s e t 能够连接一次数据库,整体把待迁移的数据提取到 d a t a s e t ,然后再到d a t a s e t 中提取数据,实现数据的迁移,由于无需反复访问源 数据库,数据迁移速度将得到明显提升。 1 2 第4 章基于c # a d o n e t 实现异构数据库数据迁移 第四章基于c # a d o n e t 实现异构数据库数据迁移 4 1c # 及a d o n e t 简介 4 1 1c # 语言简介【5 】 c 撑语言是微软n e t 平台上的一种程序开发语言,是简单的、现代的、功能强 大的、安全而灵活的程序设计语言,借助于n e t 提供的大量工具和服务,开发 人员能够在n e t 平台上快速建立大量的应用程序。c 群语言具有以下特点: ( 1 ) 语法简洁。通过改进,c 群的语法几乎就只剩下对象的引用和逻辑的控制, 使用起来十分简单; ( 2 ) 面向对象设计。在c f 类型系统中,每种类型都可以看作是一个对象,具有 对象的基本特征:方法、属性、事件、继承( 单继承) 、消息等。整个c 拌的类模 型都是建立在n e t 的虚拟对象系统( v i s u a lo b j e c ts y s t e m ) 的基础上,派生于 o b j e c t 类。 ( 3 ) 与w e b 紧密结合。c 拌与w e b 标准相统一,通过s o a p ,能与h t m l 和x m l 语言建立联系。 ( 4 ) 完善的安全性和错误处理。c 撑可消除软件开发中常见的错误,并提供包括 类型安全在内的完整的安全机制,n e t 平台还提供了垃圾收集器,负责资源释 放与对象撤销时内存的清理工作,这种垃圾收集机制减轻了开发人员对内存的管 理负担。 ( 5 ) 版本控制技术。c 拌内置了版本控制功能,可以保证复杂软件方便的升级与 开发。 ( 6 ) 灵活性和兼容性。c 群在对语法简化的同时,并没有失去语言的灵活性,并 且c 撑遵循n e t 公共语言规范,保证了c 群组件与其他语言组件间的互操作性, 具有良好的兼容性。 一、c 拌与c + + 的比较: c 撑对c + + 进行了多处改进,主要区别如下: ( 1 ) 编译目标:c + + 代码直接编译为本地可执行代码,而c 群默认编译为中间 语言i l 代码,执行时再通过j u s t i n t i m e 将需要的模块临时编译成本地代 码: ( 2 )内存管理:c + + 需要显式地删除动态分配给堆的内存,而c 群不需要这么 做,c j f f 采用垃圾回收机智自动在合适时机回收不再使用的内存; 1 3 第4 章基于c # a d o n e t 实现异构数据库数据迁移 ( 3 ) 指针:c + + 中大量使用指针,而c 拌使用对类实例的引用,如果确实想在 c 撑中使用指针,必须声明该内容是非安全的。一般情况下c 撑没必要使用 ( 4 )字符串处理:c j | j 中,字符串作为一种基本数据类型来对待,比c + + 中对 字符串的处理要简单得多; ( 5 ) 库:c + + 依赖于以继承和模板为基础的标准库,c 撑依赖于n e t 基类; ( 6 )c + + 允许类的多继承,而c 拌只允许类的单继承,而通过接口实现多继承。 二、c 群与j a v a 的比较 从语法上将,c 撑和j a v a 非常相似,只是在细节上有一些差别。实际上,c 撑 和j a v a 的主要差别不是在语言本身,而是在所执行的平台上。 j a v a 程序需要一个运行环境j r e ( j a v ar u n t i m ee n v i r o n m e n t ) 来执行代码,但 j r e 只限于在j a v a 语言中使用。c 撑需要一个运行环境c l r ( c o m m o nl a n g u a g e r u n t i m e ) ,c l r 通过运行虚拟对象系统v o s ( v i r t u a lo b j e c ts y s t e m ) 提供对多种语 言的支持,所有的n e tf r a m e w o r k 都需要在c r l 环境下执行。 j a v a 源代码可以被编译成字节代码的一种中间状态,然后由已提供的虚拟机 来执行这些字节代码,而c l r 没有虚拟机,c 拌代码也被编译成一种中间状态, 成为中间语言i l ,但是i l 代码则被传输到由c l r 管理的执行进程上,然后通过 c l r 的j i t 编译器编译成本地代码。 c 群与j a v a 相比也有很多不同和改进之处。c 稃的文件名不受文件中类的限制, 而在j a v a 中则有此限制。另外,c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国海绵城市建设行业发展趋势与投资前景报告
- 2025-2030非织造复合材料行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030重整装置行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030转基因食品行业市场深度调研及发展趋势与投资战略研究报告
- 2025-2030蟑螂汽车旅馆行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030营养与补品行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030花园粉碎机行业市场现状供需分析及投资评估规划分析研究报告
- 直面卫生管理证书考试试题及答案
- 获取2025年公共卫生执业医师考试的试题及答案
- 邮政高级考试题及答案
- 脾栓塞介入治疗
- 2025年餐饮业考试题及答案
- T-CSHB 0017-2024 生成式人工智能模型训练合规技术规范
- 光伏项目承包商的实施策略与计划
- 消除艾滋病、梅毒和乙肝母婴传播项目工作制度及流程(模板)
- 2025年河南机电职业学院单招职业倾向性测试题库有完整答案
- 2025年全民国家安全教育日主题教育课件
- DBJ51T 108-2018 四川省建筑岩土工程测量标准
- 2025年度汽车行业电子商务平台合作开发合同
- 人教版英语七年级下册知识讲义Unit 1 section A (教师版)
- 摄影拍摄合同毕业季拍摄合同
评论
0/150
提交评论