第7章《XML与数据库》_第1页
第7章《XML与数据库》_第2页
第7章《XML与数据库》_第3页
第7章《XML与数据库》_第4页
第7章《XML与数据库》_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、7. XML 与数据库nXML 作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性。因此在 XML 应用中,数据库作为数据管理的位置依然没有改变。n管理 XML 数据的方式主要有:传统的关系( 或 者 对 象 ) 数 据 库 、 中 间 件 和 N X D(Native XML Database)。从技术角度讲,“以数据库(关系型数据库、对象数据库或者是 NXD)为存贮手段,以 XML 为交换载体”的数据管理模式是一种趋势。 7.1 XML 与关系数据库之间的关系 nXML 结构比关系型数据库中所使用的关系更有表现力、更加容易表示和描述复杂的对象。但这也给 XML 数据在关系数据

2、库中的存储、查询和更新带来了困难。 7.1.1 XML 数据的存储和管理方式 n使用CHAR、VARCHAR 或者 CLOB、BLOB 存储 XML;n将 XML 数据分解并映射到关系表中进行存储;n纯 XML 数据的存储和管理。n混合方式的数据存储和管理;使用CHAR、VARCHAR 或者 CLOB、BLOB 存储 XML(优点)n可以在关系表中专门设置一个 CHAR、VARCHAR 或 CLOB、BLOB 大对象列来存储 XML 数据,通常将这种方法称为“Stuffing”。 n可以对层次结构的 XML 数据进行原封不动地保存,不需要将其中的内容分解并映射到关系表(一个或多个)的多个常规列

3、中进行保存。 n在获取所存储的 XML 数据时,无论是查询语句的编写还是具体检索过程也都非常简单,能够保证查询的结果与源文档完全一样(Round-Trip),而不需要在关系数据库管理系统中进行复杂的连接运算,因为存储时并没有对源 XML 文档中的数据进行分解。 使用CHAR、VARCHAR 或者 CLOB、BLOB 存储 XML(缺点)nCHAR、VARCHAR 或者 CLOB、BLOB 大对象数据类型并不是专门针对 XML 数据设计的,存在着明显的缺点和局限性。n在对文档进行搜索和查询检索时,开销非常大,因为其中可能保存数 GB 的数据内容,如果仅搜索整个 XML 文档中的少部分内容(特定的

4、元素、属性或子树)、或者查询任务需要频繁执行时,那么开销将显得更加突出。n需要设计新的索引技术提高查询检索的效率;n大对象的更新操作也非常耗时,因为数据库并没有对大对象数据进行任何解析,即使修改其中很少的内容,也必须更新所有的数据。 将 XML 数据分解并映射到关系表中进行存储(优点)n可以将 XML 文档中的数据(元素和属性)分解并映射到关系表(一个或多个)的多个常规列中进行保存(通常将这种方法称为“Shredding”),从而解决前面所描述的、使用大对象存储 XML 数据时碰到的检索和更新的效率问题。nXML 数据中所蕴含的层次关系在分解时必须采用适当的机制予以保存,以便能够在查询检索之后

5、,重新构造出与源 XML 文档基本一致的数据。n仅使用关系模型,用户可以利用现有的 SQL 工具和代码来直接访问数据库表中存储的信息,而不需要学习新的层次数据的查询语言、以及相关技术,也不需要引入新的索引机制来处理 XML 数据。 将 XML 数据分解并映射到关系表中进行存储(缺点)nXML 数据中包含了大量嵌套关系、以及一些无规则的结构,在对其进行分解存储时,会产生大量的数据库表,并且表与表之间存在复杂的参照关系(通过主键和外键的关系来保存 XML 数据之间的层次关系),还可能会使得关系表的规范化难以进行、或者导致关系数据库表中出现大量的空值,这些都增加了数据管理的复杂度。 n在进行查询检索

6、时,一方面需要编写复杂的 SQL 查询计划(难以开发、以及对其进行优化),以访问分散的数据;另一方面,在执行查询计划时,需要访问大量的数据库表,并进行非常耗时的连接操作,以恢复分解之前数据之间的层次关系,这将使得查询的效率非常低下。 纯 XML 数据的存储和管理 (优点)n要想真正实现 XML 数据的高效存储和管理,就必须摆脱关系模型的约束和束缚,设计并实现层次数据库。n以层次的格式来存储层次的 XML 数据(以元素或子树为单位,而不是关系数据库中的表或记录),提供新的查询语言(XQuery),引入新的索引机制(值索引、路径索引),从而避免将层次数据模型映射为关系数据模型所带来的性能、模式管理

