




已阅读5页,还剩58页未读, 继续免费阅读
(摄影测量与遥感专业论文)信息管理系统中数据导入导出技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国防科学技术大学研究生院学位论文 图目录 图2 10 d b c 体系结构7 图2 2 基于a d 0 的数据转换流程lo 图2 3d t s 数据抽取包的简要结构图j 3 图3 1s q ls e r v e r2 0 0 0 对x m l 支持的完整架构2 3 图4 1 基于o m c e 自动化的数据导出工作流程图3 4 图5 1 数据导出需求3 7 图5 。2 系统功能模块3 7 图5 ,3 项目管理子系统数据库设计图3 8 图5 4x m l 导出工作流程图4 3 图5 5x m l 导入流程图4 4 图5 6f o x p m 导出工作流程图4 6 图5 7f o x p r o 环境下导出项目全部的信息表4 6 图5 8f o x p m 环境下项目定型情况全部属性值4 7 图5 9w o r d 导出工作流程图4 8 图5 1 0 项目导出界面图4 9 图5 1 1 导出方式选择图4 9 图5 1 2w o r d 导出效果图5 0 图5 1 3e x c e l ( 纵向) 导出效果图5 0 图5 1 4e x c e l ( 横向) 导出效果图5 1 图5 1 5f o x p r o 导出界面5 1 图5 16x m l 导出界面5 2 第1 v 页 国防科学技术大,学研究生院学位论文 第一章绪论 1 1 课题背景 信息管理系统是当前信息管理的主要手段和工具,数据库技术是大多数信息 管理系统中的一个重要组成部分。数据库技术的不断进步给各行各业的信息管理 工作带来了极大的方便,但在工作效率提高的同时,随着技术的发展,多种不同 数据库之间数据转换的问题也越来越突出。很多单位在长时间的日常工作过程中 积累了大量数据,并为存储和管理这些数据不断投资。然而由于实施数据管理系 统的阶段性、技术性以及其它经济和人为因素的影响,以至即使在一个单独业务 部门,采用的数据管理系统也不大相同,从简单的文件数据库到复杂的网络数据 库,它们构成了该部门的异构数据源。如何商效地共享这些异构数据源的数据, 已经成为信息系统建设和集成所面临的一个重要问题。而数据库导入导出技术的 出现为异构数据的共享,提供了一种有效的解决方案。 数据的导入、导出是指在不同应用之间按普通格式读写数据,从而实现数据 交换的过程。随着数据导入导出技术的发展,它主要可以应用于以下几个方面: 一在分布式环境下,通过数据库导入导出技术,根据一定的规贝l j ,实现源 数据库的数据直接向目标数据库的导出,从而实现数据的转换; _在异构数据源间建立中间格式文件或中间库。通过导出,把源数据库的 数据导出到中间格式文件或中间库,再通过导入,把中间格式或中间库 中的数据导入到目标数据库中,从而实现不同数据库间数据的交换; - 根据特定的需求,可以把数据库中的数据导出到特定格式的文件,例如 0 缅c e 系列软件中,从而方便用户浏览数据库中存储的业务数据; 一通过导入导出技术,可以实现整个数据库数据或部分数据的逻辑备份和 恢复。 我们承担了某部项目管理信息系统的研发,此部门内部采用局域网互连,上 下级部门服务器物理隔绝且系统数据库异构,主要公文处理在o m c e 办公环境内 完成,要实现部门内部以及部门间的数据共享,简化公文处理工作,都需要一个 第1 页 国防科学技术大学研究生院学位论文 强大的数据库导入导出系统的支持。 本文对异构数据源之间、数据源与多种应用软件之间的多种数据导入导出技 术进行了分析和研究,并根据项目的需求,设计和实现了一个数据库导入导出系 统,系统已经成功应用于某部的项目管理信息系统中。 1 2 课题的研究现状 数据库技术从6 0 年代中期产生到今天,短短3 0 年问己从第一代的网状、层 次数据库,第二代的关系数据库系统( r d b m s ) ,发展到第三代以面向对象模型为 主要特征的数据库系统。其发展速度之快、应用范围之广是很多技术所远不及的。 数据模型是数据库系统的核心和基础。因此,数据库发展阶段的划分应该以 数据模型的进展为主要依据和标志。层次数据库系统和网状数据库系统的数据模 型都是格式化模型,可称为第一代。层次数据库的数据模型用图表示,对应于有 根定向有序树,而网状模型对应的是有向图。对这两种数据库的数据查询和数据 操纵语言是一次一个记录的导航式的过程化语言,其优点是存取效率高,但编程 繁琐,程序的可移植性较差,要求用户既要掌握高级语言又要掌握数据库的逻辑 结构和物理结构。 1 9 7 0 年i b m 公司s a nj o s e 研究室的研究员e f i c o d d 发表了题为“大型共享数 据库数据的关系模型”论文,提出了数据库的关系模型,为关系数据库技术奠定 了理论基础。关系数据库系统具有形式基础好、数据独立性强、数据库语言非过 程化等特色,标志着数据库技术发展到了第二代。7 0 年代是关系数据库理论研究 和原型开发的时代,而到了8 0 年代,几乎所有新开发的系统均是关系型的。这些 商用数据库系统的运行,特别是微机r d b m s 的使用,使数据库技术日益广泛地 应用到企业管理、情报检索、辅助决策等各个方面,成为实现和优化信息系统的 基本技术。从8 0 年代以来,数据库技术在商业领域的巨大成功刺激了其他领域对 数据库技术需求的迅速增长。这些新的领域为数据库应用开辟了新的天地,并在 应用中提出一些新的数据管理的需求,直接推动了数据库技术的研究与发展,尤 其是面向对象数据库系统( o b j e c t0 r i e n t c dd 北l b a s es y s t e m 简称o o d b s ) 的研究和 发展更为迅速。第三代数据库系统应该是以支持面向对象数据模型为主要特征的 第2 页 国防科学技术大。学研究生院学位论文 数据库系统,同时必须保持和继承第二代数据库系统的技术,必须对其它系统开 放。数据库技术与其它学科的内容相结合,也是新一代数据库技术的一个显著特 征。 随着数据库技术的不断进步和广泛应用,用户的实际工作中不得不面对大量 的异构数据源,如何实现异构数据的集成,实现异构数据的导入导出、相互转换 并对数据合理利用,已成为一个现实的问题。异构数据库的异构性主要体现在以 下几个方面: 计算机体系结构的异构:各数据库可以分别运行在大型机、小型机、工 作站、p c 或嵌入式系统中。 一基础操作系统的异构:各个数据库系统的基础操作系统可以是u n i ) ( 、 w i n d o w sn t 、l i i l u x 等。 - d b m s 本身的异构:可以是同为关系型数据库系统的0 r a c l e 、s q l s e r v e r 等,也可以是不同数据模型的数据库,如关系、模式、层次、网 络、面向对象,函数型数据库共同组成一个异构数据库系统。 早期的数据库产品曾经采用转换器( g a t e w a y ) 实现数据的导入导出,但只局 限于连接两个系统。7 0 年代中期,针对多数据库的集成问题,m c l e o d 等人提出了 联邦式数据库系统的概念,但由于缺乏必要的标准,系统只能在一定的限定条件 下实现,难以实现各种数据源的灵活转换。随着数据库技术的进步,对数据的导 入导出功能进一步的强化,目前的几种主流数据库如o r a c l e 、s q ls e 船、 p o w e r b 血1 d e r 等都集成了各自的数据导入导出工具,功能各具特色,但也都有应用 的局限性。另外,数据库网关作为不同数据库之间的桥梁,是目前实现多重d b m s 系统的解决方案之一,它如同个“编译器”一样,连接多个异构数据库并针对 各种指令对数据库数据进行翻译和转换,使用数据库网关时,用户不必知道要查 询或修改的数据的位置、一条查询可以获得多个异构数据源的数据、全部用户可 以用标准t s q l 语言或工具访问各种数据、可以定义全局存储过程,访问不同数 据源的数据、支持异构数据之间的链接操作。然而实现强大的功能的同时,也带 来了庞大的系统组织构成、相对艰巨的开发难度和昂贵的维护成本,一定程度上 限制了数据库网关技术的适用范围。 第3 页 国防科学技术大,学研究生院学位论文 x m l ( e x t c n i s i b l em a r k u pl a n g u a g c 可扩展标记语言) 自闯世以来,以其易于 扩展、结构性强、交互性好、语义性强、易于处理、与平台无关等等优点迅速成 为业界的宠儿。在数据库数据导入导出技术领域,其长处也得到了长足的发展, 得到了各大数据库厂商的大力支持。可以预见在未来一段时期,) 函几技术将成为 数据库导入导出技术领域的主要研究对象。 1 3 本课题的主要工作及成果 本文所进行的研究工作主要以我们目前所承担的“层次化项目信息管理系统” 中数据导入导出系统的开发为背景。该课题的目的在于研究不同条件下数据导入 导出系统所涉及的关键技术,实现异构数据源之间、数据库与多种办公软件之间 数据的导入导出功能。本文首先研究对比了几种基于不同数据库访问机制下的数 据转换技术,同时介绍和分析了几个主流数据库集成的数据转换工具的数据导入 导出功能,然后研究了基于x m l 和o 街c e 自动化的数据库导入导出技术,在此基 础上,根据项目的需求,设计和实现了一个数据库导入导出系统。论文的主要研 究工作包括: 】基于不同数据库访问机制下的数据转换技术研究: 数据库访问技术是实现数据库导入导出的基础,一定程度上也决定着系统的 工作效率和实现难度。本文就o d b c 、o l ed b 、a d o 、a d o n e t 等四种数据库 访问技术进行了讨论,并比较了其各自的特点和优势。 2 主流数据转换工具的对比分析和数据类型转换的通用方法研究: 目前流行的主流数据库和数据库开发软件自带的数据转换工具依托强大的技 术优势和良好的应用环境,在一定范围和应用条件下具有比较强大的功能。本文 结合数据转换的相关技术理论,对几种工具的数据导入导出功能进行了对比分析, 总结了其各自的优劣,为本文中的数据导入导出系统设计和实现提供了良好借鉴。 对数据类型转换的通用方法进行了研究讨论,并对数据转换中可能出现的冲突和 可对应解决方法作了研究总结。 3 基于x m l 数据导入导出技术的研究: 首先讨论了x m l 的技术特点,和基于l 的数据转换技术的研究现状,研 - _ _ - _ _ _ _ _ _ _ _ _ _ _ - _ - _ - _ _ _ - _ - - _ _ _ _ _ _ - _ _ _ _ - _ _ _ - _ _ _ - _ - - _ _ _ _ _ _ _ _ _ _ _ - _ _ _ - _ - _ - _ - _ _ - _ _ _ _ _ _ _ 一一 第4 页 国防科学技术大学研究生院学位论文 基于前述章节所讨论的技术,详细阐述了项目管理导入导出系统的实现。 第五章本章对论文完成的工作进行总结,并对未来的研究工作进行了展望。 第6 页 国防科学技术大学研究生院学位论文 第二章异构数据库数据转换技术研究 数据库访问是数据导入导出的首要步骤,采用不同的数据库访问技术会带来 不同的设计难度和不同运行效率。针对异构数据库间的数据转换,各主流数据库 也在各自的产品中集成了自己的数据转换工具,本章主要介绍四种基于不同数据 库访问方式下的异构数据转换方法以及三种主流数据库自带的数据转换工具,并 对其优劣进行了比较。 2 f 基于不同数据库访问方式下的数据转换技术分析 2 1 1 基于0 d 的数据转换技术 开放数据库连接( o p e nd a t a b a s ec o m l e c t i v i 够,o d b c ) 是微软提出的标准应 用程序接口。它允许一个应用程序访问o d b c 支持的不同数据源。应用程序使用 s q l 作为标准的数据访问语言。0 d b c 为w 访d o 、v s 开发者提供了s q l 数据库访问 函数调用,屏蔽了底层数据库系统的不同,从而简化了对数据库的访问。 o d b c 为异构数据库的访问提供了统一的接口,它允许应用程序以s q l 语言 为数据存取标准,来存取不同的d b m s 管理的数据。o d b c 包括应用程序 ( a p p l i c a t i o n ) 、驱动程序管理器( d r i v e rm a i l a g e r ) 、驱动程序( d r i v e r ) 、数据源 ( d 砌s o u r c e ) 4 个组件,其体系结构如图2 1 所示。3 : 图2 1o d b c 体系结构 第7 页 国防科学技术大,学研究生院学位论文 通过o d b c 进行数据转换有以下步骤:o d b c 分配环境句柄,执行s q l 语句、 检索结果与服务器断开。具体过程如下: 1 初始化( 包括分配环境、分配连接句柄、与服务器连接、分配语句句柄) , 连接源数据源与目的数据源; 2 通过相关的o d b ca p i 读取源数据源的元数据信息: 3 驱动程序通过函数s q l o e t 聊e i n f o 返回数据源数据类型与o d b cs q l 类型之间的映射关系,从中找出源数据源与目的数据源类型的对应关系,生成目 标表的结构信息: 4 在目标数据库上建立目标表结构; 5 逐行读取源表记录,调用i n s c n 语句,写入目的数据库的表中,直到读取 虽后一条记录; 6 终止( 释放语句句柄,与服务器断开,释放连接句柄,释放环境) 。 2 1 2 基于0 l ed b 的数据转换技术 o l ed b 是用于访问数据的系统级编程接口,是a d o 的基础技术,而且是 a d o n e t 的数据源。o l ed b 用于访问所有类型的数据的开放式标准,这些数据 既包括关系数据又包括非关系数据:大型机l s a m v s a 4 和分层数据库,电子邮 件和文件系统存储区,文本、图形和地理数据以及自定义的业务对象。0 l e d b 提 供对数据致的、高性能的访问,并支持各种开发需要,包括使用与关系数据库 和其他存储区中数据的活连接来创建前端数据库客户端和中间层业务对象。1 。 o l ed b 建立了数据访问的标准接口,并把所有的数据源经过抽象形成行集 ( r o ws e t ) 的感念。o l ed b 定义了一组c 0 m 接口,这组接口封装了各种数据源 的访问操作,为数据使用方和数据提供方建立了标准。o l ed b 还提供了一组标准 的服务组件,用于提供查询、缓存、数据更新、事务处理等操作。因此,数据提 供方只需实现一些简单的数据操作,在使用方就可以获得全部的数据控制能力。 同时,o l ed b 是一套通过c o m 接口访问数据的a c t i v e x 接口。这个0 l ed b 接口相当通用,足以提供一种访问数据的统一手段,而不管存储数据所使用的方 法如何。o l ed b 模型包括以下c o m 对象: 1 数据源( d a t as o u r c e ) :对应一个数据提供者,负责管理用户权限、建立 第8 页 国防科学技术大,学研究生院学位论文 与数据源的连接等原始操作。 2 会话( s e s s i o n ) :在数据源连接的基础上建立会话对象,提供了事务控制 机制。 3 命令( c o n l i n a n d ) :数据使用者利用命令对象执行各种数据操作,如查询、 修改等。 4 行集( r o ws e t ) 提供数据的抽象表示,是应用程序的主要操作对象。 o l ed b 数据转换过程包括以下几个步骤:连接源数据源与目的数据源,建立 会话对象:建立源数据库与目标数据源的表映射关系:执行s q l 语句。完成指定 操作,将数据结果抽象为行集;根据映射关系向目标数据库写入数据,断开连接, 完成导入。 2 1 3 基于a 的数据转换技术 a d o ( a c t i v e xd a t ao b j e c t ,动态数据对象) 是一种用于开发o l ed b 数据 源应用程序的a p i ,它提供了更高级并容易理解的服务器o l ed b 数据库机制, 在0 l ed b 提供者的支持下,a d o 还可以用来访问已有的o d b c 数据源。a d o 内存覆盖低,线程安全,支持分布式事务和基于w 曲的远程数据访问。与一般的 数据库接口相比,a d o 可更好的用于网络环境,通过优化技术,尽可能的降低网 络流量。作为微软u d a 策略的一部分,a d o 成为基于跨平台的、数据源异构的 数据访问标准模型。 a d o 对象模型定义了一组可编程的自动化对象,可以处理各种o l ed b 支持 的数据源。在a d o 模型中,主体对象只有3 个:c o 蛐e c t i o n 、c o m m a n d 和i 沁c o r d s e t , 通过a d o 进行数据转换时使用c o n n e c t i o n 对象建立与数据源的连接,然后用 c o m m a n d 对象给出对数据库操作的命令( 例如查询或者更新数据) ,而r e c d r d s c t 用于对结果集数据进行维护或者测览等操作,基于a d 0 的数据转换的具体流程如 图2 2 所示: 第9 页 国防科学技术大。学研究生院学位论文 连接源数据库 与目的数据库 建立列映射 构建查询器 执行s q l 语句 进行数据库操作 数据读入 a d o d a t a s e t 图2 2 基于a d o 的数据转换流程 2 1 4 基于a d 0 眶t 的数据转换技术 a d o n e t 是重要的应用程序级别接口,用于在n e t 平台中提供数据访问服 务。可使用a d o ,n e t 访问那些使用新的n e t 数据提供程序的数据源,也可访问 那些使用0 l ed b 。n e t 数据提供程序的现有o l ed b 数据。与a d 0 相比, a d o 。n e t 最重要概念之一是d a t a s e t ,d a t a s e t 是不依赖于数据库的独立数据集合。 a d o n e t 访问数据库的步骤就相应地改变为“1 : 1 创建一个数据库链接; 2 根据查询结果得到一个数据集; 3 关闭数据库链路: 4 在d a t a s e t 上进行所需要的操作。 d a t a s e t 在内部是用x m l 来描述数据的。由于x m l 是一种平台无关、语言无 关的数据描述语言,而且可以描述复杂数据关系的数据,比如父子关系的数据, 所以d a t a s e t 实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。 a d o n e t 访问数据库中最基本、最常用的两个对象是a d o c o l l l l e c t i o n 和 a d o d a t a s e t c o m m a n d 。a d o c o n n e c t i o n 对应着a d 0 的a d o d b c o n n e c t i o n 对象, 负责维护到数据库的链路。a d o d a t a s e t c o m m a i l d 则专门负责创建我们前面提到的 第1 0 页 国防科学技术大,学研究生院学位论文 d a t a s e t 对象。a d o n e t 的数据转换流程与a d o 大致相同,只是内置了对订l 的支持,x m l 是d 抵e t 的本地串行化格式,为数据移动提供了更好的媒介3 。 2 1 5 几种转换技术的比较 通过上述研究我们可以看出,随着数据库访问技术的不断进步,对底层的技 术封装愈加完善,系统开发的工作强度和维护的难度不断降低,对数据库类型的 支持也愈加广泛。尤其是内置了订l 技术的a d o n e t ,依托n e t 框架的强大技 术支持,将数据转换效率提升到了一个新的高度。当然其它几种数据库访问技术 各具自己的特点,需根据具体的应用进行选择。表2 1 对上述4 种数据转换技术做 了简要的对比: 表2 1 几种数据转换技术的简单比较 编程数据库支持转换效率维护 o d b c 复杂仅对关系数据库支持较好较高复杂 o l e d b 较复杂支持广泛的数据源对特定驱动程序较高较复杂 a d 0 简单可访问广泛的数据源离简单 a d o n e t简单可访问广泛的数据源很高简单 2 2 主流数据转换工具概述 许多数据库服务器和客户端的开发工具中都提供了将数据由一个数据库导出 到其他数据库的工具。这些工具提供了丰富的功能,有效解决了异构数据库间数 据导入导出的问题。但这些工具有一个共同的缺点,那就是数据转换的中间数据 不可知,得到的中间数据只对原数据库的工具有用,无法共享或用于其他用途, 也不能直接用于多个数据库,或被应用程序开发人员使用。这样就限制了异构数 据库间数据的转换,也限制了应用程序的开发”1 。 下面介绍3 种主流数据转换工具及其各自的优缺点, 2 2 1s o l s e r v e r 的d t s 概述 s o l s e r v e r2 0 0 0 的数据转换服务通过提供一组工具,将来自完全不同源的 第l l 页 国防科学技术大学研究生院学位论文 数据析取、转换和合并到d t s 连通性所支持的单个或多个目的地,以满足新系统 开发和信息集成的商业需求。通过使用d t s 工具可以图形化地生成d t s 包,从 而创建适合特殊商业需要的自定义数据互操作解决方案“1 。 d t s 包是一个有组织的连接d t s 任务、d t s 转换和工作流约束的集合;定 义了数据转换的过程。利用微软数据转换服务d t s ,可以完成以下工作: ( a ) 数据的导入和导出 导入和导出数据是在不同应用之间按普通格式读写数据从而实现数据交换的 过程。例如,d t s 可以将一个a s c i i 格式的文本文件或f o x p r o 数据库中读出的 数据导入到s q ls e r v e r 数据库中。同样用户也可以将数据从s q ls e r v 职数 据库中导出并输入到另一个o l e d b 数据源中。 ( b ) 转换数据格式 s q ls e r v e r 允许用户将数据在实现传输之前进行数据格式的转换。例如, 用户可以根据源数据库中的一列或多列数据进行重新统计计算,甚至可以将一列 数据分割成多列存储在目的数据源的不同列上。通过转换数据格式,用户可以方 便地实施复杂的数据检验,进行数据的重新组合,如排序、分组等,还可以提高 导入、导出数据的效率。 ( c ) 传输数据库对象 在不同的数据源之间( 如f o ) 【p r o 和s q l s e r 、,e r 之间) ,d t s 提供的功能只 能移动表和表中的数据。但如果在s q ls e r v e r 数据库之间进行传输,则可以方 便地实现索引、视图、登录账户、存储过程、触发器、规则、约束等数据库对象 间的传递。 d t s 的优势在于:功能全面、操作容易,支持多种不同数据库系统之间的互 操作,对于提取出的表中的数据,可以进行多种条件的筛选,并且可以用多种灵 活的方法实现,他还可以支持从文本文件导入数据库或将数据库数据导入到文本 文件,这里的文本文件必须符合s q ls e n r e r 预定义的几种格式。d t s 的缺点在于 数据转换是基于源和目标之间的,每次转换都需要重新指定一次,即使任务是将 某个源中的数据导入到多个目标。同时,转换中生成的中间文件格式不可知,只 对s q ls e r v c r 有意义,这样其它的应用就不能按需执行操作或共享数据了。 第1 2 页 国防科学技术大学研究生院学位论文 3 创建与选中的表结构相同的表,但没有数据; 4 将发生变化的本地数据上载到一个公用的数据库中; 5 当目标表中的有些设置不允许( 例如是否可以有n u l l 值) 时,可以生成 一个新表。 d a t a p i p e l i n e 也可以支持不同数据库之间的数据转换,使用比较容易。相对于 上述两种工具,功能相对要简单一些。 2 2 4 三种数据转换工具的特点比较 应该说这三种数据转换工具都具有自己的特点和优势,也都有着很广泛的用 户基础,具体选择使用要根据用户使用的数据库类型、数据转换量以及面向用户 层次等多方面因素决定。表2 2 简要的对三种数据转换工具的一些特点做了比较: 表2 2 三种数据转换工具的特点比较 功能操作数据库支持效率 d t s 强简单支持多种数据库较低 s q l l o a d e r 较强较复杂目标数据库仅支持0 r a c l e高 d a t ap i p e l i n e较弱简单支持多种数据库高 2 3 异构数据类型转换技术研究 对不同的数据库系统,每个d b m s 都定义了一套自己的数据类型,随着数据 库技术的不断发展和众多新需求的提出,数据类型的种类也不断增加,在各自的 领域里,其功能都能满足数据处理的基本要求。各个异构数据源中有很多数据类 型,由于自身定义和扩充之间的区别,给系统间数据转换带来了很多困难。比如 大多数主要数据库都支持的大型二进制数值的s q l 数据类型,o r a c 】e 里的数据类 型为l o n gg - 州,s y b a s e 里为i m a g e ,d b 2 就变成了l o n g r c h a rf o rb i t d a t a 。而v a r c n r 在o r a c i e 、s q ls e r v e r 、m y s q l 中都存在,但对其的定 义却又不尽相同。这就需要我们在数据导入导出时对数据类型进行转换。 异构数据源的数据转换工作中,要对两个数据库不同的字段类型进行相应的 转换,数据类型转换我们一般通过以下两种方法实现。: 1 设计类型映射表: 第1 5 页 国防科学技术大,学研究生院学位论文 为了实现异构数据的相互转换,我们可以通过设计多个相应的双向数据转换 程序来解决不同的数据类型匹配问题。但是这种方法的缺点在于每当增加一个数 据库系统时,相应要解决该数据库系统与已存在的多个异构库的数据类型匹配问 题,这样就会增加多个对应转换程序。为了实现程序的扩展性,可以通过设计一 个通用的数据类型映射表来解决数据类型转换问题。采用这种方式,把各个异构 数据源的数据类型转换关系在专门的表结构中进行存储。通过对不同数据库系统 之间的数据类型进行详细而深入的分析,找出不同数据库系统不同版本的各个不 同类型之问缺省的类型对应关系及可能存在的对应关系,将这些数据预先存入类 型映射表中,形成一个固定的转换参照标准。将不同数据库系统数据类型的对应 关系和相应的数据转换处理程序分离开,使数据转换程序相对独立。 2 。利用o d b c s o l 类型: 存储在数据源中的数据都有一个数据类型,称为数据源数据类型或s q l 数据 类型。s q l 数据类型是按照s q l 9 2 标准由每一个d b m s 定义,可以是某个数据 源特有的。驱动程序在o d b cs o l 语法及驱动程序数据类型中也定义了一套数据 类型称为o d b cs q l 数据类型( 以s q l 前缀开头的数据类型) 。每个驱动程序负 责映射特定数据来源的s q l 数据类型到o d b cs q l 数据类型标识符。因此,不同 的数据源在进行数据转换的过程中可以通过o d b cs q l 数据类型标识符作为基准 来得到数据类型的缺省映射关系。驱动程序通过函数s q l g e t t y p e l n f 0 返回数据源 的s q l 数据类型和o d b cs q l 数据类型的映射关系,在函数s q l c 0 1 a 删b u t c s , s q l d e s c 曲e c o l 和s q l d e s c 抽e p a r i n 中,驱动程序还用o d b cs q l 数据类型来描 述列和参数的数据类型。 2 4 数据转换中的冲突处理技术分析 数据转换过程中,要想实现严格的等价转换是比较困难的。必须要确定两种 模型中所存在的各种语法和语义上的冲突,这些冲突可能包括: 命名冲突:源数据源的标识符可能是目的数据源中的保留字。针对这种错误, 应先检查数据源中的保留字,建立保留字集合,对于保留字中的命名冲突,要根 据需要重新命名。 第1 6 页 国防科学技术大学研究生院学位论文 格式冲突:同一种数据类型可能有不同的标识方法和语义差异。针对这种错 误,一方面可以根据o d b cs q l 类型从数据源的驱动程序中取出相对应的数据源 的数据类型后,对一些特定的类型进行特殊的处理。对于字符型数据中含有” 字符的情况,在数据转换过程中需通过转义符作特殊处理,否则会把它误当作字 符串分隔符。另一方面也可以通过建立数据类型跌射表来解决问题。 结构冲突:如果两种d b m s 之间的数据定义模型不同,如为关系模型和层次 模型,则需要重新定义实体属性和联系,以防止属性或联系信息的丢失。 类型冲突:不同数据库的同一种数据类型存在精度之间的差异。此时应在类 型转换中将o d b cs q l 类型和精度结合起来决定源数据类型和目标数据类型的映 射关系,找出目的数据源中与源数据源类型的精度最匹配的数据类型作为缺省的 映射关系。类型映射表的建立过程中,也应该充分的考虑类似问题。 其它冲突:不同数据库的大对象类型存在不同的约束,而且存在一些特殊类 型。如s o ls e r v e r 中一个表中有多于一个t e x t 或i m a g e 的字段时,出现错 误。在进行转换时需要做出选择,或者把t e x t 镜像为v a r c h a r 2 ( 4 0 0 0 ) ,或 者镜像为l o n g 类型。日期型数据最好先转换成字符型,然后根据不同的目标数 据源分别作不同的处理,例如在f o ,r d 中使用c t o d 函数将日期格式的字符串 转换成日期。 对于数据导入导出中,如何保持主外键约束、字段的非空设定等约束关系的 问题,我们按照两方面进行讨论:对于未知模式的目的数据库,应首先对源数据 库的定义和结构进行系统的分析和学习,按照目前的各种约束关系,有针对性地 设计目的数据库的结构,从而避免信息损失;对于已知模式的目的数据库,如目 的数据库模式与源数据库相同或相近,就可以正常实现约束的导出,如模式不同, 则需要对目的数据库的模式进行分析,按照目的数据库的模式重新建立导出数据 的约束关系。同时,数据库数据导入导出中对单表的导出应该有一定的限制和要 求。通常情况下,如果用户只是为了浏览和查看数据库中的数据信息,那么单表 导出的方式并不会妨碍数据库的正常使用,但如果对单表导出的数据进行编辑、 储存等其它操作,则有可能因为约束关系的破坏使得数据库的完整性和一致性受 损。导出应尽可能的以数据库整体导出的方式避免此类错误的发生,在特殊情况 第1 7 页 国防科学技术大学研究生院学位论文 x m l 最大的优点是它对数据描述和数据传送能力,因此具备很强的开放性 ”1 。x m l 可看作是一种半结构化的数据模型,可以很容易地将x m l 的文档描述 与关系数据库中的要素一一对应起来,实施精确地查询与模型抽取。) a l 可作为 一种数据转换格式,其格式是可编辑,易解析,并且可以表示为任何类型的结构 或半结构化信息”。x m l 和数据库之间是互补的关系,在不同的场合有不同的优 势。数据库是数据存储的地方,与平台相关,而l 更适合于动态的数据传输 和转换,与平台无关”。 实现异构数据库之间数据转换的一种有效方法是采用一种业界统一的数据转 换格式。) ( ! 订l 因其具有上述优势,便于表达各种类型的数据,可作为异构数据库 之间的数据转换“中间件”,来解决数据的统一接口问题,从而便于实现异构数据 库之问的数据转换。 数据交换在电子商务领域发展的比较成熟。现在国际上己经有很多机构提出 了基于x m l 的电子商务架构标准,比较成功的如o p e nb u y i n go nt 1 1 ei n t e m e t ( o b i ) 、e c o 、c o r 姗e r c e x m l ( c x m l ) 、b i z l 砒k 、e l e c t m n i c b u s i n e s s x m l ( e b ) m l ) 以及u n i v e r s a ld e s c r i 州叽d i s c o v e r y 柚di m e g r a t i o n ( u d d i ) 等等,这些标准在实 现方式与应用能力上都有各自特点。从通信协议上,所有构架底层通信都基于超 文本传输协议( h t t p ) 。从消息格式上,o b i 采用了e d i ( e l e c 们n j cd a _ t ai n t e r c h a n g e ) 消息格式,但其新版本会支持x m l ,其余架构都采用了x m l 消息,基于l 的消息格式都可以分为消息头与消息体,任何部分都可以分为多个部分,均编码 为m i m e ( m u l t i p u r p o s ei n t e m e tm a i le x t e n s i o n ) 消息。从体系结构上,b i z 叫k 采 用的是一种集中式的结构,通过个中央w 曲门户网站,提供诸如s c h e m a 验证、 存储管理等功能;e c o 采用了一种层次的体系结构,分别实现交互、互操作、查询、 信息获取等功能,而c x m l 则没有一个清晰的体系结构,只有管理协议和数据格式 规范。在国内,中科院软件研究所的电子商务研究中心提出了c n ) ( m l 语言。 c n l ”1 的目标是为企业提供单一、简单和一致的方式使用帆消息格式进行电 子商务处理,并且能为企业提供应用的集成。而在电子政务领域,国际上还没有 通用的基于x m l 的电子政务标准发布,国内也没有统一的用于政府部门的数据交 换标准。 第2 0 页 国防科学技术大学研究生院学位论文 目前,绝大部分数据仍存储于关系数据库,利用x m l 作为数据交换格式的应 用程序的关键就是要实现关系数据库和l 文档之间的数据转换。这可归结为四 个问题“: ( 1 ) 将x m l 文档加载到已知模式的关系表中 ( 2 ) 利用数据库中抽取的数据生成已知模式的) ( 】l 文档 ( 3 ) 从x m l 模式产生关系模式用于加载l 文档 ( 4 ) 从关系模式产生x m l 模式用于抽取关系数据 前两者属于模式匹配( s c h e m am a t c l l i n g ) 问题。后两者属于模式转换( s c h e m a c o n v e r s i o n ) 问题。为解决这些问题,许多中间件产品都提供了在关系数据库与 x m l 文档之i 白j 转换数据的方法,如a s p 2 x m l 、d b 2 ) a l 等等。各种主流的数据 库产品也集成了这些中间件或提供了关系数据格式与l 数据格式的转换工具, 如s q ls e n ,e r2 0 0 0 、o r a c l e8 i 9 i 、d b 2 、s y b 嬲e 等都增加了对x m l 的支持。但它 们大都功能有限。比如,o r a c l e8 i 9 i 的) 【1 ls q lu t i l 时的适用性不强,其原因有 映射是硬编码的( b a r d c o d e d ) ,不支持对x m l 文档中属性的处理,要求l 元 素名与数据库中字段名一致,并且不存储有关x m l 文档中子元素的顺序信息,因 而很难重建x m l 文档等。这使得人们不得不研究一些更加通用的算法。 在关系模式与“l 模式的转换方面,研究“l 模式向关系模式的转换算法 居多,其中以k o s s m 锄等人的文献“中的算法、d c u t s c h 等人的s t o r e d “, s h a i l m u g a s u n d a a m 等人的内联( 瑚i n g ) 算法“、gk a p p e l 等提出的x - r a y 算法“、 d l e e 等提出的c p i 算法“7 ”1 为代表。它们大都使用d t d 作为x m l 文档类型说 明语言。然而,d t d 缺乏对l 文档的内容及其语义的约束机制,不支持名域, 只提供了非常有限的几种数据类型,不能表达元素中字符数据的数据类型,无法 将两个有着完全相同内容的元素联系起来。由于d t d 存在许多不足,w 3 c 推荐 x m ls c h e m a 作为定义x m l 模式说明语言。x m ls c h e m a m o m l l 从数据结构和数 据类型两方面更严格地约束了相应的x m l 文档,其丰富的原始数据类型( p r i m i t i v e d a t a t y 昨) 和衍生数据类型( d e r i v c dd a t a t y p e ) 以及对元素、属性、数据类型定义 的继承的支持提供了强语义验证能力。 x m l 是数据交换的标准,数据库是数据存储和管理的有效工具,应用中常常 第2 1 页 国防科学技术大学研究生院学位论文 叫从表 叫主表 叫映射规则 具体的算法如下: 1 从主表开始,打开一个结果集,逐行处理元组; 2 如表名匹配主表中的t b n 锄e ,则按照p a t l l 生成各节点,最后的节点名 为p a t h 中的最后一段; 3 处理该行中的每个字段,按照它们的映射规则,为每个字段在p a t l l 内创 建节点( 元素或属性) ,并添加字段值。 4 处理该表的从表,按照该元组的主键( 或外键) 值打开从表,按照p a t l l 生成各节点: 5 处理从表的每个字段,方法与主表相似; 6 生成x m ls c h e m a ,完成匹配。 这种方法如果使用s a x 则效率不高,因为节点不一定是按顺序生成的,而且 如果用s a x 则需要同时打开多个表的结果集,然后平行处理。对于这种可能需要 在任意位置插入节点的情况,使用d o m 会方便得多。 2 x m l 到关系数据库( r d b ) 的模式匹配算法 为保证元组生成依赖,必须先插入主表的值,然后依据该元组中键( 主键或 外键) 的值,找到对应的插入到从表中的值。 基本算法如下: 1 深度遍历待转换的x m x 国防科学技术人学研究生院学位论文 表。 5 如子元素在映射规则中为映射到一个表即其路径与从表中的p a m 匹配,则 为该予元素对应的表创建新的中间表t a b l e b ,并将参照的外键名 ( f o r e i 弘k e y ) 和值存入新的中问表中。 6 最后依次读出中间表的值,组织s q l 语句,打开数据库执行该语句。 3 4x 札模式与关系模式的语义约束的相互转换 语义约束分为域约束、基数约束、参照完整性、函数依赖、元组生成依赖五 种情况。它们属于不同的约束,但相互间有制约。“。 n 1 域约束( d o m a i nc o n s t r a i n t s ) 语义约束也可以称为完整性约束,而域约束是最基本的完整性约束。域约束 指出与元素或属性相关联的可取值的集合,域约束的恰当定义不仅可以对插入的 值进行检测,而且还可以对查询进行检测,以保证比较是有意义的。类型定义是 域约束的重要表达方式。 ( 2 ) 基数约束( c a r d i n a l 蚵c o n s 俩m s ) 在x m ls c h e m a 中,元素与它的子元素或属性之间存在四种基数关系: ( o ,1 ) 一个元素至多有一个该子元素或属性。 ( 1 ,1 ) 一个元素有且仅有一个该子元素或属性。 f o ,n ) 一个元素可以有任意多个( 包含o 个) 该子元素或属性。 ( 1 ,n ) 一个元素至少有一个该子元素或属性。 这四种基数关系可归结为三种约束: 子元素或属性是否能为空,这在关系数据库中可用n u l l 或n o tn u l l 来表 达。 子元素或属性是否重复,重复出现的元素在关系模式设计时需映射为从表。 子元素或属性是否必须存在,这实际上属于下面讨论的t g d s 约束。 ( 3 ) 参照完整性( r e f e f e n t i a li n t e g 五t y ) 参照完整性是指一个元素或属性的取值必须在另一元素或属性的取值中出 现。如果a x b y 则表示a 的予元素x 的取值必须在b 的子元素y 的取值中 - _ - - - _ _ _ - _ - _ - _ _ _ - - _ _ _ _ - _ - _ - _ i _ _ _ - _ _ _ _ - _ - _ - _ - _ - _ - _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ - _ _ _ _ _ 一一 第2 6 页 国防科学技术大学研究生院学位论文 出现。在关系模式中如果参照的是主键,则参照完整性可用外键来表示,否则需 借助c h e c k 子句来保证。 ( 4 ) 函数依赖( f 叫c t i o n a ld e p e n d e n c i e s ,f d s ) 若元素x 对其子元素y 满足函数依赖,即x 斗y ,则元素x 至多只能有一 个y 子元索,即如果y 子元素存在则必唯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业工程资质管理办法
- 衡水孵化基地管理办法
- 万全区护林员管理办法
- 七中高三食堂管理办法
- 多代际记忆差异研究-洞察及研究
- 上传影像资料管理办法
- 人防手续审批管理办法
- 中央企业招标管理办法
- 上海企业注册管理办法
- 规范外包业务管理办法
- 《泡泡玛特营销策略问卷调查及消费者RFM分析案例综述》2000字
- DB32T 4772-2024自然资源基础调查技术规程
- 面点原料知识
- 陕西省西安市高新一中、交大附中2025届高三第四次模拟考试化学试卷含解析
- 饿了创业成功案例分析
- 落地扣件式钢管脚手架拆除方案
- 机房整改方案
- I类切口手术预防应用抗菌药物制度
- 鞋业模具制作流程
- 未成年人保护法普法宣传教育课件
- 第六课 实现人生的价值(精美课件)
评论
0/150
提交评论