WEB开发网
开发学院数据库DB2 DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的... 阅读

DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 2 部分:向 DB2 数据库中添加 XML 数据指南

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: XML 数据模式需要解析,有良好格式的 XML 文档有一个文档节点(作为这个文档中的唯一根元素的父节点),DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 2 部分:向 DB2 数据库中添加 XML 数据指南(3),这个文档节点在一个 XML 文档的文本表示上并

XML 数据模式需要解析,有良好格式的 XML 文档有一个文档节点(作为这个文档中的唯一根元素的父节点)。这个文档节点在一个 XML 文档的文本表示上并不可见。从输入文档中抽取的交易子树没有文档节点,而且不能作为一个有良好格式的文档插入。因此,document{} 构造器为每一个抽取出来的交易创建一个文档节点。


清单 2. 把大型输入文档拆分成单独的交易文档
INSERT INTO trades(tradedoc) 
 SELECT doc FROM 
 XMLTABLE ('$d/alltrades/FpML' passing cast(? as XML) as "d" 
  COLUMNS  
   doc XML PATH 'document{.}') AS X

你可能记得 TRADES 表也有一个整型的 tradeId 列。这列没有被上述插入填充。基于你实际的应用需求,你可以定义 tradeId 列为自生成列。如果有 XML 列的表也包含关系型列,用从 XML 文档中抽取的值来填充它们可能很有好处。这会在下一章中进行讨论。

以混合方式存储交易

在图 11 中你可以看到一个 TRADES 表的第二个版本,在关系型列中保留了交易时间、交易类型和各个交易方的 IDs 。这是除了在 XML 列中的全部 FpML 文档外的关系型数据,因此叫做混合存储。

提示:抽取选择的 XML 元素值插入到同一行的关系列中,XML 文档可以满座多种需求。关系型列可以很容易的被 SQL-only 访问重要或经常访问的数据条目、定义的主键、外键或其它约束,以及多列关系型索引(组合键)的定义。


清单 3. FpML 交易的混合存储
create table trades2 (trdDate Date, trdType varchar(20), partyId1 integer, 
         partyId2 integer, tradedoc XML); 
 
 insert into trades2 
 select * 
 from xmltable('$d/FpML' passing cast(? as XML) as "d" 
 columns  
  tradeDate  date     path   'trade/tradeHeader/tradeDate', 
  tradetype  varchar(20)  path   'trade/*[2]/local-name(.)', 
  partyId1   integer    path   'party[@id="party1"]/partyId' , 
  partyId2   integer    path   'party[@id="party2"]/partyId', 
  doc     XML      path   'document{.}') 
   ) as t;

上一页  1 2 3 4 5  下一页

Tags:DB 最佳 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接