DB2 Version 9.5 pureXML的增强和新特性(一)

 
   | |

导读:本文主要介绍DB2 9XML支持概述、DB2 V9.5的新特性、支持在非Unicode数据库中使用XML以及对基础表行存储/压缩等方面的介绍。

关键词:DB2 Version 9.5 pureXML DB2的增强和新特性

正在加载数据...

DB2 9XML支持概述

DB2 9引入了原生XML数据类型。它将XML存储为一种经过解析的分层(原生)格式,并允许用户使用XQuery和SQL/XML语言查询数据。DB2XQuery表达式将存储在DB2数据库中的XML文档用作XML的查询源。函数xmlcolumn和sqlquery用来连接存储在数据库中的XML值,并为XQuery解析器提供XML序列。

除了XQuery语言,DB2 9还提供了SQL/XML函数在单个查询中同时处理XML数据和关系数据。SQL/XML函数xmlquery、xmltable和xmlexists有助于将XQuery嵌入到SQL语句中。

DB2 9还支持模式验证。它引入了新的命令和存储过程,用于将模式注册到数据库并充当数据库对象。在插入操作之前或之后,可以用xmlvalidate函数根据已注册的模式验证XML值。也可以对模式进行注释,以便于将XML数据分解为关系表。诸如xmlelement、xmlattributes等发布函数可用来将关系值转换为XML文档。DB2 9也针对XML数据支持对一些实用工具(导入、导出等等)进行了更新。更多关于Version9中的XML支持请参见参考资料部分。

DB2 V9.5的新特性

在处理XML数据方面,现有的DB2 9功能非常强大。DB2 V9.5增强了一些现有特性并引入了其他功能,以使XML处理更加强大和高效。下面是本文将要讨论的功能列表:

◆支持在非Unicode数据库中使用XML

◆子文档更新

◆基础表存储/压缩

◆兼容的XML模式演化

◆验证触发器

◆验证检查约束

◆XML复制

◆XML联合

◆XML载入

◆sqlquery()参数

◆用户友好的发布函数

◆SQL/XML函数的默认参数传递

◆XSLT函数

◆XML分解增强

◆XML索引增强

◆索引顾问程序(Indexadvisor)和优化器增强

◆DB2DataWeb服务

以下小节的大多数代码示例都基于DB2 V9.5示例数据库。可以从DB2 V9.5命令行处理器运行db2sampl命令来创建示例数据库。也可以通过firststep来创建。firststep是DB2提供的一个工具,在安装了DB2之后就会执行,也可以在以后通过在Windows中选择Start>AllPrograms>IBMDB2>db2copyname>Setuptools>firststeps来执行。

支持在非Unicode数据库中使用XML

DB2 9只允许用户使用UTF-8代码页创建包含XML数据的数据库。这意味着,即使XML文档中的值是ASCII格式的,也需要存储到UTF-8格式的数据库中。DB2 V9.5去掉了这个限制,并且允许用户用任意代码集创建包含XML列的数据库。由于去掉了这个限制,即使数据库不是用UTF-8格式创建的,用户也可以更改一个表以添加XML列,或者创建一个包含XML列的新表。

以下代码创建了一个示例数据库和包含一个XML列的示例表:

清单1.使用默认代码页的数据库


db2 CREATE DATABASE sampledb
db2 CONNECT TO sampledb
db2 CREATE TABLE record(id INT, record XML)
子文档更新

DB2 V9.5允许用户更新存储在数据库中的XML文档的一部分。它引入了XQuerytransform表达式,该表达式使用4个更新表达式—— insert、delete、replace和rename来修改XML文档片段。transform表达式是XQuery语言的一部分,因此可以用在 XQuery表达式中。对于DB2 V9.5,一个transform表达式中只能使用一个更新表达式。一个transform表达式有以下子句:
◆COPY:transform表达式的copy子句将源XML值绑定到一个变量。更新表达式将会在查询中对该副本进行处理。

◆MODIFY:modify子句根据更新表达式修改复制的XML值。在MODIFY子句中可以使用多个更新表达式。

◆return:return子句返回修改后的值。

下面将解释这4个更新表达式:

1.insert表达式将一个新的XML节点插入到现有XML文档中。可以在XML文档指定插入的位置.

