WEB开发网
开发学院数据库DB2 DB2 9 pureXML与CLOB或分解式XML存储之间的性能对... 阅读

DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比

 2010-02-16 14:59:52 来源:WEB开发网   
核心提示:和其他数据库一样,DB2® V8 XML Extender提供了两种针对XML的存储和访问模型:XML文档可作为未解析文本完整地存储在CLOB列中,DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比,也可以被映射和分解到一套关系表中,这两种选择都有一些已知的性能限制,这些文档来自文章&ldqu

和其他数据库一样,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操作。

表1:比较CLOB和分解式XML处理与pureXML

CLOB中的XML DB2 9 pureXML
将XML插入到XML Extender CLOB列 将XML插入到XML列
对CLOB进行完整的文档检索 对XML列进行完整的文档检索
在CLOB中使用XML Extender “提取”功能查询XML(在查询时解析XML) 对XML列进行XQuery操作
   
分解到关系表的XML DB2 9 pureXML
使用DB2 9的新分解特性,将XML分解到关系表 将XML插入到XML列
发布SQL/XML,从关系数据构建XML文档
(例如之前分解的XML)
对XML列进行XQuery操作

全部测试均使用以下数据和设置执行:

一个安装了IBM® AIX® 5.2(64位)和单一 DB2 9实例的4-CPU pSeries系统

使用了1,000 到100,000个CustAcc文档(4kb 到20kb 大小),这些文档来自文章“DB2 9 XML 性能特征”中的金融场景

页面大小为32kb的数据库管理的(DMS)表空间

全部表空间均使用no file system caching 选项定义,除非另外声明(用于某些CLOB存储测试)

全部表空间分布在10个物理磁盘上,数据库日志位于独立的等量列中

全部测试均使用了相同的数据库配置和调优,来确保性能比较的公平性和有效性

1 2 3 4 5 6  下一页

Tags:DB pureXML CLOB

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