7、等方面的问题。 本源 XML 数据库nNXD(Native XML Database)打破了 RDBMS 传统数据库一统天下的局面,国外一些机构和公司针对XD 进行了深入地研究开发。NXD 从存储、索引、查询等,都围绕 XML 的特点和标准进行设计。n它没有像关系数据库方法那样繁琐的数据转换,又具有中间件所不具有的数据管理功能,如并发控制、备份和恢复等。 纯 XML 数据的存储和管理 (缺点)nNXD 的发展也遇到了一些困难,因为无法利用现有的关系数据库中所提供的数据存储、管理、索引、优化、事务处理等成熟的技术,所以必须进行彻底的开发;nXML 数据库的理论基础并不像关系数据库理论那么成熟,X

8、ML 的相关标准也在不断地发展和完善之中。n如何实现遗留的关系数据库和 NXD 之间的数据整合,也是 NXD 在实际应用过程中所面临的一个挑战。混合方式的数据存储和管理(优点)n为了更好地解决 XML 层次数据的存储和管理、以及与现有关系数据的整合,一些主流的关系数据库厂商开始进行混合数据库管理系统的开发和研究。n在 RDBMS 系统中同时提供关系模型和层次模型,分别实现对关系数据和 XML 数据的存储和管理。同时使用 SQL 和 XQuery 两种查询语言,并利用现有的机制实现可扩展性、高可靠性、并发性等特征。设计新的索引、存储、检索技术,支持对 XML 数据模式的管理、XML 数据的有效性

9、验证。 7.1.2 XML 数据存储管理的要求 n需要为 XML 数据的处理和访问提供下列支持: q查询功能 q为 XML 数据创建索引 q数据修改功能 q模式支持 7.2 SQL Server 2005 中的 XML 支持 nSQL Server 2005 中,为 XML 数据的存储和处理提供了广泛支持:q引入 xml 数据类型 q支持无类型和有类型的 XML 数据q可以为 XML 列创建索引q xml 数据类型方法(五种)演示n xml data-type.sqlnxml data-type-method.sqlnfor xml raw.sqlnfor xml auto.sqlnfor x

10、ml path.sqlnopen xml 1.sql7.3 DB2 V9 中的 pureXML(1) n存储方面:混合型模型将 XML 数据存储在经过解析的 DOM 树模型中。DB2 的 pureXML 技术以节点和子树(而非文档级)的粒度存储 XML。在数据库中,物理存储层的主要存储单元是节点。每一页中至少存在一个节点,而其它的节点则来自相同或不同的文档。每个节点中保存了到父节点和子节点的连接。因此,在进行层次遍历或者结构连接操作时,效率都非常高。可以在不更新整个文档的前提下,增加、减少、或修改节点,并将节点重新存储到其它的页中。pureXML 技术所提供的 XML 数据的底层存储支持,使得

11、 DB2 能够更有效地处理 XML 层次数据。DB2 V9 中的 pureXML(2)n索引方面:XML 数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。DB2 支持在 XML 列上建立路径特定的索引,因此元素和属性常用作谓词且可以编制跨文档连接的索引。从而高效地管理海量 XML 文档、提供高查询性能。DB2 还通过 Net Search Extender 为 XML 数据提供全文检索的支持,可以对完整的或者部分文档建立全文索引。n查询方面:DB2 为 XML 数据的检索提供了全面的支持,包括使用常规 SQL、SQL/XML、XQuery、以及嵌入 SQL 的 XQuery,

