热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

聚焦 DB2 的XML能力

来源: 作者: 时间:2008-03-03 Tag: 点击:


  索引

  DB2 9 为索引 XML 数据提供了灵活的功能。通过指定一个 XML 模式,可以在一个 XML 列中的文档的任何路径或子树上定义 XML 索引。这种方法可以很好地控制哪些数据要索引,哪些数据不要索引。DB2 的 XML 索引将路径和值映射到文档和节点实例。

  另外,DB2 的 Net Search Extender 通过将文本标志映射到包含它们的文档,提供用于全文搜索的索引。全文索引和全文搜索可用于整个文档,也可用于文档的片段。

  编码和串行化

  在 DB2 中,为大型机(EBCDIC)、Linux、Unix 和 Windows(ASCII),以及 XML、Java 和 .Net 应用程序(Unicode)使用不同的字符集并不鲜见。而且,DB2 预编译器在编译之前将嵌入式 SQL 源代码转换为 Unicode。

  当在机器之间传输数据时,DB2 常常必须对字符集进行转换,使之变成能被接收方机器使用的格式。Coded Character Set Identifier (CCSID) 定义是标识一个码页的惟一值。它们提供 DB2 for Linux、Unix 和 Windows 中的双向布局转换。当两台机器有不同的码页或 CCSID 时,DB2 将转换输入和输入字符数据,例如将 DB2 Connect 服务器码页转换成主机 CCSID,反之亦然。接收方机器则对收到的数据进行转换。

  当串行化 XML 时,DB2 可以在 XML 输出的开头添加一个编码声明。当将应用程序变量或编码 XML 类型存储在一个 XML 列中时,DB2 数据库管理器将检查编码声明,并将它映射到一个 CCSID。

  对 Unicode 和 CCSID 的支持还包括 DB2 客户机/服务器连接性和编程 API 方面的变化,例如调用层接口(CLI)和嵌入式 SQL。使用动态 SQL 的嵌入式 SQL 程序为主机变量使用 SQL descriptor area (SQLDA)。为支持 XML 数据,嵌入式 SQL 程序必须更新 SQLVAR 的 sqlname 字段,表明一个基本类型包含 XML 数据。

  带注释的 XML 模式

  当执行一条 CREATE DATABASE 命令时,用户可以选择是否在 DB2 数据库中包括 XML 支持。如果选择包括数据库对象,那么 DB2 将使用 Unicode 字符集创建一个数据库。运用这种 XML 选项可以避免对数据库分区。当生成一个数据库时,第二个决定是使用系统管理的空间还是使用数据管理的空间。不管是对于关系数据库还是 XML 数据库,最佳选择是数据库管理的空间。

  除了用于 SQL 访问的新的 XML 类型外,DB2 9 还包括 W3C XML Schema 类型。XML 模式语言比 SQL 有更多的基本类型,它还支持通过派生得到的复杂类型。通过智能使用 SQL 数据定义语言(DDL),还可以提供数据完整性和类型安全。XML 模式语言为 XML 应用程序和 XQuery 提供了类似的优点,但是 XQuery 还可以对没有模式的文档进行操作。

  带有多个模式(包括相同模式的多个版本)的文档,可以在一个 XML 列中共存。一个 XML 文档可以包括多个类型,并且可以用 XML 模式来验证。DB2 9 为验证文档提供了模式注册。它在由编目表、视图和存储过程组成的数据库编目中维护一个 XML 模式库(XSR)。

  当验证模式时,XML 模式注册引擎产生类型注释。因此,支持 XML 的 DB2 数据库可以在查询执行期间使用文档和带注释的 XML 模式。通过使用带注释的模式分解,可以将 XML 转换成关系数据。DB2 使用注释将 XML 文档中的元素和属性映射到目标数据库表。为了配合带注释的模式分解,DB2 9 提供了六个新的存储过程(xdbDecompXMLxxxxx)。

  通过创建支持 XML 的数据库,以及注册 XML 模式,可以压缩应用程序的内存需求。对于较大的模式,开发人员可能需要增加应用程序堆(APPLHEAPSZ)。

  SQL DDL、外部例程、UDF、存储过程和触发器

  由于 DB2 9 实现了 XML,因此可以在 SQL DDL 语句、存储过程和函数(包括 SQL/XML 函数)中使用 XML。DB2 以一种内部格式存储 XML 列的值,但是 XMLSERIALIZE 函数可以将它转换成字符串值。

  您可以创建 XML 列上的触发器,还可以在外部函数和存储过程中使用 XML 类型,但是在触发器中不能引用 XML 列的 before 或 after 值。要在存储过程中使用 XML 类型,可以将 XML 类型的参数包括在 CREATE PROCEDURE 参数签名中。对于使用 CREATE FUNCTION 的标量函数或表函数,这个过程也是类似的,但是对于外部 OLE DB 函数而言,XML 类型不是有效类型。DB2 隐式地解析和串行化用于传递给外部例程做参数的 XML。也可以使用 XMLPARSE 函数显式地解析 XML 数据。

  还可以在用 C、C++、C#、Cobol、Java 和 Visual Basic (VB) 编写的程序中使用 XML 类型。C 和 C++ 程序员可以用嵌入式 SQL 或 CLI 访问 XML 类型;C# 和 VB 程序员则用 DB2 .Net Data Provider 访问 XML;而 Java 程序员则用 JDBC 或 SQLJ 访问 XML。如果是编写存储过程和函数所使用的外部例程,那么可以像使用 CLOB 那样使用 XML 类型。可以先将外部例程参数声明为 XML 类型,然后使用 CREATE PROCEDURE 和 CREATE FUNCTION 语句在数据库中注册它们。它们规定将 XML 类型存储为 CLOB,并且,DB2 在将它传递给外部例程之前串行化 XML。

  类型和数据访问

  C/C++ 以及脚本编制解决方案(例如 PHP 和 Perl)常常使用 ODBC 接口来访问 SQL 数据。DB2 CLI 扩展了 ODBC 3.51 API,它提供了对附加类型(包括新的 XML 类型)的支持。
上一篇:没有了
下一篇:DB2远程创建数据库


相关文章:
db2日期操作函数
SQL 语法参考手册
谈谈IBM DB2的数据库备份与恢复
对 DB2 V9 中 XML 类型的编码处理(dW)
构建DB2 Cube View元数据桥
DB2存储过程开发最佳实践
DB2中使用所有内存
DB2与SQL Server2000间SQL数据复制
用户和组帐户与DB2 UDB的交互
DB2 9数据库优点及缺点详细分析
DB2中实现Oracle的相关功能
将Siebel 7电子商务应用程序从DB2 UDB V8 迁移到D
解析:DB2 无限活动日志策略的实用技巧
DB2 9数据服务器发展的3个阶段
为DB2数据库添加验证约束
DB2数据库创建存储过程时遇到的错误
DB2 9数据库性能理解的二十大误区
DB2中的终极SQL性能调节技术
DB2数据库应用系统性能优化深入探究
提高DB2 Web程序性能5条规则
详解安装DB2 9数据库管理软件的4种方式
DB2 9.5的数据库内存保护技术
解决DB2中出现的SQL1032N错误现象
创建克隆文件
DB2数据库优化的几条策略
如何解决DB2中出现的SQL1032N错误现象
解决DB2数据库代码页不兼容的问题
DB2创建存储过程时遇到的错误
教你提高商业智能环境中的DB2查询性能
DB2 9.5的数据库内存保护