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

DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 5 部分

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: xqueryfor$tindb2-fn:xmlcolumn(‘TRADES.TRADEDOC')/FpMLwhere$t/party/partyId=12345return$t;selecttradedocfromtradeswherexmlexists('$TRAD

xquery for $t in db2-fn:xmlcolumn( ‘ TRADES.TRADEDOC')/FpML 
 where $t/party/partyId = 12345 
 return $t; 
 
 select tradedoc 
 from trades 
 where xmlexists('$TRADEDOC/FpML/party[partyId=12345]' );

图 82:两个在谓词中使用使用 hard-coded 文字值 XML 查询

select tradedoc 
 from trades 
 where xmlexists('$TRADEDOC/FpML/party[partyId=$x]' 
                passing cast(? as integer) as "x");

图 83:使用参数标记的 SQL/XML 查询

避免 DB2 和应用程序之间的代码页转换

XML 不同于 DB2 中的其它数据类型,因为它可以内部编码也可以外部编码。内部编目意味著 XML 数据的编码来自于与数据本身。外部编码意味著数据编码源自于应用程序代码页。你用来跟 DB2 交换 XML 数据的应用程序变量的数据类型决定如何派生编码。如果你的应用程序对 XML 使用字符类型变量,那么它是外部编码(使用应用程序代码页)。如果你使用二进制应用那个程序数据类型,那么 XML 数据将考虑使用内部编码。在这种情况下编码取决于一个 Unicode Byte-Order mark (BOM) 或 XML 文档自己的一个编码声明就像

<?xml version="1.0" encoding="UTF-8" ?>

从性能的角度,我们的目标是尽可能的避免代码页转换,因为这将消耗额外的 CPU 时钟周期。最好使用内部编码的 XML 数据,不要使用外部编码数据,因为它可以防止不必要的代码页转换。也就是说在你的应用程序中你应该尽量使用二进制数据类型而不是字符数据类型。例如,在 CLI 中当你使用 SQLBindParameter() 来在输入数据缓冲中绑定单数标记时,你应该使用 SQL_C_BINARY 数据缓冲而不是 SQL_C_CHAR、SQL_C_DBCHAR 或 SQL_C_WCHAR 。当从 Jave 应用程序插入 XML 数据时,以二进制流(setBinaryStream)的形式读取 XML 数据比作为字符串(setString)的形式更好。同样的,如果你的 Java 应用程序收到了来自 DB2 的 XML 并写入了一个文件中,如果 XML 是以非二进制数据的形式写入的话可能会发生代码转换。

上一页  4 5 6 7 8 9 10  下一页

Tags:DB 最佳 实践

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