




已阅读5页,还剩48页未读, 继续免费阅读
(计算机应用技术专业论文)数据集成平台中xml查询引擎的实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 随着企业的发展,信息化建设中面临着异构数据源数据集成的需求,x m l 作为一种结构化语言,能对各种数据源的信息内容进行标记,包括结构化和半结 构化文档、关系数据库和对象库。本文以x m l 作为数据交换的标准格式,研究 数据集成平台的相关技术。 基于e c l i p s e 平台,以开发基于x m l 数据集成框架为目标,设计实现了一个 x m l 查询语言( 即x q u e r y ) 引擎。参考x q u e r y 规范,完成了x m l 文档解析, x q u e r y 语法解析,语法树执行等功能模块的划分,并定义各部分的交互接口。 设计了两种客户端调用方法:命令行和x q j a p i ,前者可以设置引擎执行的必要 参数,后者采用类似于j d b c 的方式调用引擎,使之支持预编译、参数查询等功 能。使用s a x 方式解析x m l 文档,使用带有类型信息的s a x 事件流创建数据 模型。针对最常见的影响性能的问题采取适当的优化策略,对x q u e r y 语句解析 树的进行优化,提高查询效率。结合具体的实例说明了数据集成框架的功能。 综上所述,本文从数据集成框架设计,以及底层x q u e r y 引擎设计展开了一 系列工作,最终实现了一个高效率、扩展性强的x q u e r y 查询引擎,并对集成框 架的进一步改进,以及提高x q u e r y 引擎的效率做出了探讨,这些研究验证了以 x m l 为交换格式的数据集成方案的优势,为异构系统集成提供了有力工具。 关键词:数据集成,x q u e r y ,x m l ,关系数据 a b s t r a c t w i t he n t e r p r i s e s d e v e l o p m e n t , t h e yn e e dt oi n t e g r a t et h e i rh e t e r o g e n e o u sd a t a s a sa s u u c t u r e dl a n g u a g e , x m li ss u i t a b l et ob et h es t a n d a r d d a t af o r m a to ft h ed a t ai n t e g r a t i o n f r a m e w o r k i tc a l ld e s c r i b ea l lk i n d so fd a t as o u r c e s i n t e n t , i n c l u d i n gs 姗c t 删h a l f - s t r u c t u r e d d o c u m e n t , r e l a t i o n a ld a t a , o b j e c td a t a b a s e do nt h i sf e a t u r e ,t h ep a p e rp e r f o m ss o m er e s e a r c ho n t h et e c h n o l o g i e so fd a t ai n t e g r a t i o n f i r s to fa l l ,i n t r o d u c e st h ed a t ai n t e g r a t i o nf r a m e w o r kb a s e do i le c l i p s ep l a t f o r m , a n dt h e d e s i g no ft h ex q u e r ye n g i n e b a s e do nt h es p e c i f i c a t i o no fx q u e r y , d i v i d e st h ef u n c t i o no ft h e g i n ei n t os e v e r a lm o d u l e s ,a n dd e f i n et h ee a l li n t e r f a c e so f e a c ho t h e r b a s e do nt h ef 】i - s ts t e pd e s i g n , e a c hm o d u l ei si m p l e m e n t e d t w oc a l lm e t h o d so ft h ee n g i n e : c o m m a n dl i n e x q ja p ia r ci m p l e m e n t e d , t h ef o r m e r 锄b eu s e dt os e ts o m en e c e s s a r y p a r a m e t e r st oe x e c u t et h ee n g i n ea n dt h el a t t e r , j u s tl i k ey d b c ,s u p p o r t ss o m ef u n c t i o n sl i k e p r e p a r ec o m p i l ea n dp a r a m e t e rq u e r y u s e ss a xt op a r s ex m ld o c u m e n t , a n dc j r e a t e s d a t a m o d u l eu s i n gt y p e ds a xe v e n _ t s u s e ss o m er e g u l a rs 缸t e g i e st or e s o l v et h ep r o b l e m st h a ta f f e c t p e r f o r m a n c ea n do p t i m i z ea b s t r a c ts y n t a xt r e e ,w h i c hi st h er e s u l to f t h ex q u e r yp a r s i n gm o d u l e a n dt h e np o i n t so u tt h ee x t e n s i o no ft h ee n g i n e ,a n du s eac a s et oi l l u s t r a t et h ef u n c t i o n so ft h e f r a m e w o r k i naw o r d , t h i sp a p e rf i n i s h e st h ed e s i g na n di m p l e m e n t a t i o no fx q u e r ye n g i n e ,w h i c hi sa v e r yi m p o r t a n tp a r to ft h ed a t ai n t e g r a t i o nf r a m e w o r k ,a n dg i v e sau s e f u lt o o lt oi m p l e m e n t i n t e g r a t i o no f h e t e r o g e n e o u sd a t a s k e yw o r d s :d a t a i n t e g r a t i o n , x q u e r y ,x m l ,r e l a t i o n a ld a t a 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果, 除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得丞奎盘鲎或其他教育机构的学位或证书而使用过的材料。与我一同工 作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 学位论文作者签名:毒1 蹲签字日期沏7 年z 月日 学位论文版权使用授权书 本学位论文作者完全了解苤盗盘堂有关保留、使用学位论文的规定。特授权 叁盗盘堂可以将学位论文的全部或部分内容编入有关数据库进行检索,并采用影印、缩 印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国家有关部门或机构送交论文 的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:窖 晔 签字日期:z 知7 年二月f 日 导师签名: 签字日期:小户堋日 7 第一章引言 1 1 研究背景 第一章引言 企业信息化建设中面临着异构数据源、信息孤岛、信息交换等严重问题,而 关系数据库理论无法从根本上解决异构数据源等问题,因此迫切需要将数据集成 起来的方案。 数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集 中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有了很多成熟 的框架可以利用。目前通常采用联邦式、基于中间件模型和数据仓库等方法来构 造集成的系统,这些技术在不同的着重点和应用上解决数据共享和为企业提供决 策支持。 夺联邦数据库系统( f d b s ) i 由半自治数据库系统构成,相互之间分享数据,联盟 各数据源之间相互提供访问接口,同时联盟数据库系统可以是集中数据库系统或 分布式数据库系统及其他联邦式系统。 夺中间件模式通过统一的全局数据模型来访问异构的数据库:遗留系统、w e b 资源等。中间件位于异构数据源系统( 数据层) 和应用程序( 应用层) 之间,向下 协调各数据源系统,向上为访问集成数据的应用提供统一数据模式和数据访问的 通用接口。各数据源的应用仍然完成它们的任务,中间件系统则主要集中为异构 数据源提供一个高层次检索服务。 令数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的和不可 修改的数据集合。其中,数据被归类为广义的、功能上独立的、没有重叠的主题。 这几种方法在一定程度上解决了应用之间的数据共享和互通的问题,但也存在以 下的异同。数据仓库技术则在另外一个层面上表达数据之间的共享,它主要是为 了针对企业某个应用领域提出的一种数据集成方法。 中间件模式是目前比较流行的数据集成方法,它通过在中间层提供一个统一 的数据逻辑视图来隐藏底层的数据细节,使得用户可以把集成数据源看为一个统 一的整体。这种模型下的关键问题是如何构造这个逻辑视图并使得不同数据源之 间能映射到这个中间层。 本文所设计实现的数据集成中间件平台就基于中间件模式实现的,利用x m l 数据的灵活性,对所有异构数据源提供一个统一的虚拟) ( m l 视图,使用) ( 5 l l 查询 引擎实现异构数据的集成。 x m l 是一种通用标记语言,它能对各种数据源的信息内容进行标记,包括 第一章引言 结构化和半结构化文档、关系数据库和对象库。它如此流行的主要原因在于它继 承于s g m l 的自描述性,h t m l 标签能够声明文档的特性,x m l 标签也能用于 描述数据组件,这个特性使x m l 适于数据交换和操作。随着w e b 数据的迅速发 展,可以预见大量x m l 数据的出现。它是w e b 服务的核心部分,也是企业应用 集成领域的主要角色,被视为标准的信息交换格式。 同时随着x m l 数据的发展大量增加了异构信息,对开发人员特别是以数据 库为基础的人员提出了极大的挑战。关系数据架构良好,而且经实践证明比较可 靠,在今后很长一段时间内都会作为数据的主要存储格式,因此现代企业应用需 要将x m l 与关系数据无缝的结合起来。 为了完全利用x m l 的特性,大量的研究和标准用于设计一个专用于x m l 的 数据模型,查询语言和数据库函数。由于x m l 可以用于表示结构化和非结构化 数据,因此它需要一个能对两种数据同时进行有效操作的查询语言及处理器。在 半结构化数据模型查询语言方面,工业界和学术界提出了不下十种查询语言1 2 9 1 3 1 】,如来自文档研究领域的x s l 、x q l ,来在数据库领域的l o r e l 、x m l g l 、 q u i l t t 叫j 、x p a t h 、x q u e r y 等。其中x q u e r y 是万维网协会对x m l 查询语言规范化 的成果,它吸收的其他查询语言的优点,极有希望成为x m l 查询语言的最终标 准。 现在很多开源组织和公司针对x q u e r y 参考规范实现了查询引擎,比较又代 表性的是x q e n g i n e 、s a x o n 、g a l a x i l 5 儿1 6 j 等开源x q u e r y 引擎,b e a 公司的 a q u a l o g i e 。x q e n g i n e 是对x q u e r y 规范的最基本实现,仅实现了规范定义的几个 核心函数,但对查询的处理流程做了很好的实现。s a x o n 质- 时做为x s l t 与x q u e r y 的查询引擎,实现了x q u e r y 的标准并做出了扩展,并对关系数据数据的集成实 现了自己的扩展,这也使得它的结构异常复杂。g a l a x 是对x q u e r y 弓i 擎的忠实实 现,它使用o c a r o l 语言实现,对x q u e r y 语法树的处理严格按昭, , x q u e r y 规范的定 义实现,对外提供c 、j a v a 、o c a m l 调用接口,但该语言的特点限制了该引擎的 扩展性,不利于对异构数据实现适配器模块。a q u a l o g i c 2 0 对x q u e r y 规范做出 了扩展,在x q u e r y 查询语句中加入大量描述数据源的元数据信息,基于w e b l o g i c p l a t f o r m 实现了g 界面,图形化的操作界面屏蔽了底层数据的具体信息,便利 了数据集成的操作。 综合多个开源组织及公司的x q u e r y 引擎实现,本文设计实现了一个基于 e c l i p s e 平台和j 2 e e 规范的数据集成平台,前台依据e c l i p s e 平台相关的e m f 、 g e f 技术开发g u i 界面,底层实现自己的x q u e r y 查询引擎,提供对上层用户 界面的支持,并提出数据服务的概念,将可重用的功能模块封装为数据服务,并 和其元数据信息一起封装在一起,引擎负责实现对数据服务的支持。 2 第一章引言 1 - 2 论文的主要工作 本文的工作是天津市重点科技攻关项目面向企业信息集成的开发平台研究 的一部分,设计实现了以x q u e r y 为基础的数据集成平台,其主要功能模块可以 分为两部分,上层提供给开发人员的图形界面,构造用于集成的x q u e r y 查询语 句,以及数据源的描述信息,底层依据x q u e r y 规范设计x q u e r y 查询引擎的原 型,并对其做出必要的扩展,用于执行x q u e r y 查询语句。 本文的主要工作就是设计实现底层的x q u e r y 引擎,其中包括: 夺客户端的设计,包括命令行调用以及客户端a p i 的实现。命令行调用使用一 些默认的参数设置,避免了一些通用的、重复的参数设置。x q j 的部分实现 了以编写代码的方式对x q u e r y 引擎的调用。 x m l 文档解析及数据模型的生成。参考x q u e r y 数据模型的规范,实现数据 模型,由于规范并未定义模型的具体实现及构造方式,因此具有很强的灵活 性。在参考了几个开源项目的模型基础上,设计实现以s a x 方式解析文档, 生成d o m l i i 1 9 9 5 。节点测试实际上是对 路径对应的节点的值的匹配,而路径表达式本身是对x m l 数据模式的匹配。 第二章x q u e r y 综述 2 3 3f l w o r 表达式 f l w o r 表达式是x q u e r y 中最强大的一种表达式,类似s q l 语言中的 s e l e c t - f r o m w h e r e 语句。绝大多数的x q u e r y 语句是围绕着f l w o r 表达 式构造的。f l w o r 是如下关键字首字母的大写集合:f o r , l e t ,w h e r e , o r d e rb y ,r e t u r n 。 一般的x q u e r y 查询通常不仅要包括模式匹配,而且应该支持选择过滤和结果 构造。在x q u e 巧中f l w o i 己表达式是典型的能够完成具有某种实际意义的查询的 表达式,特别适用于对数据进行连接查询,以及重新构造结果的x m l 数据结构。 它的形式定义为: f l w o r e x p r := ( f o r c l a u s e il 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 r n ”e x p r s i n g l e f o r c l a u s e l e t c l a u s e t 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 f 场e r e c l a u s e o r d e r b y c l a u s e o r d e r s p e c l i s t o r d e r s p e c o r d e r m o d i f i e r “f o ,“$ ”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 e t 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 ) * “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 ) 宰 觞s e q u e n c e t y p e “a t ,“$ ”v a r n a m e w h e r e ”e x p r s i n g l e ( ( “o r d e r “b y ”) l ( 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 ( “,”o r d e r s p e c ) 奉 e x p r s i n g l eo r d e r m o d i f i e r ( “a s c e n d i n g ”l “d e s c e n d i n g ”) ? ( e m p t y ”( g r e a t e s t ”i “l e a s t 1 ) ? ( c o l l a t i o n ”u r i l i t e r a l ) ? f o r 子句用于将表达式的值依次绑定到变量,例如f o r $ xi ne x p r 将表达式 e x p r 的值依次绑定到变量$ x 。 l e t 子旬用于将表达式的值整个绑定列变量,例如l e ts x = e x p r 将表达式e x p r 的值一次性绑定到变量$ x 。 w h e r e 子旬用于过滤f o r 和l e t 语句绑定的变量,w h e r e 子句的返回值是 布尔类型的,只有满足w h e r e 条件的变量才能在后面的r e t u r n 语句中返回结 果。 o r d e r b y 子旬可以包含一个或多个排序声明,满足w h e r e 条件的数据按照从 左至右的顺序比较,直至出现不相同的值为止。 9 第二章x q u e r y 综述 r e t u r n 子句用于返回结果,结果的x m l 数据结构也在i 也t i 瓜n 语句中 定义,对于满足w h e r e 子旬条件的每个f o r 和l e t 语句传来的变量,r e t u r n 语句按照其定义的结构返回结果。 2 4x q u e r y 的可选实现特性 x q u e r y 规范除了规定必须实现的特性外,还定义了一些可选的特性,这些 特性不会影响引擎的正常工作,但是对于提升性能,使用范围等有很大的影响, 现介绍如下: s c h e m a 导入。这个特点允许查询语句在p r o l o g 中包含s c h e m ai m p o r t 语句。 如果引擎不支持这个特性,在遇到s c h e m ai m p o r t 语句时必须报静态错误。 s c h e m a 校验。这个特点允许查询语句包含v a l i d a t e 表达式。如果引擎不支持 这个特性,在遇到v a l i d a t e 表达式时必须报静态错误。 静态类型分析。实现静态语义,在静态分析阶段检测类型信息并报告类型错 误。 模块。这个特性允许x q u e r y 语句在序言中包含m o d u l ei m p o r t 语句并创建模 块库。如果没有实现模块特性,那么每个x q u e r y 语句都仅包含一个主模块。 序列化。实现序列化特性的x q u e r y 弓i 擎必须提供将查询结果序列化的方法, 但不是所有的引擎实现都需要序列化,比如可以通过x m l a p i 提供对结果的访问 而不一定必须提供文本格式的数据。 2 5 本章小结 本章介绍t x q u e r y 查询语言的相关概念,介绍t x q u e r y 的两种类型系统 s c h e m a 类型和s e q u e n c e 类型,对其函数系统的分类做了说明,并介绍t x q u e r y 最具特性的表达式,最后介绍了几种可选的实现特性。对x q u e r y 规范定义的 x q u e r y 弓l 擎原型的结构做了初步的介绍,旨在为x q u e 巧引擎功能模块的划分奠 定基础。 l o 第三章总体设计 3 1 数据集成平台 第三章总体设计 3 1 1 数据集成平台的设计 为了确保框架的易用性、可扩展性,框架的设计紧紧围绕下列设计原则。 令透明性。数据集成属于中间件概念,以统一的方式访问分布、异构的数据源, 因此框架的透明性要体现对数据位置、存取方式的透明性和对数据类型的透 明性,屏蔽底层异构数据源的特性。 简化复杂性。提供统一调用接口,满足现有的规范、标准,利用标准的兼容 性减少复杂和耗时的点到点集成需求。 夺增加重用性。以前开发的服务可以被重复使用,实现了“一次组合,随处利 用”( c o l a ,c o m p o s eo n c el e v e r a g ea n y w h e r e ) 的高效性。将业务流程 从孤立、重复的流程转换为可高度利用、共享的服务。 从需求考虑,自下而上分析,首先需要对底层的异构数据做处理,选取x m l 作为标准数据格式,就需要各类数据源到x m l 数据的转换模块。其次需要 x q u e r y 引擎依据通过格式转换的各异构数据源和查询操作得到整合后的数据, 可以视为一个独立的功能模块。为了实现底层通用模块的重用,这里提出了数据 服务的概念,可以将这些通用模块封装为数据服务,可以基于e c l i p s e 平台实现 图形化的操作界面构造数据服务,便于用户使用,这部分包括查询语句的生成和 数据服务的发布。综上所述,框架可以分为三个层次:数据服务层,x m l 查询 引擎,异构数据支持,具体设计如图3 1 所示。 第三l 苴件设计 固固固固国国l 曰1 i 国i l 9l 图i 1 o i | i l 数据弹 3 1 2 数据服务层 图3 - 1 数据集成框架的设计 为了增加代码的可重用性,这里使用了数据服务的概念,它依据s o a 的思 想,将可能重用的某个查询功能模块抽象出来,作为一个数据服务,各服务之间 可以相互调用,这样既能增加结构清晰性,降低耦合性,增加重用性,又能在企 业业务流程做出调整的时候,较快的适应,避免资源的浪费。 数据服务层充当抽象层,它与底层资源通信,并从应用程序去除数据位置、 类型和管理,留下虚拟数据源。对应用程序开发人员而言,虚拟数据源意味着集 中于手边的数据问题,无需重写访问不同数据的管道。根据应用程序的需要,将 它逻辑分段,每一段表示为一个可被标准a p i 访问的“数据服务”。数据服务因 此成为一个很容易被其他开发人员和应用程序重用的接口。 数据服务是能够提供完整语义的一组数据访问操作的集合,在开发应用程序 时,将可重用的查询抽象出来,定义为数据服务来增加代码的重用性。 第三章总体设计 数据服务分为两种: 面向数据的数据服务,低层、用来整合数据源的,一般不发布为平台的客户 接口,可以称为物理服务。 面向用户的数据服务,高层、针对应用开发的,有一定意义,可对外发布为 服务,称为逻辑服务,它可以在物理服务的基础上进行组合,达到深化查询的目 的。 用来包装数据源的数据服务本身也可看作是一种数据源,可以用来屏蔽数据 源变化所带来的影响。 3 1 3x m l 引擎 本文的主要工作,将在本章第二节做详细的介绍。 3 1 4 异构数据支持 数据集成平台需要实现对底层的分布式、异构的数据源的访问,向上层提供 一个虚拟的x m l 视图,实现设计原则中的透明性。x m l 定义了结构化表达数 据的标准格式,可以对不同来源的异构数据进行描述,向上层提供透明无缝的数 据服务,其高度的灵活性和可扩展性能满足各种数据源的需要。 虚拟x m l 视图【1 9 是平台实现数据集成的关键,由于x q u e r y 的操作对象是 x q u e r y 规范定义的数据模型( d a t am o d e l ) ,数据首先要以结构化的形式定义, 才能得到相应的数据模型。因此要实现虚拟x m l 视图,就要完成异构数据到结 构化数据的转换,在框架中利用中介器( m e d i a t i o n ) 模型的思想,对异构数据 源实现各自的包装器,完成了这一转换。 虚拟x m l 视图是依据中介器( m e d i a t i o n ) 模型实现的,如图3 - 2 所示。 第三章总体设计 oo f = = = = e = = = = i l 数据源1il 数据源2l 、- - - _ i 一一、- _ _ 一一 结果 图3 2 中介器模型 图3 3 关系数据包装器的高层处理模型 中介器的原理是通过对不同数据源使用不同的包装器,达到各数据源统一输 出相同规范数据的目的。框架中针对异构的数据源实现相应的包装器,使其统一 输出x m l 格式的数据,从而实现了虚拟x m l 视图。 图3 3 是中介器原理的实现,关系数据包装器的高层处理模型【2 4 】。在此模型 中,包装器的作用相当于位于x q u e r y i ;i 擎和关系数据库系统之间的中间件,为 存储在关系数据库中的数据提供x m l 视图,建立现有系统的数据模型和x m l 文 档结构之间的语义模型。 3 2 x q u e r y 引擎的设计 按照w 3 c 的工作草案进行了x q u e r y 引擎的原型设计,包括x m l 解析及数 据模型的建立、s c h e m a 解析、x q u e r y 语句解析及建立语法树等几个部分,其中 客户端a p i 参照x q j 标准做出了部分实现,对x q u e r y 语法树加入了几种优化 方法,最终的x q u e r y 引擎的设计图如图3 - 4 所示。 1 4 凶 第三章总体设计 3 2 1 各模块功能介绍 图3 4x q u e r y 查询引擎结构图 客户端调用设计了两种方案:一、为了便于执行,设计了命令行调用执行引 擎的工具类c l i e n t j a v a ,它使用一些默认的参数设置,避免了一些通用的、重复 的参数设置,并提供一系列的命令行参数,供客户端设置。二、x q j a p i ,它是 x q u e r y a p if o rj a v a 得简写,它的定义参考了一些现有的j s r 规范,比如j d b c 。 它提供一系列类和接口对某个数据源执行x q u e r y 的表达式,支持相关的处理操 作,比如定义上下文、处理结果、管理类型等等。 x m l 文档解析模块的功能是将待查询的x m l 文档转换为查询处理器可识别 的格式,即x q u e r y 数据模型,同时依据s c h e m a 信息对数据模型中的节点加载 类型信息,同时这个模块也需要负责从数据模型到x m l 文档的转换,即查询结 果到输出的转换工作。 语法分析模块将x q u e r y 查询代码转换成抽象语法树,然后进行正规化和优 化操作,提供给执行器执行。 第三章总体设计 查询执行模块是x q u e r y 语句被执行并计算结构的模块,它的输入由两部分 组成:一是语法分析模块输出的语法树,二是x q u e r y 的数据模型。执行查询所 需的环境由动态运行环境和静态运行环境组成。 3 2 - 2 处理流程 本节将对图3 4 中的各个输入输出和处理模块按其流程逐一进行分析,以使对 整个系统的运行状态有一个总体的了解。 1 客户端提供三种输入:x m l 文档、x q u e r y 语句、x m ls c h e m a 文档。x m l 文档被交给x m l 数据模型构造器。x q u e r y 数据模型构造器同时将根据s c h e m a 解 析树和x m l 信息集构造出支持x q u e r y 查询的数据模型。该数据模型在x q u e r y 值 计算时被使用。x q u e r y 查询语句交给词法分析器和语法分析器。最终由语法分 析器输出一个x q u e r y 查询的语法树。这个语法树称为x q u e r y 语法树。 2 语法转换器得至u x q u e r y 语法树并在这颗树上进行语法转换,将x q u e r y 语 法树通过正规化转换为核心语法树。这里的语法转换是必须的,正如同编译执行 的程序需要产生中间代码一样。在这里产生的是中间代码的语法树。这个语法树 不是从语法分析得来的,而是由语法转换器直接转换来的。 3 语法转换器生成的核心语法树被交给静态类型检查和查询结果分析处理 器。这个步骤是可选的。x q u e r y 查询的类型声明被提交给类型说明处理器。在 那里,类型说明被分解为3 个部分:元素声明、属性声明和类型声明。他们分别 被存贮到静态运行环境中的元素声明环境、属性声明环境和类型声明环境。并且 该处理器在这三种声明的基础上构造出一棵类型环境树供静态类型检查使用。静 态类型检查和查询结果类型分析器根据己有的类型环境树和核心语法树进行类 型的检查和推导,得到一颗良构的核心语法树。 4 采取一定策略对2 或3 中得到的核心语法树作优化。通过正规化得到的核 心语法树语句变得相当复杂,主要原因是x q u e r y 语句大量的使用了操作符重载, 他们的语义取决于他们的操作数的类型,而核心语句运用的严格基于类型的操作 符。因此对其优化能极大提高引擎的效率。 5 在查询执行模块中将会有两个输入:步骤1 中得到的数据模型和步骤3 中 语法转换器输出的核心语法树,查询模块将在数据模型的基础上进行值的查找、 过滤和输出等操作,x q u e r y 弓f 擎实现为简单的逻辑优化的查询语句的解释器, 利用形式语义的值推导规则调用数据模型中节点的方法来执行具体的操作符。 1 6 第三章总体设计 3 3 本章小结 本章给出了详细的数据集成平台设计方案,介绍了数据服务的概念,描述了 数据服务的设计思路,如何屏蔽底层细节,利用它来实现组件重用。绘出了 x q u e r y 引擎的设计模型,将实现模型所需要的工作划分为几个模块,对各模块 的功能做了介绍,并查询语句的处理流程。提出用虚拟x m l 视图解决异构数据 集成的思路,使用中介器概念来实现这一思路。 1 7 第四章x q u e r y 引擎的实现 4 1 客户端的实现 第四章x q u e r y 引擎的实现 本节介绍调用引擎执行x q u e r y 查询的两种实现方式,首先说明命令行方式, 详细介绍了命令行参数及其功能,然后介绍了x q j f 3 8 】标准,给出了实 3 ) 蝴x q u e r y 引擎对x q j 标准中定义的核心接口实现的列表,并列出对应的实现类以及该接口 的简单的功能描述。 4 1 1 相关的命令行参数 为了便于执行,设计了命令行调用执行引擎的工具类c l i e n t j a v a ,它使用一 些默认的参数设置( 例如设置默认的序列化器) ,避免了一些通用的、重复的参 数设置,并提供一系列的命令行参数,供客户端设置。 1 系统设定: 一d o e c a c h e 2 输入输出相关: 一d o c b a s e - m o d b a s e - x i n p u t 一xo p t i o n = v a l u e o u t 4 1 2x q j g l o b a l 变量 将其后的变量置于x q u e r y 弓l 擎的$ a r g u m e n 神 定义解析文档的缓存的大小 定义需解析文档的所在目录 定义模块所在的u r i ,比如设置该参数为 h t t p :m y s e r v e r n e t x q m o d u l e s 在代码中声i 裴ji m p o r t m o d u l em o d l = ”m y a p p m o d u l e l ”那么实际的模块所 在也会解析为 h t t p :m y s e r v e r n e t x q m o d u l e s m y a p p m o d u l e1 x q m 定义一段x m l 文档作为输入 设置x m l 序列化参数 设置输出文档的名称( 默认输出到控制台) 它是x q u e r ya p i f o rj a v a t a s 的简写,x q j 定义接口来支持针对文档集合或单 个文档的查询。它共享j d b c 中的一些常用概念,例如支持事务处理、面向连 接的接口、预编译查询和参数查询等,它也支持对查询结果的处理。它提供系 第四章x q u e r y 引擎的实现 列类和接口对某个数据源执行x q u e r y 的表达式,支持相关的处理操作,比如定 义上下文、管理类型等等。 x q j 的规范还处在发展变化之中,因此仅对x q j 中的核心接口做了实现。 s q l 是被众多关系数据管理系统支持的查询语言,j d b c 是提供给应用程序向关 系数据库管理系统提交s q l 查询、处理查询结果的j a v aa p i ,而x q j 的最终实 现目标与x q u e r y 的关系就如同j d b c 对s q l 的关系。 实现的接口有: 接口名称实现类功能描述 x o c o n n e ct i o n x q c o n n e c t i o n l m p l通过它对资源进行访 问,x o u e r y 表达式的执 行以及结果的返回都是 在c o n n e c t i o n 的环境 中实现的 x o d y n a m i c c o nt e x td e f a u l t d y n a c o n t e x t动态运行环境的默认实 现 x o e x c e p tio nx q e x c e p t i o n编译及执行x q u e r y 查 询语句时所抛出异常的 超类 x o e x p r e s s i o nx q e x p r e s s i o n i m p l定义了执行x o u e r y 查 询语句的函数 x q i t e m b a s e v a l u e 用于实现) q u e r y 数据 模型中i t e m 的实现 x o i t e m t y p e a t o m ic t y p e ,n o d e t y p ei t e m 类型的超类 x o p r e p a r e d e x p r e s s i o nx q p r e p a r e d e x p r e s s i o n i m p l用于编译一次多次使用 的情况,可以使用动态 运行时环境中的变量绑 定查询语句中的参数 x q q u e r y e x c e p t io n x q q u e r y e x c e p t i o n 表示在查询执行期间报 的错误 x q r e s mt i t e mx q r e s u l t i t e m 表示使用g e t i t e m ( ) 函数从 x q r e s u lt s e q u e n c e 实例 中取得的不可变的i t e m 对象 第四章x q u e r y 引擎的实现 x q r e s u _ lt s e q u e n c e x q r e s u l t s e q u e n c e 表示一个查询的结果, 即一个i t e m 序列 x q s e q u e n c e t y p e定义了自己的接口x q t y p e表示s e q u e n c e 数据的 及实现类x q s e q u e n c e t y p e 类型 x q st at y c c o nt e x tm o d u l e 静态类型分析的上下文 环境 4 1 3 查询的示例 j a v ac l i e n t - d o c b a s ee :z e x a m p l e - o u to u t x m le :z _ e x a m p l e c a t a l o g x q u e r y 3 硝c a t a l o g x r n l 和c a t a l o g x q u e 巧依据x q u e r ) 佣例【4 】改写,具体代码见附录。 这条查询语句指定了可执行类c l i e n t j a v a ,一d o c b a s e 参数指定了查询文档所在的目 录e :ze x a m p l e ,o u t 参数指定了保存输出结果的文件名o u t x m l ,以及查询语句 所在的文档e :z _ e x a m p l e x m p _ 1 x q u e r y 。 在引擎实现后可以打包为x q u e r y e n g i n e j a r 执行语句为 j a v a - j a rx q u e r y e n g i n e j a r - d o c b a s ee :z _ e x a m p l e - o u to u t x m le :z _ _ e x a m p l e c a t a l o g x q u e r y 如果使用编程式调用引擎,示例代码如下: x q c o n n e c t i o nc o l l r l = x q s e r v e r g e t c o n n e c t i o n 0 ; x q e x p r e s s i o ne x p r = c o n n c r e a t e e x p r e s s i o n 0 ; e x p r b i n d i n t ( n e wq n a m e ( “x ”) ,21 ,n u l l ) ; x q s e q u e n c er e s u l t2e x p r e x e c u t e q u e r y ( “d e c l a r ev a r i a b l e $ xa sx s :i n t e g e re x t e r n a l ; f o r $ ii n $ xr e t u r n $ i ”) ; w h i l e ( r e s u l t n e x t 0 ) p r o c e s sr e s u l t s ) 2 0 第四章x q u e r y 引擎的实现 e x e c u t es o m eo t h e re x p r e s s i o no nt h es a n l eo b j e c t x q s e q u e n c er e s u l t = e x p r e x e c u t e q u e r y ( “f o r $ ii nd o c ( f o o x m l ) l e t u m $ i ) ; r e s u l t c l o s e o ;c l o s et h er e s u l t e x p r c l o s e o ; c o l i n c l o s e o ; 命令行调用的默认输出是控制台,用编程式调用的结果是x q s e q u e n c e ,可 以根据需要对结果做处理,得到需要的返回类型。 4 2x m l 文档解析 本节介绍了数据模型的概念以及引擎对于x m l 文档的解析方式以及解析 后数据的内部表示。结合一个具体的例子说明引擎对x m l 的解析流程,详细说 明了数据在解析过程中的表示方式,给出了示例文档对应的最终的数据模型。 4 2 1x q u e r y 数据模型 解析x m l 文档所得出的信息是由x m li n f o r m a t i o ns e t 标准定义的,以 i n f o r m a t i o ni t e m s 的形式表示,x m li n f o r m a t i o ns e t ( 也就是i n f o s e t ) 并不包含类型 信息,它只是数据描述的一种初级形式。x m ls h e m a 规范对i n f o s e t 做出了扩展, 即p s v i 。通过s c h e m a 校验,代表元素和属性的信息含有类型信息和规格化的值。 现有的x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化遗产保护与传承管理技术考试试题及答案
- 2025年文化创意产业经营管理实务试卷及答案
- 2025年文化创意产业策划师能力测验题目及答案
- 2025年未来城市规划与建设趋势探析试卷及答案
- 2025年网络营销推广经理职业技能评估考核试卷及答案
- 青海湟源中考数学试卷
- 祁阳今年高考数学试卷
- 南京统考数学试卷
- 绵阳初中一诊数学试卷
- 七年级声乐考试数学试卷
- 新疆维吾尔自治区国际创伤生命支持ITLS职业考试试卷与答案
- 水暖工三级安全教育题库
- 2025-2030中国阿胶市场营销规模及消费前景趋势预测报告
- 鼻咽恶性肿瘤放疗的护理讲课件
- 抢救车急救药品管理制度
- 2025年云南省中考化学试卷真题(含答案)
- 历史街区活化机制-洞察及研究
- 2025年的基层治理理论与实践考核试卷及答案
- 2025年江西省高考物理真题
- 外贸合伙人合同协议书
- 刑法说课课件
评论
0/150
提交评论