DB2 XML 编程,第 2 部分: 在应用程序体系结构中使用 XML 数据库支持
2009-11-11 00:00:00 来源:WEB开发网即使遗留数据是关系型的,但是通过使用 Viper 2 中引入的一些 SQL/XML 函数,可以轻松地查询这些数据并将它们转换为 XML。看一下第 1 部分中的示例 “第二种情况 —— 所有数据在数据库中存储为关系形式”。可以使用 Viper 2 中引入的 XMLROW 函数简化这个查询。
Select XMLROW (customerid, firstname, lastname OPTION as attributes ROW Customer)
from customer_table where customerid=?
还可以在关系数据和 XML 数据之间创建联结。在这个示例场景中,如果有第三个表,其中包含购买商品的产品说明,而且这是一个关系表,那么可以使用商品 ID 执行联结,从而获得购买的每种商品的产品说明。
图 5. 联结关系列和 XML 列
Select details, weight from SQLPRODUCT, ITEM_TABLE
where xmlexists ('$itemxml/item[@itemid=$pid]'
passing ITEM_TABLE.ITEMXML AS "itemxml", SQLPRODUCT.PID AS "pid" )
在 DB2 9 中,可以使用 passing 子句向 SQL 语句中嵌入的 XQuery 传递运行时参数,但是不能向 XQuery 中嵌入的 SQL 传递参数。在 Viper 2 中,这个限制已经消除了,现在可以向 XQuery 中嵌入的关系查询传递运行时变量。
清单 7. 向 XQuery 中嵌入的 SQL 传递运行时变量
values(xmlquery('
for $Customer0 in db2-fn:xmlcolumn("PURCHASE_TABLE.ITEMXML")/Customer
where $Customer0/@customerid= $custid
return (
$Customer0/Item,
db2-fn:sqlquery(
''select xmlrow(details, description, weight option ROW "description")
from sqlproduct where pid= parameter(1)'', $Customer0/Item/@ID))
' passing cast( ? AS varchar(255) ) as "custid" ))
因此,即使一部分数据位于关系表中,一些数据是 XML,现在都可以在 SQL 查询、XQuery 或这两者中在 XML 数据和关系数据之间进行动态联结。
在某些情况下,性能可能不是大问题,因为:
能够为数据库中存储的 XML 文档创建基于 XPath 表达式的索引。
create index custfname on customer_table(info) generate key
using xmlpattern '/Customer/@firstname' as sql varchar(64)
因为数据库模式更简单,所以减少了所需的联结数量。
因为现在可以在查询中缩减数据,然后再把数据发送给应用程序,所以可以减少 I/O。
随时可以使用 SQL/XML 函数(比如 XMLTable)将 XML 文档中的关键信息提取到关系列中,并为它们创建关系索引。
可以为 XML 文档创建文本搜索索引。
结束语
XML 已经取得了稳固的地位。大多数行业和政府组织都对他们的 XML 模式做了标准化,并要求电子文档必须符合这些模式。既然通过线路交换的 B2B 数据已经采用了 XML 格式,为什么不在数据库中按原样(pureXML)存储这些数据呢?将数据存储为 XML 之后,可以使用 XQuery 和标准的 SQL/XML 对它进行编制索引、查询、检验、操作、转换和更新。随着越来越多的应用程序逻辑被放在查询中,数据库可以以 Web 服务和 feed 的形式公开它的存储过程,从而成为面向服务体系结构(SOA)环境中活跃的参与者。
“旧的秩序已经改变了,新的秩序正在形成。”(The old order changeth, yielding place to new.) Morte d'Arthur
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››XML 转成 数组对象
- ››XML注意的转义字符
- ››xml文件正确性验证类实现
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
更多精彩
赞助商链接