2.replace表达式用来更新特定节点的特定值。

3.delete表达式用来从XML文档删除特定节点。

4.rename表达式用来对节点进行重命名。

由于transform表达式是XQuery语言的一部分,因此可以在包含xmlquery函数的SQL语句中使用它,也可以用于更新语句来更新XML值。

清单2中的代码更新了示例数据库中customer表的info列。它更新XML文档以使用cid关系列的值匹配CID属性。

清单2.更新表的transform表达式


UPDATE CUSTOMER
SET info =
XMLQUERY('transform
copy  $po := $INFO
modify
do replace value of $po/customerinfo/@Cid  with $CID
return  $po'
passing info as "INFO", cid as "CID")
WHERE cid=1000

如果在表的XML列上存在XML验证检查约束,在手动更新或者通过触发器更新之前,用户可能需要验证新的XML值。

以下代码示例从purchaseorder表中删除一个条目,并将修改后的文档作为查询结果。

清单3.transform表达式


xquery
transform
copy
$po := db2-fn:sqlquery(‘select porder from purchaseorder where
custid = 1002 and orderdate=“2006-02-18”’)
modify
do  delete $po/ PurchaseOrder/item[partid = “100-201-01”]
return  $po

示例xupdate.db2给出了transform表达式的不同例子。可以在sqllib/samples/xml/xquery/clp目录下找到此示例。

基础表行存储/压缩

在DB2 9中,XML数据和关系数据存储在不同的位置。这个存储位置称作XML数据区域(XMLdataarea,XDA)。DB2 9将所有XML文档存储在这个存储位置,这意味着访问XML值和关系数据需要更多I/O。如果XML文档较小,而且在存储关系值之后页面大小仍足够容纳XML值,那么将XML存储在相同的页面能够提供不错的性能收益。这些收益包括:

压缩:因为XML数据和关系数据存储在一起,因此可以使用DB2 9中引入的压缩技术对XML数据进行压缩。由于XML值比关系数据大,所以可以获得较高程度的压缩。

查询性能:由于XML数据和关系数据存储在相同位置,因此直接插入XML数据使得基础表比一般情况下要大。如果XML数据的访问频率与表中的其他关系值相当,那么这将提高查询数据的性能。

DB2 V9.5引入了XML数据的基础表行存储。这意味着如果每行的关系数据和XML数据的总大小没有超过1页面的大小,这两种数据就可以存储在相同的物理页面。只有当一个记录的总大小没有超过页面大小时,才能够对XML数据进行基础表行存储。如果是这样,XML数据就会像通常一样存储在XML存储位置。DB2中允许的页面最大值为32KB,因此一个XML值的最大插入长度也被限制到32KB。如果文档的内部树表示的大小比指定的插入长度小,它们将会被插入。清单4中的代码所创建的表可以对XML数据进行基础表行存储:

清单4.XML数据的基础表存储


db2 CREATE TABLE emp1(id INT, info XML INLINE LENGTH 1024)

使用 INLINE 选项指定将 XML 数据跟关系数据存储在一起。这对于要获取的数据都位于相同位置的查询来说很有利。另一方面,对于访问非 XML 数据的查询,这可能导致需要更多的 I/O 才能找到关系数据。


DB2 Version 9.5 pureXML的增强和新特性
 DB2 Version 9.5 pureXML的增强和新特性(一)
 DB2 Version 9.5 pureXML的增强和新特性(二)
 DB2 Version 9.5 pureXML的增强和新特性(三)

原文出处:http://database.51cto.com/art/200903/113743.htm
 
来源:51cto    
 
 
 
 
 

DB2性能与调优

 
在许多XML应用场合,XML数据的结构与使用率都决定了拆分工作的困难。这也就是为什么DB2支持XML列,使得用户无需转换就可以对XML数据进行索引与查询。
 
DB2 9 for z/OS 同DB2 9.x for Linux, UNIX, and Windows支持两种拆分方法,XML TABLE函数与XML Schema注释。
 
在9月23日IBM DB2诞生25周年纪念大会上,IBM正式宣布启动寻找XML超级明星的全球比赛,旨在测试参赛者对XML相关知识和技能以及数据库技术的掌握情况。

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录