[ 来源:http://www.it55.com | 作者: | 时间:2008-01-02 | 收藏 | 推荐 ] 【大 中 小】
和其他数据库一样,DB2® V8 XML Extender 提供了两种针对 XML 的存储和访问模型:XML 文档可作为未解析文本完整地存储在 CLOB 列中,也可以被映射和分解到一套关系表中。这两种选择都有一些已知的性能限制。DB2® 9 中新的 pureXML™ 技术试图通过以其固有的层次格式存储和查询 XML 的方式来消除这些限制。本文描述了一系列度量方法,这些方法用于确定 pureXML 是否能够提供性能优势,并量化 pureXML 和 CLOB 或分解式存储之间的性能差异。
简介
DB2® 9 中的 pureXML™ 技术旨在为 XML 数据管理提供最高级别的性能。本文比较了 pureXML™ 技术与字符型大对象 (CLOB) 和分解式 XML 存储的性能。许多数据库系统允许将 XML 数据存储为 CLOB 格式,或将数据“分解”到关系表中。DB2® V8 也支持这两种选择(通过 XML Extender),DB2 9 中仍然提供了 XML Extender,来实现向后兼容性。然而,它们将被 pureXML 特性所取代。
DB2 XML Extender 包括一套存储过程、用户定义的函数 (UDF),以及用户定义的数据类型 (UDT)(这些类型将 XML 功能添加到核心 DB2 引擎之上)。XML Extender 的过程和 UDF 中配有 XML 解析器和特定于 XML 的逻辑,因而能够执行由传统 DB2 引擎特性支持的 XML 存储和检索。您能够使用 XML Extender 的 XML Extender Column 或 XML Extender Collection 特性。
XML Extender Column 允许将 XML 文档完整地存储为未解析的纯文本。此过程非常简单,但是忽略了 XML 文档的内部结构。您可选择将 CLOB 列、VARCHAR 列或文件系统内的文件用作基础存储。在 VARCHAR 列中,XML Extender 仅能存储最大 3KB 的文档 —— 许多应用程序很难保证满足此限制。高水平的数据库管理员 (DBA) 能够将此限制提高到 32k,但是通常情况下即使是这个最大值,应用程序也无法保证能够满足。外部文件存储更为灵活,但是无法从数据库管理的持久性和完整性中获益。这就是 CLOB(能够存储最大 2GB 的文档)成为 XML Extender Column 的最常用选择的原因。本文将在后面探究 XML Extender CLOB 列的性能。
XML Extender Collection 允许将 XML 数据转换为关系格式。这需要从预期的 XML 结构到数据库模式中的关系表集合的固定映射。基于此映射,存储过程从 XML 文档中提取原子数据值,并将其插入到传统关系行和列中。此过程称为分解("shredding" 或 decomposition)。它涉及 XML 解析,并将单一逻辑 XML 文档插入翻译为一系列 SQL 行插入。在实际应用程序中,它能够轻松使用数十个关系表来代表原始 XML 结构中的全部一对多关系。因此,映射很快就变得复杂起来,XML 插入性能也相应受到影响。一旦使用关系格式的数据可用,纯 SQL 就可用于数据访问和操作。然而,原始 XML 文档的重构也非常昂贵。它需要以多路方式加入和生成合适的 XML 标签。这些标签可由标准化的 SQL/XML 发布函数 定义,来重构原始文档或新的不同文档。但是,XML Extender Collection 无法保留原始 XML 文档的任何数字签名。
以关系格式提供 XML 数据仍然是一个重要的需求。最常见的原因是需要向仅使用关系数据的遗留 SQL 应用程序、打包业务应用程序和商业智能 (BI) 工具馈送数据。因此,DB2 9 提供了新的 “分解” 解决方案,这种解决方案也称为 “注释模式分解” 或“新分解”,这种解决方案的速度是 XML Extender Collection 分解速度的 7 到 8 倍。本文将在后面比较这种新的高速分解方案和 IBM DB2 9 中的 IBM pureXML™ 支持的性能。
DB2 9 中的 新 pureXML 技术 和 CLOB 或分解式 XML 存储有非常大的区别。它不将文档存储为纯文本,也不将 XML 映射到关系或对象关系表。相反,它使用其固有的层次格式(这种格式匹配 XML 数据模型)存储 XML。每个 XML 文档均是定义良好的元素和属性树,并使用树遍历来表示 XML 查询。因此,对应的层次存储和处理格式会让 XML 数据管理更为有效,这一点很自然。为了详细解释此观点,本文将比较 DB2 9 中的 pureXML 和基于 CLOB 和分解式 XML 处理的性能。
测试设置
表 1 总结了本文进行的比较。本文对比了 CLOB 和分解式存储的关键 XML 操作与对应的 pureXML 操作。
| CLOB 中的 XML | DB2 9 pureXML |
|---|---|
|
对 CLOB 进行完整的文档检索 |
对XML列进行完整的文档检索 |
|
对XML列进行XQuery 操作 |
|
| 分解到关系表的 XML | DB2 9 pureXML |
|
使用 DB2 9 的新分解特性,将 XML 分解到关系表 |
|
|
对XML列进行XQuery 操作 |
(编辑:IT资讯之家 www.it55.com)