12、以实现层次数据的查询、更新,实现关系数据和层次数据的集成。 pureXML 的混合数据管理模式 7.3.1 DB2 V9 中 XML 数据存储的支持 n采用 xml 数据类型的数据列进行存储q以 XML 文档的节点和子树为单位进行存储,不同于字符串类型的是,数据以 XML 内容的内部表示形式进行存储,XML 内容包括包容层次结构、文档顺序、元素和属性值等。所有 XML 数据都存储在使用 UTF-8 代码集的数据库中。 n使用大对象进行存储n使用关系数据库表进行存储 q带注释的 XML 模式分解 xml 数据类型的应用 CREATE TABLE classes(id INTEGER NOT NU

13、LL, details XML);insert into classes values(1, XMLPARSE ( DOCUMENTZhangTao70ZhaoFan80);insert into classes values(2, XMLPARSE ( DOCUMENTXiaoWang75XiaoMa80); XQUERY db2-fn:xmlcolumn(CLASSES.DETAILS)/name;将得到所有的 name 元素:ZhangTaoZhaoFanXiaoWangXiaoMaXQUERY for $stu in db2-fn:xmlcolumn(CLASSES.DETAILS)/

14、student return $stu/name; XQUERY db2-fn:sqlquery(select details from classes where id = 2)/name; 在 XSR 中注册 XML Schema 以支持数据验证 n在验证之前,必须向内置 XML 模式存储库(XSR)注册 XML 模式。 n可以使用REGISTER XMLSCHEMA命令在 XSR 中注册模式文档。nXML 模式就可用于进行验证。验证通常在 INSERT 或 UPDATE 操作期间执行,可以使用 XMLVALIDATE 函数执行验证。仅当验证成功时,才会继续进行 INSERT 或 UPDA

15、TE 操作。 DB2 V9 中数据查询的几种方法 n常规 SQL 查询:只能在 XML 列级别进行查询,只能返回整个 XML 文档。比如 select details from classesn仅 XQuery:只能访问 XML 数据,而无法查询非 XML 关系数据。n嵌入 SQL 的 XQuery:可以查询 XML 数据和关系数据;可以在查询中利用对关系列定义的 SQL 谓词和索引;可以针对用户自定义函数返回的结果进行查询(因为不能直接通过 XQuery 调用这些 UDF);可以针对使用 SQL/XML 发布函数通过关系数据构造的 XML 值进行查询。DB2 V9 中的 SQL/XML nX

16、MLQUERY 函数函数qXMLQUERY 函数用于在 SQL 查询中嵌入 XQuery 查询。 nXMLEXISTS 函数函数qXMLEXISTS 函数用于测试一个 XQuery 表达式是否可以返回包含一个或多个元素的序列,如果其中的 XQuery 表达式所返回的序列为空,那么 XMLEXISTS 函数将返回 false,否则返回 true。nXMLTABLE 函数函数qSQL/XML 中的 XMLTABLE 函数可以根据 XQuery 表达式返回行集。 XMLQUERY 函数函数SELECT id, XMLCAST(XMLQUERY(for $stuname in $d/students/

17、student1/name/text() return $stunamepassing classes.details as d) AS VARCHAR(20) as firstone FROM classes;idfisrtone1ZhangTao2XiaoWang1ZhangTao2XiaoWangXMLEXISTS 函数函数 SELECT id FROM classesWHERE xmlexists($i/namecontains(.,Wang) passing classes.details as i);XMLTABLE 函数函数 SELECT id, name, gpaFROM cl

18、asses, XMLTABLE(for $stu in $d/student return $stu passing classes.details as dCOLUMNS name VARCHAR(20) path name/text(),gpa VARCHAR(20) path gpa/text() as studentidnamegpa1ZhangTao701ZhaoFan802XiaoWang752XiaoMa80用于发布用于发布 XML 数据的各种数据的各种 SQL/XML 函数函数 函数名称描述XMLAGG返回一个 XML 序列,包含表示 XML 值集中的每个非空值的项。 XMLE

19、LEMENT返回作为 XML 元素节点的 XML 值。XMLATTRIBUTES通过自变量构造 XML 属性。此函数只能用作 XMLELEMENT 函数的自变量。XMLDOCUMENT返回具有单个 XQuery 文档节点的 XML 值,该文档节点有一个或多个子节点。此函数创建一个文档节点,根据定义,每个 XML 文档都必须有一个文档节点。文档节点在序列化的 XML 表示中不可视,但是,要存储在 DB2 表中的每个文档必须包含文档节点。XMLTEXT返回具有单个 文本节点的 XML 值,该文本节点将输入自变量作为内容。XMLPI返回具有单个 处理指示信息节点的 XML 值。XMLCOMMENT返回具有单个 注释节点的 XML 值,该注释节点将输入自变量作为内容。XMLNAMESPACES通过自变量构造名称空间声明。此声明只能用作 XMLELEMENT、XMLFOREST 和 XMLTABLE 函数的自变量。XMLCONCAT 返回一个序列,它包含很多 X

温馨提示

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

评论

0/150

提交评论