(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf_第1页
(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf_第2页
(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf_第3页
(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf_第4页
(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(计算机系统结构专业论文)数据服务管理组件与多源查询引擎设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 随着社会信息化程度提高,企业内部数据格式种类日益繁多,而企业内及企 业间数据交换更加频繁,对异构数据的访问日益成为系统的瓶颈。如何提高系统 交互效率,提高系统内数据使用效率成为研究热点。本文结合面向服务的思想和 基于x m l 的异构数据集成技术,研究开发面向服务的数据集成解决方案和平台。 设计和实现了数据服务平台内数据服务管理组件和多源查询引擎。使用 x m l 作为数据模式,x q u e r y 作为查询语言,实现了对关系数据库、x m l 文件 和w e b 服务数据源的集成功能。 设计和实现了数据服务平台管理组件。该组件完成由数据服务描述到生成数 据服务过程,生成数据服务接口的w s d l 描述,接受用户s o a p 请求,调用底 层查询引擎。同时数据服务管理组件提供数据服务生命周期管理功能,可以通过 w e b 形式的管理界面对数据服务完成部署、启动、停止等操作。数据服务管理组 件是数据服务的运行平台,是数据服务完成其生命周期的支撑。 采用中介系统实现方式实现了多源查询引擎。查询引擎接受平台约束的 x q u e r y 语句作为全局查询,中介器将全局数据模式上的查询分解为针对各个具 体数据源的子查询,调用包装器完成具体查询。其中关系数据包装器采用一种简 洁的数据映射方式,给出了一种通用x q u e r y 到s q l 的查询转换算法,通过标 准j d b c 接口实现对多种主流数据库支持。 综上所述,本文实现了一个面向服务的数据集成系统的核心组件,可建立灵 活结构的数据服务完成对多种异构数据的集成功能。全文最后探讨了系统的不足 和进一步改进方向。 关键词:数据集成s o a 数据服务x q u e r y a b s t r a c t w i t ht h ei m p r o v e m e n to fi n f o r m a t i z a t i o ni nt h es o c i e t y , t h et y p e so fd a t a i n e n t e r p r i s eb e c o m em o r ea n dm o r e ,a n dt h ed a t ae x c h a n g e sm o r ef r e q u e n t l y i no r b e t w e e ne n t e r p r i s es y s t e m s s oa c c e s s i n gd a t ai nh e t e r o g e n e o u sd a t a s o u r c e si s b e c o m i n gt h eb o r l e n e c ko fe n t e r p r i s e i n f o r m a t i o ns y s t e m h o wt oi m p r o v et h e e f f i c i e n c yo f s y s t e mi n t e r a c t i v ea n dd a t ae x c h a n g ei so n eo f h o t s p o t si nr e s e a r c ht o d a y c o m b i n i n gs e r v i c e o r i e n t e da r c h i t e c t u r ea n dx m l b a s e dd a t ai n t e g r a t i o nt e c h n i q u e , i nt h i sp a p e rw es t u d ys e r v i c e o r i e n t e dd a t ai n t e g r a t i o ns o l u t i o n d e s i g n sa n di m p l e m e n t ss e r v i c em a n a g e m e n tc o m p o n e n t a n dm u l t i s o u r c eq u e r y e n g i n e u s i n gx m la sd a t as c h e m aa n dx q u e r ya sq u e r yl a n g u a g e ,t h es y s t e m s u p p o r tr e l a t i o nd a t eb a s e ,x m lf i l ea n dw e b s e r v i c ea sd a t as o u r c e s d e s i g n sa n di m p l e m e n t sd a t as e r v i c em a n a g e m e n tc o m p o n e n t ,a n d i tc o m p l e t e t h ep r o c e s sf r o mr e a d i n gd e s c r i p t i o nf i l e st ob u i l d i n gd a t as e r v i c e i tg e n e r a t e s w s d l sf o rd a t as e r v i c e s ,a c c e p t ss o a pr e q u e s tf r o mu s e r s ,c a l l sq u e r ye n g i n e u n d e r g r o u n d i ta l s op r o v i d e st h em a n a g e m e n t o fs e r v i c el i f e c y c l e ,t od e p l o y , s t a r ta n d s t o p t h ed a t as e r v i c e d a t as e r v i c em a n a g e m e n tc o m p o n e n t i st h er u n t i m e e n v i r o n m e n to fd a t as e r v i c e t h em u l t i s o u r c eq u e r ye n g i n ei si m p l e m e n t e db yu s i n gm e d i a t e ds y s t e m m e t h o d e n g i n ea c c e p t ss y s t e mr e s t r a i n e dx q u e r ya sg l o b a lq u e r yl a n g u a g e ,t h e m e d i a t o rc o m p l e t e st h ed e c o m p o s i n go fg l o b a lq u e r y , a n ds e v e r a lw r a p p e r sd ot h e r e a id a t as e a r c h t h er e l a t i o nd a t aw r a p p e ru s eas i m p l ed a t am a p p i n g ,d e s i g n e da g e n e r a lx q u e r yt os q lt r a n s f o r ma l g o r i t h m ,s u p p o r t sp o p u l a rd a t a b a s es y s t e mb y u s i n gs t a n d a r dj d b c i n t e r f a c e i ns u m m a r y , t h i sp a p e rf i n i s h e dt h ec o r ec o m p o n e n t so ft h ed a t as e r v i c ep l a t f o r m , d a t as e r v i c ec a nb ed e s i g n e da g i l e l y f i n a l l y , c o n c l u s i o ni sm a d ea b o u tf u t u r ew o r kt o i m p r o v et h ec o m p o n e n t s k e yw o r d s :d a t ai n t e g r a t i o n ,s o a ,d a t as e r v i c e ,x q u e r y 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得丕盗盘鲎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:声l 趋 签字日期:歹。7年乡月牛日 学位论文版权使用授权书 本学位论文作者完全了解苤鲞叁堂有关保留、使用学位论文的规定。 特授权叁鲞叁鲎可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 列起 签字同期:d 口7 年多月彳同 f 、, 导师签名:v 一瓤r 第一章绪论 1 1 研究背景 第一章绪论 随着信息技术的发展,信息已成为社会生产、生活的重要组成部分。一个企 业或组织要在激烈的竞争中取得优势必须得有快速高效获取信息,处理信息的能 力,而数据作为信息的载体,对数据处理成为影响一个企业信息系统效率的至关 重要因素。 企业在信息化过程中,往往企业内各个部门在不同阶段分别独立的建立自己 的信息系统,这些系统的建立没有考虑系统集成因素,以满足本部门需求为目的 常常采用不同的硬件设施、软件平台、实现技术、数据存储和管理技术等。当企 业信息化发展到一定阶段要求不同部门间系统互联以提高效率,这时就会发现企 业内部存在大量异构的数据,而正确处理和利用这些数据占据了系统集成的主要 工作量。另外随着技术的发展,企业信息系统的升级,新系统带来了新数据格式, 同时旧系统遗留有大量历史数据,新旧数据格式不兼容。由于以上等原因造成了 企业内部数据交换困难,无法有效地实现信息共享和信息交互,形成了所谓的“信 息孤岛”现象i lj 。 1 2 数据集成概念与发展 数据集成是把不同来源和不同格式的数据在逻辑上或物理上有机地集中, 提供一个访问异构数据源的统一接口,使用户不必考虑数据源数据模型的异构 性、数据抽取、数据合成等问题,用户只需指定他们需要的数据,而不必描述怎 样去获取数据,从而为企业提供全面的数据共享【2 j 。 数据集成领域的研究开始于上世纪七十年代中期,至今已有二十多年的历 史,其研究对象的范围和采用的方法都在持续变化中,其作用和影响也在不断扩 大。文献【3 】将数据集成领域的研究历史分为三个阶段:第一阶段从七十年代中期 到八十年代中期,这一阶段以数据库系统的关系型数据的集成为主要研究对象, 关注于解决平台和系统的异构性问题,产生了以多数据库系统( m u l t i d a t a b a s e ) 【4 】和联邦数据库( f d b s ) 【5 】为代表的数据库之间的数据集成技术;第二阶段从八 第一章绪论 十年代中期到九十年代中期,这一阶段数据集成的主要研究对象从关系型数据扩 展到半结构化或非结构化的数据,关注点主要集中在对多种数据格式和模式的语 法和模式异构的解决上,提出了所谓中介系统【6 j 的数据集成体系结构:第三阶段 九十年代中期以后,这一阶段各种技术飞速发展,数据源的种类更加丰富,分布 更为广泛,数据集成开始关注数据所表述信息的语义异构。新技术的出现也给数 据集成带来新的变化,但在多源数据集成领域至今没有成熟的模式。 1 3 现阶段解决方案 数据集成现阶段流行解决方案主要可以分为两类【7 】:物化数据集成和虚拟数 据视图方式。 物化数据集成在有的文献中也称为数据仓库方式,它将数据从各个数据源以 一定方式抽取并转存至一个本地存贮中。数据抽取往往以满足特定应用为目的, 抽取数据以统一模式存储在本地存储中。用户查询数据直接在数据的本地存贮中 进行,不再访问各个数据源。物化数据集成在一些方面与传统数据库相似,都需 要存储管理数据,都可对数据进行查询操作,一些商业数据库厂商提供利用数据 库进行管理的数据仓库系统,但数据仓库系统与数据库还是有明显区别的。数据 仓库主要是为决策支持系统设计,它包含历史数据和汇总数据。数据仓库的设计 可以说是面向查询的,数据仓库上进行的查询往往非常复杂。数据仓库中数据在 使用过程中通常是只读的,但会定期的从数据源中抽取数据、更新数据仓库中数 据。数据仓库由于查询只在本地存储数据上进行,因此查询效率高,另一方面数 据仓库要转存数据会产生数据冗余,数据及时性差。因此数据仓库适用于数据更 新少,查询复杂的数据挖掘、决策支持等应用中。 虚拟视图数据集成方式相对于物化数据集成的显著特点是不存在数据拷贝, 不增加新的数据冗余。系统提供一个虚拟的全局数据视图,用户基于虚拟全局视 图进行数据查询。数据集成系统通过一定映射关系将用户查询分解为各个数据源 的具体查询,最终将各个数据源数据汇总返回给用户。虚拟数据集成是较早使用 的数据集成方式,具体的实现方式又可分为联邦数据库和中介系统。 联邦数据库 联邦数据库系统由一组半自治的数据库系统组成,联邦内每个成员数据库都 维护自身与联邦内其它数据库成员数据的映射关系,一个成员数据库可以单独对 自身进行操作也可同时查询多个其它成员数据库数据。联邦数据库需要每组成员 间都维护模式映射,因此当成员数据库数量较多时,系统内维护数据映射关系工 作将变得极为困难。因此联邦数据库系统使用在成员较少且稳定的情况。 2 第一章绪论 中介系统 中介系统相对与联邦数据库系统,它是独立于数据源的,系统内数据源是完 全自治的,与联邦数据库系统相同它也不添加新的数据冗余。一个中介数据集成 系统的典型结构如图卜l 所示: f i g u r e13 :m e d i a t e da r c h i t e c t u r e ( b o r r o 懒s dw i t h 鼬扭em i n o rd 璐n g e sf r o m f g & i u w d 0 1 ) 图1 1 中介系统结构图 系统中有一个中介器和多个对应数据源的包装器。中介器维护着数据的全局 视图和全局视图到各个数据源局部视图的映射关系,包装器维护对应数据源的局 部视图。用户查询到来时,中介器先根据数据映射关系将用户查询分解为针对各 个数据源的子查询,再调用包装器。包装器接受中介器子查询,在数据源进行具 体查询,并将数据以局部模式返回。中介器再在各个数据源查询数据的基础上进 行深入查询或是结果汇总。最终,系统返回给用户一个全局数据视图上的查询结 果。 1 4 本文工作 本文是天津市科技支撑计划项目基于数据服务的数据集成平台研究的一部 分,设计了一种数据服务框架,实现了平台内数据服务管理组件和多源查询引擎。 本文主要工作分为数据服务管理组件和多源查询引擎两个部分: 1 数据服务管理组件 实现数据服务的运行环境,监听、响应服务请求,实现w e b 服务相关规 第一章绪论 范,生成数据服务接口w s d l 描述。 实现o a s i s 服务安全规范,提供用户认证,数据服务签名、加密功能, 满足数据服务在不安全信道传递敏感数据要求。 实现对平台内数据服务部署、启动和卸载等一系列生命周期管理。 2 多源查询引擎 采用中介架构,实现多源查询引擎,引擎内包括中介器、关系数据包装 器和w e b 服务数据包装器。 多源查询引擎实现提供x m l 形式的数据视图,使用平台约束的x q u e r y 语言查询数据。 使用j a v a 下编译器生成工具生成x q u e r y 抽象语法树,中介器通过遍历 抽象语法树完成全局查询分解,生成子查询等步骤,最终完成整个查询 过程。 w e b 服务数据包装器完成对作为数据源的w e b 服务调用,并将服务返回 消息作为局部查询结果返回中介器。 关系数据包装器实现了一种简洁的数据映射方式,实现了该数据映射方 式上的无嵌套x q u e r y 语句到s q l 语句转换,实现对查询引擎对关系数 据的查询。 1 5 全文安排 第一章绪论。本章介绍项目背景,数据集成概念和发展,简述现有数据集成 解决方案。 第二章面向服务的数据集成。本章前一部分介绍了面向服务的架构,w e b 服务技术,数据服务的概念和作用。后一部分介绍了平台内查询语言x q u e r y 和 查询引擎中利用的编译器生成工具j a v a c c i s j 。 第三章总体设计。这一章是整个平台的设计,具体包括平台内数据服务设计 和组织、平台总体架构设计、数据服务配置文件设计。 第四章数据服务管理组件。这一章详细描述了管理组件的设计与实现,包括 关键功能的详细介绍。 第五章多源查询引擎。本章详细介绍多源查询引擎结构,工作流程,实现方 法等。 第六章应用案例与结论。本章通过一个使用案例说明数据服务本质,展现数 据服务管理组件功能。最后给出全文总结,并讨论目前系统的不足和进一步研究 方向。 4 第二章面向服务的数据集成 第二章面向服务的数据集成 面向服务的数据集成核心概念是数据服务,本章在首先介绍数据服务的基础 面向服务的架构和w e b 服务技术,再在给出数据服务的定义。 2 1 面向服务的体系结构 面向服务的体系结构( s e r v i c e o r i e n t e da r c h i t e c t u r e ,s o a ) 是一个组件模型, 它将应用程序的不同功能单元称之为服务,通过这些服务之间的定义良好的接口 和契约联系起来【9 】。服务接e 1 使用中立的方式进行定义,它独立于硬件平台,操 作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通 用的方式进行交互。 在面向服务的体系结构中,服务交互过程中存在三个不同的角色,分别是服 务提供方、服务请求方和服务注册中心,三者之间的关系如下图。 图2 - 1 面向服务的体系结构 服务提供方实现服务功能,对外提供服务,将服务发布到注册中心供使用者 查找。服务请求方是服务的使用者,通过服务注册中心查出所需服务,完成服务 绑定、调用,使用服务提供功能完成自身需求。服务注册中心维护着一个服务的 目录,通过服务注册中心服务提供方使自身提供服务可被用户发现,用户通过服 务注册中心查找服务,获取服务接口或接口地址。 面向服务的体系架构有以下基本特征【l o 】: 松散耦合 第二章面向服务的数据集成 服务使用方使用服务仅需了解服务接口,而不需了解任何服务提供方内部逻 辑。松散耦合保证了在接口不变的情况下任意修改系统的一部分的实现方式而 不会影响系统其他部分的运行。 粗粒度服务 服务粒度是相对的,但一般来可分为细粒度和组粒度两类。细粒度服务为提 供单一功能的服务,而粗粒度服务可以是对多个服务的组合,提供更为复杂的功 能的服务。服务组合方式现在有手动组合,半自动组合和自动组合,现在基于语 义的服务组合是s o a 研究的一个热点。快速的服务组合可以敏捷的开发新系统, 调整原有系统,提高系统性能和灵活性。 标准接口 服务之间接口设计采用技术无关的、标准化的设计。标准化的接口设计使服 务具有平台、实现语言无关性等,使服务具有跨平台性。标准化的接口可以充分 利用系统已有资源,保护系统财产。通过对旧的非面向服务系统组件的包装,新 系统可充分利用其资源。标准化的接口也进一步挺高系统灵活性,系统不同功能 模块可以灵活采用不同实现技术。 服务无状态性 服务方和请求方不维护状态信息,请求方对服务的任意两次请求是独立的。 无状态服务可以方便系统实现,提高系统性能。对于一些需要维护连接状态的应 用也可通过一定手段在无状态服务的基础实现持续连接。 s o a 是一种软件设计思想,它没有对服务接口和契约做详细的规定,w e b 服务是实现s o a 架构的一种流行的方式。w e b 服务建立在标准的x m l 规范之 上,具有很好的跨平台和互操作性。w e b 服务技术很大程度上促进了s o a 架构 的发展,但s o a 架构并不仅仅是w e b 服务。 2 2w e bs e r v i c e 技术 w e b 服务建立在s e r v i c e o r i e n t e da r c h i t e c t u r e ( 面向服务的体系结构,简写 s o a ) 基础之上的,它是s o a 的实现技术。g a r t n e r 研究所对其定义为:“w e b 服务是通过i n t e r n e t 标准技术传递的,松散耦合的软件组件”。w e b 服务是由一 系列基于x m l 的规范构成,不同的规范在服务交互不同阶段发挥作用,主要规 范有简单对象访问协议( s o a p ) 】、w e b 服务描述语言( w s d l ) 【l2 】和统一描 述、发现和集成协议( u d d i ) 1 1 3 1 。 6 第二章面向服务的数据集成 2 2 1 简单对象访问协议( s o a p ) s o a p ( s i m p l eo b j e c ta c c e s sp r o t o c o l ,简单对象访问协议) ,w 3 c 规范中对 它的描述是:s o a p 是在分散的、分布式环境中信息交换的轻量级协议。s o a p 从最根本上说是一个无状态的单向消息传递协议,但是应用程序可以用它建立复 杂的交互模式。 s o a p 协议主要包括4 个方面内割1 4 】,s o a p 消息封装、s o a p 编码规则、 s o a pr p c 和s o a p 绑定: s o a p 消息封装,定义s o a p 消息结构。s o a p 消息有消息信封、消息头、 消息体和附件组成。消息信封内包含可选的消息头和消息体,消息信封具有形式 良好的x m l 数据结构。s o a p 消息内可以包含任意多个附件,附件符合m i m e 规范,附件内容可以是任意编码格式。 s o a p 编码规则,主要是定义消息中携带数据类型。s o a p 消息中可以设置 灵活的数据类型满足程序交互需求。 s o a pr p c ,定义消息的“请求响应”交互模式。s o a p 协议设计的目的之 一就是方便实现程序的远程过程调用( r p c ) 1 5 1 ,s o a p 协议中“请求响应” 交互模式可以实现远程过程调用,但不是所有“请求响应”交互都为远程过程 调用。 s o a p 绑定,定义消息传递的底层协议。s o a p 协议1 2 版本设计s o a p 消息可 以使用h t t p 、f t p 和s m t p 等多种底层协议进行消息传递,常用的是s o a p 与h t t p 绑定【1 6 j 。 2 2 2w e b 服务描述语言( w s d l ) w 曲服务描述语言( w s d l ) 是一种基于x m l 的对w e b 服务进行定义的语 言。w s d l 版本1 1 对w 曲服务的描述包括数据类型( t y p e s ) 、消息( m e s s a g e ) 、 操作( o p e r a t i o n ) 、端口类型( p o r tt y p e ) 、绑定( b i n d i n g ) 、端h ( p o r t ) 和服务( s e r v i c e ) 7 部分。数据类型是对w 曲服务交互过程中传递数据类型的定义。w s d l 语言中 对使用什么方式定义数据类型没有规定,但通常使用x m ls c h e m a 定义数据类 型。消息部分定义一个抽象的消息,可供w e b 服务定义的其它部分重复利用。 端口类型是一组操作的抽象集合。操作实际上是对服务交互原语的定义,w s d l 语言中包括4 种交互原语,主要使用的是“请求响应”原语,它是s o a p 协议 中s o a pr p c 的描述。w s d l 绑定定义w e b 服务采用什么底层协议传递s o a p 消息,是对服务使用s o a p 绑定的描述。一个w s d l 描述中可以定义多个服务, 第二章面向服务的数据集成 每个服务都包含一组端口的,端口中定义通过一定绑定方式调用服务的地址。 2 2 3 统一描述、发现和集成协议( u d d i ) u d d i 是o a s i s 组织发起的一个开放项目,它是一个基于x m l 的跨平台的 描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务。在w e b 服务技术对s o a 架构的实现中u d d i 是服务注册中心的实现。u d d i 将服务提 供者及其提供的服务描述为三个类别【17 】:白页、黄页和绿页。白页描述了服务 提供者的名称、地址等信息。绿页描述了服务的技术信息,包括电子商务规则、 业务流程定义等。黄页描述了相关的分类信息。用户通过查询u d d i 注册中心获 取所需服务信息,包括服务提供者描述、服务接口获取地址等。a p a c h e 社区j u d d i 项目【l8 】是u d d i 的一个开源实现,项目采用j a v a 实现可以部署到标准的j 2 e e 服 务器或s e r v l e t 容器中。用户可通过网页或编程接口完成服务注册和服务查询, 注册服务信息存储在后台数据库中。 2 3 数据服务 数据服务是面向服务数据集成中核心概念,但现阶段仍没有对数据服务统一 的定义。在不同的实现中,数据服务的定义存在很大区别。 f u j u nz h u b ,m a r kt u r n e r 提出了一种面向服务的数据集成架构 ( s e r v i c e o r i e n t e dd a t ai n t e g r a t i o na r c h i t e c t u r e ,s o d a i ) 1 1 9 1 ,并实现了一个原型系 统i b h i s ( i n t e g r a t i o nb r o k e rf o rh e t e r o g e n e o u si n f o r m a t i o ns o u r c e s ) 。i b h i s 系统 中数据集成为一个两层结构,代理服务( i n t e g r a t i o nb r o k e rs e r v i c e ,i b s ) 和数据 接入服务( d a t aa c c e s ss e r v i c e ,d a s ) 。在i b h i s 系统中数据接入服务也称为数据 服务,它是由数据源所有者或维护者提供。一个数据接入服务可以查询多个物理 的数据源,不同的数据接入服务可以使用相同的底层数据源。代理服务是在数据 接入服务层之上,对外提供多种功能性服务,主要是是对数据接入服务的集成。 代理服务本身也是w e b 服务形式。每个代理服务对外提供所集成数据的统一数 据视图,所有的服务代理都注册到一个系统内的u d d i 注册中心。用户使用数据 时,首先查找服务注册中心,从服务注册中心查出相应服务代理,调用服务代理。 系统代理服务再自动调用数据接入服务,完成数据查询,将结果数据返回用户。 代理服务可以调用多个数据接入服务,实现对数据接入服务的集成。可以看出, 数据接入服务是对底层数据源的集成,代理服务又是对数据接入服务的集成,系 统通过两层模型完成复杂的数据集成功能。 第二章面向服务的数据集成 文献 2 0 】中所设计数据服务也分两次,但每层定义与上面i b h i s 系统有很大 差异。文献 2 0 】也是o r a c l e 公司数据服务中间件【2 l 】的设计基础。o r a c l e 公司数据 服务中间件中底层为物理数据服务,上层为逻辑数据服务。物理数据服务和逻辑 数据服务都不是w e b 服务,但系统可将任意的物理数据服务或逻辑数据服务包 装为w e b 服务。物理数据服务在系统内与一个且仅一个物理数据源相关,相当 于是一个物理数据源的包装器。逻辑数据服务在物理数据服务之上,可以有复杂 的多层结构。物理数据服务屏蔽了底层数据源的异构,且当底层数据源变动时只 需改动物理数据服务,逻辑数据服务不需做任何需改。逻辑数据服务的灵活结构 方便服务复用,可以使用已有服务快速建立新逻辑服务。最终用户根据需求将一 部分逻辑服务或物理服务包装成w e b 服务,提供对外的数据集成使用接口。 总的来说数据服务是以提供数据为主要目的的服务。数据服务对外提供w e b 服务接口,用户通过w e b 服务访问数据。数服服务本身可以有复杂的层次结构, 数据服务可以复用。本文在参考已有实现的基础上设计了一个灵活的数据服务结 构,本文中的数据服务详细设计见下一章。 2 4 集成查询语言x q u e r y x q u e r y 2 2 】是w 3 c 工作组制定针对x m l 数据的查询语言,它由一系列规范 组成,前身为q u i l t 查询语言【2 3 1 。x q u e r y 语言本身不是基于x m l 的,而是形式 上类似关系数据查询语言s q l 。它是一种以表达式构成的函数型语言,查询建 立在一种规范的x m l 数据模型之上,任何可以转换为x m l 形式数据都可使用 x q u e r y 进行查询。下面首先对x q u e r y 语言这两方面进行描述,最后给出w 3 c 工作组建议的x q u e r y 引擎结构。 2 4 1 数据模型 w 3 cx d m ( t h ex q u e r y1 0a n dx p a t h2 0d a t am o d e ) 规范1 2 4 j 是x q u e r y 语 言处理的数据模型,x d m 本身不属于x q u e r y 语言系列规范。x d m 主要作用为 两方面:一是它定义了x q u e r y 语言查询输入数据格式;二是它定义了x q u e r y 语言每一表达式执行可能结果。如果一个语言每一表达式结果都属于一个数据模 型,那么这个语言称为在该数据模型内封闭的。x q u e r y 语言在x d m 内封闭, 因此可用x d m 描述一切x q u e r y 操作结果。 x d m 类型系统基于x m ls c h e m a 规范【2 5 1 ,支持强类型的x q u e r y 和x p a t h 语言。类型系统使用e x p a n d e d q n a m e 定义类型名,包含x m ls c h e m ap a n 2 1 2 6 j 9 第二章面向服务的数据集成 中1 9 种原子类型和自定义的5 种类型。类型系统结构如图2 - 2 口帅忡母忙s :篙嚣嚣! ;嚣篙嚣篓翟型;黼焉翟笛 口m 口bu , m m s 口n m p b m * 图2 - 2x q u e l x 娄刑系统 i t e m 是x d m 中数据的单元,包含类型和值定义。一个i t e m 可以是n o d e 类 型也可是原予类型,它是s e q u e n c e 的组成部分。s e q u e n c e 是x d m 中另一个重要 概念它是一个扁平的数据结构。一个s e q u e n c e 中可以包含多个不同类型的i t e m , 第二章面向服务的数据集成 只包含一个i t e m 的s e q u e n c e 与i t e m 等价,但s e q u e n c e 不能包含s e q u e n c e 。 x d m 中定义了一组操作,并对每种n o d e 节点给出了各个操作的结果。所有 操作的结果类型为数据模型中的s e q u e n c e ,一些操作在一定类型的节点上没有实 际意义则返回空s e q u e n c e 。通过x d m 中操作可以进一步定义x q u e r y 语言中表 达式,计算表达式返回结果。 2 4 2 表达式 x q u e r y 语言规范中定义了1 4 种表达式,下面就几种重要的表达式做介绍: 路径表达式 路径表达式作用是在一棵表示x m l 的节点树中定位节点,x q u e r y 路径表 达式基于x p a t h 。x q u e r y 路径表达式定义了一组遍历x m l 节点树的方向,可以 遍历整棵节点树。路径表达式中支持通配符,用于匹配多个节点,每一路径表达 式都返回一个节点的s e q u e n c e 。下面是一些路径表达式的示例: b o o k c h a p t e r 5 】,选择根节点下b o o k 节点的第5 个c h a p t e r 子节点。 n a m e ,返回当前节点父节点下全部的n a m e 子节点。 b o o k y e a r = 1 9 9 9 ,返回根节点下b o o k 子节点,且b o o k 节点y e a r 属性为 1 9 9 9 。 构造表达式 x q u e r y 语言中可用构造表达式在查询中建立x m l 结构,通过构造表达式 构造任意结构的查询结果。构造表达式分直接构造表达式和计算构造表达式两 种。直接构造表达式形式直观,直接使用x m l 语法建立x m l 结构数据。计算 构造表达式使用封闭表达式形式的语句建立x m l 结构,形式复杂但可建立更加 灵活的x m l 结构,它可以动态生成x m l 标签。 f l w o r 表达式 f l w o r 表达式是x q u e r y 语言中查询功能最强大的表达式,它的名字是f o r 、 l e t 、w h e r e 、o r d e r 和r e t u r n 关键字的首字母缩写,每个关键子定义f l w o r 表 达式的一个子句。f l w o r 与s q l 语言中s e l e c t 查询语句相似,它的语法定义如 下: f l w o r e x p r := f o r c l a u s e ( f o r c l a u s e l l e t c l a u s e ) + w h e r e c l a u s e ? o r d e r b y c l a u s e ? r e t u m e x p r s i n g l e “f o r “$ ”v a r n a m et y p e d e c l a r a t i o n ? p o s i t i o n a l v a r ? “i n ”e x p r s i n g l e ( “,”$ ”v a r n a m et y p e d e c l a r a t i o n ? p o s i t i o n a l v a r ? ”i n ”e x p r s i n g l e ) t 第二章面向服务的数据集成 l e t c l a u s e:=“l e t ”“$ ”v a r n a m et y p e d e c l a r a t i o n ? :- ,e x p r s i n g l e ( “,”“$ ”v a r n a m et y p e d e c l a r a t i o n ? “:_ e x p r s i n g l e ) t y p e d e c l a r a t i o n :_ “a s s e q u e n c e t y p e p o s i t i o n a l v a r:= a t ”“$ ”v a r n a m e w h e r e c l a u s e:= w h e r e e x p r s i n g l e o r d e r b y cl a u s e :=( ( o r d e r “b y ,) i ( “s t a b l e ” o r d e r “b y ) ) o r d e r s p e c l i s t o r d e r s p e c l i s t :2 o r d e r s p e c ( “,”o r d e r s p e c ) 幸 o r d e r s p e c:= e x p r si n g l eo r d e r m o d i f i e r o r d e r m o d i f i e r :2 ( a s c e n d i n g i d e s c e n d i n g ”) ? ( e m p t y c g r e a t e s t i “l e a s t ”) ) ? ( c o l l a t i o n u r i l i t e r a l ) ? f o r 与l e t 子句将一个变量绑定到一个s e q u e n c e 上,其中f o r 是将变量依次 绑定到s e q u e n c e 的元素上,l e t 将变量一次绑定到整个s e q u e n c e 上。w h e r e 子句 根据条件对s e q u e n c e 元素过滤。o r d e r b y 子句根据排序条件对返回结果进行排序。 r e t u r n 子句返回查询结果,在r e t u r n 子句中可以使用构造表达式构造结果形式。 2 4 3 处理流程 w 3 c 规范中给出了一个参考的x q u e r y 引擎工作流程,x q u e r y 引擎的实现 可以使用规范中流程,也可以采用其它处理方式只要查询结果正确即可。图2 3 为规范中给出的x q u e r y 引擎工作流程。 1 2 第二章面向服务的数据集成 图2 - 3x q u e r y 处理流程 x q u e r y 引擎工作流程可以分成三部分外部处理、查询处理和模式导入。 外部处理过程生成查询数据的数据模型和将引擎内查询结果序列化。查询引擎处 理的第一步是将数据导入引擎x m l 数据可按x d m 规范定义方式进行转换, 其它类型数据导入可按自定义的方式转换为x d m 数据模型导入引擎。数据模式 导 是导入要查询数据的定义,查询引擎可利用数据模式对x q u e r y 语句进行较 深入的静态检测。查询处理过程是查询引擎工作的主要步骤,它叉可以分为静态 第二章面向服务的数据集成 分析和动态执行两阶段。静态分析阶段完成x q u e r y 语句的词法和语法分析,生 成语句的o p t r e e 数据结构等。静态分析阶段只与查询语句和查询数据模式相关, 与具体数据无关。动态执行阶段在查询数据上完成查询计算,生成x d m 形式的 查询结果。查询引擎最终将查询结果的内部表示串行化、返回。这是w 3 c 规范 中推荐的查询引擎工作流程,在实际中有少量查询引擎严格按照这种方式工作, 多数查询引擎在参考的基础上有所改动,但只要能得到正确结果即可。 2 5x q u e r y 语言处理工具- - l a v a c c j a v a c c 8 】是由s u n 公司开发的j a v a 平台上编译器生成工具,查询引擎内使 用j a v a c c 生成x q u e r y 语言分析器。j a v a c c 工作原理与传统的c 语言下的l e x 【2 7 j 和y a c c 2 8 3 - i - - 具相似,读入一个语言的语法描述文件生成一个j a v a 实现的语言 处理器。与l e x 和y a c c 相比,j a v a c c 有如下特点: 自项向下,j a v a c c 生成自项向下的语法处理器,而y a c c 生成自底向上 的语法处理器。这使j a v a c c 可处理更宽泛文法描述的语言,生成处理 器更方便调试等。 输入文件唯一,j a v a c c 中词法规则和语法规则在一个描述文件中,语言 分析器一步生成。传统工具中词法分析和语法分析独立,语言的词法描 述和语法描述在不同的文件中由独立工具处理。j a v a c c 将词法规则与 语法规则放在一个文件中便于管理和维护,也减少的出错的几率。 语法树工具,这是j a v a c c 主要特点之一。j a v a c c 提供处理语言的语法 树生成工具j j t r e e ,查询引擎中使用j j t r e e 生成处理的中间结果,对 j j t r e e 工具下面会进行进一步介绍。 j a v a 实现,j a v a c c 工具生成纯j a v a 的语法分析器,具有跨平台特性, 便于与j a v a 实现的系统集成。 l o o k a h e a d ,j a v a c c 默认生成l l ( 1 ) 语言分析器,但可以通过 l o o k a h e a d 选项或l o k k a h e a d 关键字在选择语句前生成l l ( k ) 的 语言分析器或尽在部分规则处做l l ( k ) 处理。在适当位置使用 l o o k a h e a d 关键字可以使生成分析器在尽可能保持l l ( 1 ) 高性能的 同时简化语法规则的编写。 此外,j a v a c c 还有便于国际化,配置灵活,便于调试等特点,由于篇幅原 因就不一一介绍。 1 4 第二章面向服务的数据集成 2 5 1j a v a c c 输入文法 与l e x 和y a c c 相同,使用j a v a c c 生成语言分析器首先是编写语言的描 述文件,j a v a c c 的词法和语法描述在同一个文法文件中。j a v a c c 是一个自顶向 下的编译器生成工具,处理语言的文法描述灵活、易读。一个j a v a c c 的文法文 件可以分为三部分:j a v a c c 选项,自定义j a v a 代码段,词法和语法产生式。 j a v a c c 选项控制生成编译器的一些属性,如是生成语言分析器是否此用静 态的方式,是否区分大小写等。 自定义j a v a 代码段用于向生成的分析器内添加非j a v a c c 自动生成代码和设 置分析器名称。自定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论