XML文档的存储技术
(南开大学滨海学院 天津)
摘 要 XML及其相关技术日益渗透到计算机科学的各个层面,为了实现XML的潜能,XML的有效存
储是一个必须首要解决的技术环节。本文综述XML数据在关系数据库、对象数据库及原生数据库中的存储,并对这些存储方法进行了评述。
关键词 XML;模式映射;对象数据库;原生数据库 A Survey of Techniques for Storing XML Documents
Dong Huanzhi
(Computer Center Inner Mongolia University Science and Technology BaoTou 014010)
Abstract XML and related technology has obviously affected almost every field of computer science. To realize
XML potential,its effective storage is firstly faced technology. This paper introduces XML storage with database system and native database as well as makes comments upon these approaches.
Keywords XML;schema mapping;object-oriented database;native XML database
1 引言
XML(Extensible Markup Language)已发展成为WEB上数据描述和交换的标准。为实现XML在数据管理、交换与共享中的潜能,XML的有效存储是一个必须首先要解决的技术环节。按数据存储系统的不同,大体可分为如下3种方案:(1)在文件系统中的文本文件方式存储XML;(2)在数据库系统(关系或对象数据库)中存储XML;(3)开发XML专用库(XML Native Database)的所谓“自然”方式存储XML。本文主要讨论XML在关系、对象以及专用数据库中的存储。
2.XML在关系数据库中的存储
XML关系存储的核心是XML文档到RDB(Relational Database)的模式映射(Schema mapping)方法。XML与RDB在语法、结构与约束的众多方面均存在许多异构性。本文介绍了两种典型的XML-RDB的模式映射方法。
2.1 XML文档及其模式
XML数据的组织单位是XML文档。一个XML文档是由元素组成的,元素用标记来标识与 界定。一个元素又可以包含内容、嵌套若干个有序的子元素,元素还可以拥有若干个无序的属性(如图1所示)。从文档管理的角度来看,XML是一种结构化文档标记语言;从数据的角度来说,XML是通过语义标记来说明数据的语义(如图1中,标记
XML具有可扩展性,即XML文档中的标记可以由开发者自己定义,用来定义这些标记、XML文档结构以及语法的语言就是XML文档模式语言。至今已经提出多种XML文档模式语言,如DTD、XML Schema、XDR、SOX、DSD等。其中,DTD(document type definition)是最早也是最成熟XML文档模式语言(如图2就是图1的DTD),它定义了一套规则去控制XML文档的结构(即决定存在哪些元素和属性,它们在何地出现,出现多少次,元素如何嵌套,元素和属性如何结合等问题)。DTD既可被指定为一个文件与XML主文档分开,称为外部(external)DTD;也可包含在XML文档内部,称为内部(internal)DTD。一个XML文档具有相关的DTD,文档的元素符合DTD中定义的规则,该文档视为有效的(valid);一个XML文档也可不带DTD,但符合XML语法,该文档视为格式正确的(wellformed)。
图1 XML文档
图2 DTD文档
2.2 典型的XML-RDB模式映射方法
目前,XML-RDB的典型映射方法有两类:(1)用固定的RDB模式存储XML数据:定义固定的关系模式直接存储XML半结构化实例数据;(2)从文档模式定义导出RDB模式:对XML文档模式定义中的语法进行分析、简化、转换,产生关系模式。
2.2.1 用固定的RDB模式存储XML数据
该映射把XML文档模型化成一个有序的带标记的有向图(如图3是图1的有向图)。在图中,每一个XML元素用带有标识符id的结点表示,元素与子元素的关系用子元素的名字命名的有向边来表示,每一结点的出边都是有序的,叶子结点表示属性值或元素值。 该技术共有 6 种映射方法,即3种存储边的方法和2种存储叶子方法的组合。 2.2.1.1 映射边 (1) 边方法:存储图中所有的边存放在一张称为边表的表中。表的结构:Edge (source , ordinal , name , flag , target),其中source表示边起点对象的ID,ordinal表示边的顺序号,name表示边名,flag表示标记边是否指向叶结点,target表示边的目标对象的ID。表的主键是 (source ,ordinal)。
(2) 二元方法:存储所有同名的边到一张表中。表结构:Aname (source , ordinal ,flag , target) (各参数意义及主键同前)
(3) 通用表:用一张统一的表存储所有的边,相当于外连接所有的 Attribute表。表的结构:Universal ( source,ordinaln1 , flagn1 , targetn1 ,ordinaln2 ,flagn2 ,targetn2 ,. . ),其中,n1,n2 ?为边名。
2.2.1.2 映射值
(1) 单独值表:为每一数据类型建立一张单独的表 ,称之为值表。表结构为:Vtype(id , value)其中type表示数据类型,id表示由映射自动产生的叶结点的标记。
(2) 内联方法:值和边存储在一张表中。由于需要为每一不同的数据类型建立一列,从而表中存在许多空值。
从映射生成的RDB数据库的大小、重构XML文档所需的时间、执行不同的XML 查询等方面对六种方案进行比较分析,发现二元法和内联方法相结合是最优的映射方案。
该技术有利于存储那些没有文档模式的XML文档 ,不需要用户参与映射过程 ,该方法也比较简单,对于任何XML文档都映射生成一个固定的关系模式,不过生成的关系模式不是数量众多,包含大量的空值,就是在查询时需要执行大量的连接操作。
图3 XML文档的有向图
2.2.2 从文档模式定义导出RDB模式
映射首先对DTD进行简化,然后将DTD表示为DTD图(如图4为图2的DTD图,其中结点代表元素、属性和操作符,边表示父子关系,且每一元素在图中仅出现一次,属性和操作符出现次数与在DTD中相同),然后依据 DTD 图并利用如下两种技术建立关系模式。 (1) 共享内联技术:为DTD图中入度大于1或等于0的元素节点(如:purch_order)建立关系,入度等于1的元素节点(儿子节点为“*”的节点除外,如itemlist)内联到其它元素关系中(如:add内联到customer),“*”的儿子元素节点(如item)单独建立关系,相互递归的元素节点选择其中之一单独建立关系;(2)混合内联技术:它在上述技术的基础上进行了改进,将DTD图中节点入度大于1、但不递归、不经过“*”到达的节点元素内联到其它元素中。所有的关系都由映射自动赋予id属性,非根元素对应的关系都有parentid属性(parentid是外键,指向父元素),且存在order列指明元素在兄弟元素中的顺序。
从文档模式推导出关系模式最大的不利在于它无法处理没有文档模式的XML文档,而且现实中的文档模式是非常复杂的,该技术只能在对文档模式做了一些简化工作之后,才能推导出关系模式。
图4 DTD图
2.3 关系数据库对XML数据进行存储的优劣
关系型数据库具有完备的并发、事务和安全控制,同时也是应用最普及、用户最熟悉的一种数据库,在现有的关系型数据库上存储XML文档能保留已建立的应用成果。但作为完全结构化的模型,关系型数据库仍然不太擅长于层次化的数据,同时由于增加了XML Schema和数据库的映射,因此处理XML的性能相对于Native-XML数据库有所下降。
3. XML在对象数据库中的存储 3.1 面向对象的数据库
数据源内容如下:
姓名 王涛 龚华 童童 准考证号 200440070101 200440070102 200440070103 笔试 75 78 87 机试 80 78 88 总成绩 合格 合格 优秀 面向对象的数据库OODB(Object-Oriented Database)中,最基本的概念是对象。任何一个系统是由若干个对象和这些对象间的相互作用构成,其中对象由数据和操作两部分组成。对象具有自主性、封装性和动态性。对象可以是现实世界中任何有意义的实体,每个对象有一个唯一的对象标识OID(Object Identifier);具有相同结构和行为的对象组成类,类中每个对象为类的一个实例。
面向对象的概念可作为建立复杂数据库和程序的基础,其封装和继承这些现象对象的概念隐含着强有力的数据类型设施;面向对象的方法可自然地表示嵌套对象,很容易表达层次数据,还可以方便地构造各种数据类型。面向对象概念的引入使OODB系统解决了以下两个基本问题:
(1) 支持核心的面向对象数据模型和诸如封装性、继承性、多态性等性质。
(2) 扩充传统数据库的语义、语法,使OODB与面向对象数据模型融合,成为独立于应 用程序的新型数据服务手段。
3.2 对象数据库中XML的存储结构
相关推荐: