(计算机应用技术专业论文)xml数据在关系型数据库中存储方法的研究.pdf_第1页
(计算机应用技术专业论文)xml数据在关系型数据库中存储方法的研究.pdf_第2页
(计算机应用技术专业论文)xml数据在关系型数据库中存储方法的研究.pdf_第3页
(计算机应用技术专业论文)xml数据在关系型数据库中存储方法的研究.pdf_第4页
(计算机应用技术专业论文)xml数据在关系型数据库中存储方法的研究.pdf_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

山东大学硕士学位论文 摘要 本文介绍了x 虬语法的主要特点以及d t d 、s c h e m a 的使用;阐明了x 虬数据 在数据库中的存储方式:重点从三个角度讲述了x 札在关系数据库中的存储方 法:独立于模式的) m 几数据在关系数据库中的存储、基于啪的咀,数据在 关系数据库中的存储、基于x s d 的) 0 咀,数据在关系数据库中的存储,并分别提 出了自己的算法。其中本文作者提出的无模式的x m l 文档的存储方法p c o d e 方法采用了基于节点位置的节点编码方法,极大提高了基于路径的查询的性能; 本文作者提出的基于d t d 的咀。数据在关系数据库中的存储方法r - i n l i n i n g , 是对著名的 i y b r i d i n l i n i n g 方法的改进,该方法对d 1 m 图中+ 或+ 指向的叶节点 在关系数据库中的映射进行了更合理的处理,进一步提高了存储和查询的效率。 目前的基于x s d 的沮。数据在关系数据库中的存储方法往往忽略数据语义约束 的保留,本文详细地描述了x s d 所有数据语义约束在关系数据库中的映射。 关键词:) m 几关系型数据库d 1 ds c h e m a 映射 山东大学硕士学位论文 a b s t r a c t t h ec h a r a c t e r i s t i c so fs y n t a xo f la n da p p l i c a t i o no fd t d s c h e m a a r ei n t r o d u c e di nt h i st h e s i s : s t o r i n gm o d eo fx m ld a t ai nd a t a b a s ei s e x p o u n d e d : t h r e es t o r a g em e t h o d so fx m ld a t ai nr e l a t i o n a ld a t a b a s ea r e d e s c r i b e di nd e t a i l s :t h es t o r a g eo fs c h e m a i n d e p e n d e n t 埘ld a t ai n r e l a t i o n a ld a t a b a s e , s t o r a g em e t h o do fx m ld a t ab a s e do nd t da n ds t o r a g e m e t h o do fx m ld a t ab a s e do nx s d ;a n dt h ec o r r e s p o n d i n ga l g o r i t h m sa r e f i g u r e do u ti n d i v i d u a l l yb yt h ea u t h o r a m o n gt h ea b o v em e n t i o n e d a l g o r i t h m s , t h es t o r a g em e t h o df o rs c h e m a i n d e p e n d e n tx m lf i l e p c o d e a d o p t st h en o d ee n c o d i n gm e t h o db a s e do np a t h st h u sg r e a t l yi m p r o v e st h e c 印a b i l i t y o fq u e r y :t h e s t o r a g em e t h o df o r x m ld a t ab a s e d o n d t d - r i n l i n i n gi sa no p t i m i z a t i o no ft h ef 锄o u sh y b r i d i n l i n i n g w h i c h i m p r o v e st h ee f f i c i e n c yo fs t o r a g ea n dq u e r yd u et ot h ep r o p e rp r o c e s s i n g o ft h em a p p i n gf o r1 e a fn o d e sp o i n t e db y 术o r + i nd t dg r a p h w a d a y s s t o r a g em e t h o d so f ld a t ab a s e do nx s di nr e l a t i o n a ld a t a b a s eu s u a l l y i g n o r e st h er e s t r i c t i o n s , i nt h i st h e s i s ,t h em a p p i n gf o rr e s t r i c t i o n s i nx s di n t or e l a t i o n a ld a t a b a s ea r et h o r o u g h l yd e s c r i b e d k e y - o r d s x 儿r e l a t i o n a ld a t a b a s ed t ds c h e m a m a p 原创性声明和关于论文使用授权的说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明 的法律责任由本人承担。 论文作者签名:垂亟 日 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 保存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:董亟导师签名: 山东大学硕士学位论文 第一章引言 1 1 课题提出的意义 h t 扎对w 肼的蓬勃发展、信息的传递起了重要作用,但其本身存在许多局限 和不足,如它的标签主要是用来呈现网页的布局和外观,极度缺乏对数据的表达 能力,在商品信息转换为h t m l 格式、提供给客户时,原本建立在数据库中的重要 的信息架构将全部丢失。鉴于此,我们需要一个比h t 扎更好的方法。同h t m l 相比, ) 跚,具有更多的优越性,如格式简单、强大的数据表达能力、便于搜索弓i 擎的准 确定位、异质系统之间数据的传递等,它的出现,使互联网变成一个覆盖全球的 分布式数据库。 既然x 旺文档包含数据,那么就存在着如何查询及管理这些数据的问题。但 x 札在数据管理方面存在明显缺点。首先,煳l 技术采用的是基于文件的管理机制, 文件管理存在着容量大、管理困难的缺点;l 文档不适于处理较大规模的数据。 第二,目前煳l 数据的检索是基于节点的检索,存放大量甚至海量数据的x 虬文件 的检索速度极低;第三,解析手段有缺陷,蜈有两种解析机制,s a 】( 方式是基 于文件的解析,不能够随机访问) 眦文档,d o m 方式是基于内存的方式,资源消耗 大“1 ;第四,修改效率低,目前x m l 的修改是基于节点的;最后,x 虬的安全性及 并发操作机制也是需要解决的问题之一,显然,) 【m l 数据需要一种有效的存储、 检索和修改等方面的管理机制。 与儿相比,关系数据库在数据管理方面具有强大的优势:技术成熟、应用 广泛;数据管理能力强( 包括存储、检索、修改等) ;数据安全程度高:稳定可 靠的并发访问机制等。” 在w 曲信息共享及异构应用数据交换方面,儿具有其他技术无法比拟的优 点,在数据管理方面,关系型数据库具有明显优势,所以我们将很自然地想到: “以关系数据库为存贮手段,以儿为交换载体”的数据管理模式。尽管沮。 技术与传统关系数据库技术有一些相似之处,但差别还是很大的,如。采用 d 1 巾( d o c 啪e mt y p ed e f i i l i t i o n ,文档类型定义) 或血s c h 哪a ( x m l 架构) 来描 述数据的逻辑结构,关系数据则通过关系模式来描述数据的逻辑结构。因此,要 将) 几数据存储在关系数据库中,需要进行一系列复杂的转换工作,同样,要将 山东大学硕士学位论文 关系数据库中的数据以儿文档的形式表达出来,也需要做一些模式转换处理。 在x m l 文档和关系数据库之间实现数据的双向转换是x 虬技术应用研究的热点之 一。由于时间和精力所限,本文作者重点进行l 数据在关系型数据库中存储方 法的研究。 1 2 国内外研究的现状 在国外,】( i l 与关系数据库的相关技术己经引起了高校科研院所及商业数据 库公司的关注,其中有代表性的有美国s t a n f o r d 大学的l o r e 项目,l o r e 主要 的研发重点是为x 虬定义数据模型与查询语言,支持x m l 数据的存储与处理;还 有加拿大多伦多大学的x m l 搜索引攀t o x “3 ;法国国家信息与自动化研究院 ( i n r i a ) 的x y l e m e 计划的d y n 锄i cd a t aw a r e h o u s ef o rt h ex 札d a t ao ft h e w e b ( w e b 上x 虬数据的动态数据仓库) 项目”,该项目的设计目标是将互联网上 的所有x 札数据都整理装入x 虬数据仓库,数据量是t b 级。 国内相关研究则起始于新世纪之初,一些大学及有实力的软件公司、科研所 都进行了相关的研究。如因科公司的因科x m l 网关( i x g ) “成功实现x 肌和传 统关系数据库的实时转化和交互,以及x m l 文件和v o i c e x m l 、w m l 等之间的实时 自动翻译等:中科院软件研究所的x 札与关系数据库转换系统x t r a n s 也实现了 x 虬文档到关系数据库数据,以及从关系数据库数据到x m l 文档的双向转换。 目前,许多主流的数据库厂商如微软、o m c l e 、m m 和s y b 踮e 等都在把沮。 支持结合到其产品中,或者提供可在其数据库中使用帆的工具。这种方式很难 实现对传统关系数据的改造和继承,仅仅是提供了融合的途径。 在血与关系数据库映射转换研究中,由于血和关系数据库模式表示的语 义、结构关系的机制、方式不尽相同。如) m 几的d t d 描述有很强的自由度和表 现力,它们的数据语义约束信息在提取、映射、转换等方面的困难性,造成现有 ) m 几与关系数据库数据转换的映射算法存在缺陷。【刀大家往往仅考虑了数据结构 信息上的转换,却忽略了数据语义约束的保留。保留约束条件的模式转换还处于 研究阶段,还没有一种行之有效的方法。帆与关系数据库映射转换的语义完整 性,通用性,双向性及算法等都有待进一步研究。 山东大学硕士学位论文 1 3 本文主要研究的内容 本文的主要内容是:介绍了x 札语法的主要特点以及d t d 、s c h e m a 的使用: 阐明了x 札数据在数据库中的存储方式;重点从三个角度讲述了x i l 在关系数据 库中的存储方法:独立于模式的沮。数据在关系数据库中的存储、基于d 1 巾 的m 。数据在关系数据库中的存储、基于x s d 的沮。数据在关系数据库中的 存储,并分别提出了自己的算法。其中本文作者提出的无模式的咀。文档的存 储方法p c o d e 方法采用了基于路径的节点编码方法,极大提高了基于路径的查 询的性能;本文作者提出的基于d 田的咀。数据在关系数据库中的存储方法 r - i l l l i n i n g ,是对著名的i l y b r i ( i - i i l l i i l i n g 方法的改进,在该方法中对d t d 图中+ 或+ 指向的叶节点在关系数据库中的映射进行了更合理的处理,进一步提高了存 储和查询的效率。目前的基于x s d 的x m l 数据在关系数据库中的存储方法往往 忽略数据语义约束的保留,本文作者在第五章中详细地描述了x s d 所有数据语 义约束在关系数据库中的映射。 3 山东大学硕士学位论文 第二章x m l 及其存储 2 1x m l 概述 h t 地( h y p e r t e x tm a r k u pl a n “a g e ,超文本标记语言) 是基于 s g 札( s t a n d a r d l i z e dg e n e r a l r k u pl a n “a g e ,标准通用标记语言) 的众多语 言之一,h t m l 使用标记对信息进行编码,通过合适的工具( 通常是浏览器) 可以将 编码后的信息解析并显示出来。例如,为了让“p u r c h a s e0 r d e r ”以粗体显示 出来,达到强调的目的,可以用 标记将单词括起来,如下: p u r c h a s eo r d e r 同h t 肌一样,列l 也是基于s g 札的,也使用标记来编码信息。h t m l 与瑚l 的主 要不同之处是h t m l 标记提供了作用于数据的格式设置指令,而x m l 标记则描述了 数据自身的结构渊例如,一个x l l l 格式的订单文档可能会像下面这样: 2 0 0 1 0 1 一o l g r a e m em a l c 0 1 m 1 2 4 1 上面的订单文档中的o r d e r 元素有一个值为1 2 3 4 的o r d e r 属性,还包含下列 数据: 一个值为2 0 0 卜o 卜o l 的o r d e r d a t e 子元素 一个值为g r a e m e 蚍1 c 0 1 m 的c u s t e r 子元素 两个i t 锄子元素,每一个都含有一个p r o d u c t l d 子元素和一个q u a n t i t y 子 4 山东大学硕士学位论文 元素 x 地文档不包含格式信息,它只包含数据。这意味着x 扎解析器不需要理解儿 文档中标记的含义,它只需要能够发现标记并验证文档是x 虬文档即可。在x 札 文档中可以使用任何标记,因为解析器并不需要理解标记的含义。这就是) n 几中 的“x ”代表可扩展( e x t e n s i b l e ) 的原因( 可能“e 儿”不如“舭”容易记忆) 咖。 x 虬文档要想是格式正确的,必须符合如下规则: 元素和属性的名称可以由字母、数字和下划线字符组成,首字符必须是字 母或者下划线。 文档中必须只有一个惟一的根元素,包含了所有其他元素。 对于每一个起始标记,必须有一个结束标记与之相对应( 使用简洁语法的 空元素除外) 。 x l i l 标记区分大小写,因此起始标记与结束标记必须严格匹配。 根元素内的每个元素都必须嵌套在自己的父元素内。 同一个元素不能包含超过一个的同名属性,除非使用( n 锄e s p a c e ) 来限定 属性名( 下一节将讲述命名空间) 。 2 2x 札模式语言 x 扎模式语言就是用来定义删l 的词汇表和文档结构的语言。x m l 的一系列特 性如可扩展性、结构化和自描述性等都要用x m l 模式定义语言来体现。x l i l 模式语 言有:文档内容描述( d c d ) 、面向对象的删l 模式( s o x ) 、文档类型定义( d t d ) 、如r 、 x s d 等等“”。后三种模式定义语言是我们要介绍的。 2 2 1d t d 文档类型定义d 1 1 ) q d o c 啪朗tt y p ed e f i n i t i 0 i l s ) 定义了文档的逻辑结构,是描 述文档语法和语义的一种正式语法。它规定了文件中的元素命名,存放位置,组 合方式等。一个d 1 d 内嵌在咀。文档中,也可以是一个外部文件。d 1 d 用于定 义文档的语法,而文档的语法反过来能够让沮。语法分析程序确认某个页面标记 使用的合法性。【1 2 】d t d 定义页面的元素、元素的属性以及元素和属性之间的关系, 例如d t d 可规定某个表项只能在某个列表中使用。 山东大学硕士学位论文 2 2 1 1d t d 的特点 d t d 有不少缺陷:山1 1 ) d t d 是基于正则表达式的。描述能力有限: 2 ) d t d 没有数据类型的支持,在大多数应用环境下能力不足; 3 ) d t d 的约束定义能力不足,无法对l 实例文档做出更细致的语义限制, 如出现约束( 基数性) ? 、和+ 可以分别指定“零或一”、“零或多个”、“一 个或多个”,但很难表达“七到十二之间”: 4 ) d t d 不够结构化。 当然,使用d t d 也有好处,如可以利用大量成熟的d t d 工具,使得开发应用 代价维持在一个相对较低的水平。习惯使用d r r d 的人不必担心d t d 的落伍问题, 因为已经出现了若干d t d t o x 肌的s c h 锄a 转换工具如d t d 2 x s 叫1 ,d t d 2 x s 能把 复杂的d t d 转换成x m ls c h e 衄。基于以上原因,目前d t d 的使用者仍大有人在。 遇到以下情况时,我们仍要首选d t d :嘲 文档规则的简洁表示很重要。 希望下游用户能够通过内部参数集覆盖并将类型专门化。 文档规则主要考虑元素的嵌套而不是内容的语义约束。 惯常使用的工具支持d t d 胜于支持v 几s c h e m 。 2 2 1 2d t d 的语法 作为描述埘l 文档的一种模式,d t d 使用一种特殊的语法来声明出现在【l 文 档中的每个对象( 元素、属性等) 。元素声明采取 语句的形式,含有元 素的名称和它的内容模型,内容模型简单的列出了该元素可能的子元素,如下所 示。 6 山东大学硕士学位论文 如上所示,d t d 描述了一个置标语言的语法和词汇表,定义了文档的整体结 构以及文档的语法。图中 表示a r t i c l e 元 素由t i t l e 和a u t h o r 元素组成。计表a u t h o r 可以不出现,或出现多次。 2 2 2s c h e m a 2 2 2 1s c h e m a 的特点 相对于d t d 。s c h e m a 具有以下优点: ( 1 ) 一致性:s c h e m a 使得对) a 几的定义不必再利用一种特定的形式化的语言, 而是直接借助x 札自身的特性,利用x 札的基本语法规则来定义) 咖。文档的结构, 用户和开发者可以使用相同的工具来处理s c h e m 瘌其它x 札信息,而不必专门为 s c h 鲫a 使用特殊工具。 ( 2 ) 扩展性:s c h e 眦对d t d 进行了扩充,引入了数据类型、命名空间,从而使 其具备较强的可扩展性。 ( 3 ) 互换性:利用s c h e 岫,我们能够书写x m l 文档以及验证文档的合法性。另 外,通过特定的映射机制,还可以将不同的s c h e m a 进行转换,以实现更高层次的 数据交换。 ( 4 ) 规范性:但相比于d t d ,s c h e 舱基于l ,更具有规范性。利用元素的内容 和属性来定义x m l 文档的整体结构,如哪些元素可以出现在文档中、元素间的关 系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等。 但s c h e m a 也并非完美无缺,如: ( 1 ) s c h e m a 远比d t d 繁琐; ( 2 ) 尽管存在增强的表达方式,仍然有许多文档规则不能用s c h e m a 表示,即 s c h e m a 无法做到能够执行d t d 的所有操作: ( 3 ) 用于s c h e m a 的工具不如用于d t d 的工具成熟。 2 2 。2 2s c h e m a 的语法 最为正式的沮。s c h e m a 语言是由w 3 c 指定的s c h 锄a 规范,简称为 x s d ( 沮。s c h e m ad e 砌t i q n ) 。下面给出一个x s d 文件,并对其语法作一说明: 山东大学硕士学位论文 ( s c h e m ) 【r i l l n s _ ”h t i p :,、w w w 3 o r g 2 0 0 l 也s c h e r i l a ” x t l l i n s s i i f h t c p :欣w m i l io 喀c 蕊a n l e s p a c e s 塔m d 跖t l i s t ” t a f g e t n 锄e s p a c e = ”h 卸:,、w w n 1 o 唱c n ,n a m e s p a c 裙,s t u 出n t “s t ” 刊h l p l e x t y p e ( ,e l 哪e n t s i m p i e t y p en a m e :”像l d a t y p e i l e n u m e r a 矗o nv a l u e = ”男” l e n g 廿iv a l u e = ”3 ”卢 = 0 ) 个子元素或者文本节点。 如下所示的沮。片段,其模型树如图3 1 所示。 r a 曲u 钾i r s n l 锄e r a m 棚s h n a n 钆a 咖锄e | 氛洒a p j o h 觚n e s 删r s 仃l a m e g e h d 【e | 氏嗵b a p m c g r a w - 碰l le d u c a t i o n 删i s h e t 5 6 0 0 刮p r i c e 勺b o o k s 山东大学硕士学位论文 3 2 相关的研究 图3 一l ,一棵珊l 模型树 图3 2 :一棵硼l 模型树 按咀。数据的存储方式不同,无模式的沮。数据在关系数据库中的映射 方法主要有基于边的方法和基于节点的方法两种嘲。 文献【2 4 】提出了6 种方案来实现在关系型数据库中存储沮。数据:三种存 储边的方案:边表方法但电e ) 、二元方法i n a r y ) 、通用表方法m i v e r s a l1 曲l e ) , 两种存储节点值的方案:独立值表方法( s 印a 曲v 砒u et 曲l e ) 、内联方法 血l i l l i l i n 曲,还有一种方法是通用表方法的变种。由于篇幅所限,仅对e 电e 方法 进行讨论研究。 e d g e 方法将儿文档图中的所有边存在一张表中,简称为边表,边表的结 构为:e 电e ( u r c e o 蹦n a l ,n a i m ,f l a g ,t a r g e t ) 。其中,u r c e 和t a r g e t 为x m l 模 型树中每条边的源节点和目标节点的节点编号:o r d i i l a l 用来标记这条边是其 山东大学硕士学位论文 s o l 眦e 节点的第几条出边;n 锄e 是该边的名称,即该边指向的节点名,n a g 用“w ” 和“r e f ”两个值标记这条边指向的是也数据内容还是指向一个内部节点,当 指向的是) ( i 皿。数据内容,就把数据内容存在t a 玛e t 中,当指向的是内部节点, 就把节点编号存在t a r g e t 中。图3 - 2 中标明了各节点的编码,表3 - 1 是图3 - 2 对 应的e d g e 表。 e 如e 表 s o u r c e0 r d i n a ln a m e f l a g1 弛e t o1b o o k s 剐 j l 1b o o k 届矿 2 2ly e 盯v 缸2 0 0 2 22 p a g e v 甜6 6 6 23t i t l e v 址d b m s 24a u 血o r 届矿 6 6lg e n d e r 、j 址m 62f i r s m a n 培v a l r a 曲u 63l a s 恤a m er a m a k r i s h n a n 25a u m o r 叫 j 口 1 0l g e n d e rv mm 1 02f i r s m 锄ev 乱j o h 锄e s l o3l a s n l 锄e ( k h r k e 26p u h l i s h e r、,砒 m c g r a w - 琢l le d u c a t i o n 27p f i c e 5 6 o o l2b o o k 尺矿 j 6 表3 1e 电e 表 以表3 1 中的第8 行为例,该元组( 6 ,2 ,f i r s m a n 峙,v 砒,r a 曲u ) 对应了这样的信 息:以节点6 为源节点的边中的第2 条边指向节点f i r s 缸1 锄e ,f i r s 恤锄e 节点上 存放的值为“r a g h u ”。 e d 鐾e 表用一张表保存了皿。文档中的全部信息,有利于表的遍历操作,但 对查询操作后的) m 几数据重构带来了困难。由于) m 几数据查询是基于路径的, 而该模型没有直接提供路径信息,执行查询时只能通过连接操作将表中每条边连 1 4 山东大学硕士学位论文 接起来,以完成路径信息的判别,查询过程需要较大数量的连接操作,查询效率 不高,另外e 匙e 模型是一种单咀,文档模型,不适用于多) a 皿文档的存储。 下面将讨论本文作者提出的无模式的v 几文档的存储方法,一种基于节点 位置的咀。数据的存储方法p c o d e 方法。 3 3 基于节点位置的x 札数据的存储方法p c o d e 方法 3 3 1 映射关系表 将图3 1 所对应的模型树映射为p a m 表、d 啦表、x r n l d b c u m 锄t 表3 张关 系表,表的结构及记录内容如下: p a m 表 d o c p a t h i d p a t l i 】p 1 b o o k s l p 2 b o o k s ,b o o k lp 3 m o o k s b o o k 炮y e a r l p 4 仍o o k s 毋0 0 m 孕p a g e 1p 5b o o k s b o o k m d e 1p 6b o o k s 倍o o 从u t h o r 1p 7 愿o o k & 国o o k 缓u 吐1 0 饱g e n d e r 1p 8 b o o k s b o o “a u m o r 佰i r s n l 锄e 1p 9 ,b o o k s 甩o o l 【,a u m o 儿船恤a r n e 1p l o偈0 0 k s m o o k 肌b l i s h e r lp l lb o o k s ,b o o k p r i c e 表3 2p a l l l 表 p a m 表说明;将图3 1 中的每个节点的路径信息映射为表p 抽 ( d i o c d ,p 抽,p 翟l t l l ) ,d o c d 为咀,文档的代码,p a t h d 为位置代码,p 抽 为采用路径方式表达的节点位置。 e l e m e n t 表 d o c i de i e m e n t i dd a 协 l p l ( 1 ) 1 p 2 ( 1 ,1 ) l p 3 ( 1 ,1 ,1 ) 2 0 0 2 山东大学硕士学位论文 1 p 4 ( 1 ,l ,1 ) 6 6 6 l p 5 ( 1 ,l ,1 ) d b m s l p 6 ( 1 ,l ,1 ) 1 p 7 ( 1 ,l ,l ,1 ) m l p 8 ( 1 ,1 ,1 ,1 )r a 曲u 1 p 9 ( 1 ,l ,1 ,1 ) r a m a k r i s i i l l 锄 1 p 6 ( 1 ,l ,2 ) 1 p 7 ( 1 ,l ,2 ,1 ) m l p 8 ( 1 ,l ,2 ,1 ) j o h a n n e s l p 9 ( 1 ,l ,2 ,1 ) g e h r k e 1 p 1 0 ( 1 ,l ,1 ) m c g r a w h i l le d u c a l i o n l p 1 l ( 1 ,l ,1 ) 5 6 o o 表3 3d a t a 表 e l e m e n t 表说明;图3 1 中的所有数据节点的信息映射为表e l 啪t0 d 0 c , e l e m 饥t d ,d a t a ) ,其中d o c d 为v 皿文档的代码,e 1 e m e n t 为其所属节点的 编码媳2 ,d a t a 为数据的值。 此外,另设x l i l l d o c 砌e n t 表,用来存储沮。文档信息。 3 3 2 节点编码 本文采用了独特的节点编码。如图3 3 ,元素树中的节点都标有一个数字, 该数字表示这个节点是其父节点的第几个同名子节点。每个节点的编码即为到达 该节点的路径+ 元组,元组中的各个数值即为到达该节点的过程中经过的各节点 的下标。如表3 3 的第一行( 1 ,p 3 ( 1 ,1 ,1 ) ,2 0 0 2 ) 中的p 3 ( 1 ,l ,1 ) 表示:到达y e 盯节点 的路径为p 3 ,经过的b o o k s 、b o o k 、y e a r 节点的下标分别为1 、1 、1 。这种编码 方法大大提高了基于路径的查询的效率,尤其提高了包含节点顺序的查询的效 率。 1 6 山东大学硕士学位论文 固3 3 :节点带有下标的元素树 3 3 3 策略优点 ( 1 ) 可实现多个咀。文档在关系型数据库中的存储。 ( 2 ) 采用了基于路径的编码方法大大提高了套询的效率。 ( 3 ) 单独建表存储各节点路径信息,极大提高了基于路径的查询的性能。 3 4 两种映射方法的查询性能比较 3 4 1 测试环境 测试环境如表3 5 所示: x m l 解 c p u 内存硬盘操作系统r d m s测试集 析器 h t t d :w w w :i b i b l i oo 豫,b o s a k 唧 w i n d o w sx e r c 幅 x m l 绝彰s h a k e s 1o g2 5 6 m 4 0 g 2 0 0 0 s q l j a v a 2 0 0 五d a 小,锄o e d s e n ,e r p a r s e r( 解压后可得 h z2 0 0 0 s e r v e r2 0到3 7 个x m l 文件,共 7 5 3 m 、 表3 5 测试环境 山东大学硕士学位论文 3 4 2 实验系统设计 3 4 - 2 1 实验设计框架图 图3 4 :实验设计框架示意图 3 4 2 2x m l 存储转换 由于d o m 解析文件时读入整个文档,然后构建一个驻留内存的树结构,占 用的内存较多,导致其处理大型文件时性能下降;而s a x 是事件驱动型的帆 解析方式,它顺序读取x 蛐l 文件,不需要一次全部装载整个文件。因此本文中 的) m 儿文档的存储转换采用s a x 技术,主要通过重载s t a r 匝i e i r 煳t 0 、血l e m t o 和c h a 嘲朗s o 三个方法来实现瞄1 。s t a 庇l 锄跚t o 在读取元素开始标记时触发, c h 黼咖r s 0 方法在读取节点数据时候触发,铋d e l 锄e 1 1 t o 方法在读取元素结束标记 时触发,具体算法如下: s t 葺i r t e k 眦n t ( s t n gu 订,s t 血gl o c a l n a m e ,乳咖gq n a 哪,a t t d b u t e s a t t r i b u t e s l 如果p a m 表达式中最后一个元素的名称l o c a l n 帆e ,则 p a m = p a l l l + ,叩+ i o c a l n 锄e : 如果p a m 在p a m 表中不存在,则将p a m 存入p a t h 表中,p a m d 增加1 ,否 则从蹦1 表中得到p a t i l m ; 如果兄弟节点q n 锄f q n a m e ,则e l 锄锄t d = p a n l d ( 兄弟节点元组最后一 个数字加1 ) ;否则e l 锄卸) = p 甜l d ( 在父节点下标元组最后增添“,1 ”) ,否 e l 鲫t 入栈: 将e l 锄e n t 的相关信息写入e l e m 锄t 表: 若a 锄b i i t 岛非空,说明该元素含有属性节点,属性节点的处理方法与元素的 山东大学硕士学位论文 处理方法基本相同,只是在p a :i l l 表达式中的属性名前添加“ ”符号以示区别。 ) c h a 豫c t e 隅( c h a r 【lc h ,i n ts t a n i n tl 蛐g t h ) 收集元素的值; ) 蛐d e i e m e n “s t n gu r i ,s t n gl o c a l n 舢e ,s t n gq n a m e ) 将收集来的元素值存入e l e m e n t 表: 将e l e n 砖n t 作为兄弟节点暂时保存; 去掉p a m 表达式中的最后一个元素: e l e m e i l t 出栈; 3 4 2 3x m l 查询转化为s q l 查询 沮。查询转化为s q l 查询的方法有很多种,由于篇幅所限,在此不做讨论。 这里采用文献【2 6 】中的方法实现x p a m 到s q l 查询的转换, 3 4 2 4 查询数据库创建x m l 文档 建立表、数据存入表中及对数据库中的表进行查询均通过m b c 唧实现。 3 4 3 查询比较 这里对l 数据按照三种映射方法存储后的查询性能进行比较,本文准备 了七个查询实例,覆盖了咀。查询的不同方面,能够有效地验证咀,的查询。 如表3 6 所示: 山东大学硕士学位论文 x p a t h 表达式 各注 短路径查 查询l幢l n | e c 飞 询 长路径查 查询2h 。a w a c t y s c e n e s p e e c h 几d s 1 :a g e d t 询 带一个省 查询3,悠c e n e ,】硼e 略路径 带两个省 查询4| | 心1 | 疆m 畏?

温馨提示

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

评论

0/150

提交评论