DB2 9 XML 性能优势 |
本文标签:DB2 XML 当 IBM 在 DB2 9 中引入 pureXML 之后两年,这个问题可以说已经彻底解决了 。当 IBM 在 2006 年推出 DB2 9 数据库时,它的 pureXML 技术就引起了广泛的关注 。但是,人们并没有马上接受 “关系/XML” 混合型 DBMS 的思想 。 这种思想的好处很明显:通过把 XML 引擎和现成的 RDBMS 集成在一起,XML 数据可以轻松地合并到数据操作中,还可以对 XML 数据应用关系系统的许多数据管理特性,比如安全性和存档 。但是,这种做法的性能怎么样呢?考虑到对象-关系数据库过去的性能,人们对混合型系统的性能抱着怀疑态度 。 两年之后,pureXML 的性能影响不仅停留在理论上,而且已经在真实环境中表现出来了 。 希望通过 XML 获得什么? 在开发 pureXML 和 DB2 9 的 5 年中,IBM 深入研究了 XML 的性质(XML 具有强大的灵活性,同时也非常繁琐),发现了需要改进的五个方面 。IBM 主要关注两个性能因素:存储模型和查询优化 。 XML 数据由一个层次化的树结构表示,通常包含多个层和大量节点,因此这种格式很难优化和编制索引 。它还涉及某种形式的压缩 。因此,XML 查询可能变得非常复杂 。 存储 XML 数据的一种常用方法是字符大对象(CLOB) 。与二进制大对象(BLOB)一样,CLOB 通常作为一个整体存储,很少为编制索引或查询优化进行预处理 。另一种方法是把 XML 数据 “分解” 为关系数据的列;这种方法需要复杂的解析技术,通常使用大量存储空间 。 DB2 pureXML 把 XML 数据存储为经过预先解析的层次化格式,这种格式反映数据的底层嵌套结构 。这种格式支持编制复杂的索引,并允许对物理存储中的数据进行压缩 。在执行查询时,pureXML 把 XQuery 和 SQL/XML 查询转换为一种在多方面(跨语言、查询重写、优化索引和成本)经过优化的统一格式 。XML 压缩、查询优化以及关系和 XML 处理的混合(在 DB2 9.5 中还改进了插入和更新性能)改进了数据库的处理DB2 9 XML性能;IBM 的测试和真实项目表明,与 DB2 V8 或其他 DBMS 中的相似操作相比,速度提高了 10 到 20 倍(参见相关内容中 “成功带来的喜悦”部分) 。 更适合 XML 的模型 pureXML 的性能特点还包括其适应性 。要点:XML 数据并不会取代关系数据 。对于标准的金融业务,XML 数据很难超越关系数据库,但是 RDBMS 很难处理出版物,比如整本书、杂志或期刊 。如果应用程序中的数据具有复杂的层次结构,或者包含大量非结构化信息,RDBMS 也很难处理 。例如,生命科学组织正在把许多常用数据由各种专有格式转换为 XML 。在某些情况下,对于难以在传统 RDBMS 中存储和提取的数据,XML 格式提供了优化的数据访问路径,这使 XML 数据库在根本上具有显著的性能优势 。 XML DBMS 还有一个优点:它们能够通过 Web 服务或其他方法与 XML 应用程序直接通信 。因为 XML 在因特网上使用广泛,应用程序之间的通信也大量采用 XML 格式,所以让整个通信链(应用程序 - 消息 - 数据库)都采用 XML 格式是很有意义的 。 IBM 的 pureXML 在技术方面有许多重要的创新(68 项新专利!),但是 IBM 关系/XML 模型真正的价值在于它在主流企业应用程序中表现出的性能 。 XML 在真实环境中的性能
北京西城区卫生局为大约一百万人提供服务,它把客户清单存储在一个大型数据库中,其中包含敏感数据 。卫生系统需要把完整的文档(比如医生的报告)与来自许多数据源的数据组合在一起,因此非常需要利用 XML 的灵活性 。卫生局的 CIO Zhu Shu Hong 指出,“带有 pureXML 特性的 DB2 9 不但适合核心数据库存储模型,也适合原始数据收集形式和数据交换” 。Zhu 先生认为,XML 能够处理复杂的个人健康记录,这使 XML 非常适合他们;XML 提供了灵活的查询功能,能够对实时随需信息进行快速响应,这对于某些医疗活动非常重要 。尤其是西城区卫生局把它的大型 DB2 9 数据库与 IBM 面向服务体系结构(SOA)结合在一起,为向应用程序提供数据的 Web 服务实现了一个 “服务总线” 。 German Research Center for Competitive Sports(Das Deutsche Forschungszentrum für Leistungssport)开发了一个称为 eActe 的应用程序,这个程序用来收集和分析关于运动科学的基本信息和应用研究信息 。数据收集是这个程序中最困难的方面 。这个数据库包含的内容非常广泛,包括监视设备生成的大量数据、扫描图像和大量手工输入的数据 。例如,有以 9 种形式收集的 3,000 个参数,共有 63 页 。数据是通过一个专用的在线门户或客户机应用程序使用 Lotus Forms 软件捕捉的,然后通过一个 IBM WebSphere Application Server 传递,并以关系格式和 XML 格式存储在 IBM DB2 9 中 。对于位于 Koln 的研究中心,pureXML 能够快速捕捉复杂的运动测试结果,并以 XML 格式提交数据,其他程序很容易用这种格式进行分析 。 另一个德国组织 Douglas Holding AG 使用 IBM DB2 9 和 pureXML 从 1,600 家零售商店和 800 家香料店收集数据,执行一项非常传统的零售工作:每天整理每家商店的现金收据并为公司的数据仓库准备结果 。在这种情况下,pureXML 用来压缩数据和决定数据结构,Douglas 发现与以前的系统相比这个系统更容易使用(参见相关内容中“成功带来的喜悦”部分) 。 这些例子都表明了一点:pureXML 数据存储的效率、响应速度和 XML 数据的查询灵活性都很好 。 最佳实践 IBM 为提高 XML 性能做了大量工作,尤其是应对数据量和查询复杂性的增加;但是,与所有数据管理系统一样,pureXML 也需要良好的设置和一些调整 。关于 XML 性能调优的一些建议参见相关内容中“获得出色的 XML 查询DB2 9 XML性能”部分 。 XML 数据库市场在最近 10 年竞争越来越激烈了,但是 IBM 的混合方式非常先进,这使 XML 成为日常数据管理的固有组成部分 。为了实现这个目标,IBM 增强了 pureXML 的功能、可靠性和性能 。IBM 首先做了一些研究,然后在 DB2 9.5 中实现了许多性能改进 。 尽管 XML 已经成为因特网上主要的数据语言,它是实际上的数据交换标准,而且几乎已经成为 Web 服务和 SOA 的必有部分,但是一些 DBA(甚至整个 IT 部门)仍然对是否接受它犹豫不决 。DB2 9 和 pureXML 把关系数据库的可靠性、可伸缩性和可管理性引入了 XML 领域,同时避免了其他老式存储方式的缺点 。因此,那些对 XML 的性能持怀疑态度的 IT 人员应该转变思想了 。 相关内容 获得出色的 XML 查询性能 XML 应用程序通常需要很高的性能 。实现良好性能的主要责任由应用程序设计人员和 DBA 承担 。在 Matthias Nicola 的 developerWorks 文章 “DB2 9 中 15 个 pureXML 性能最佳实践” 中,他解释了如何通过 DB2 9 的 pureXML 技术产生最好的性能 。下面总结一下他的前五个提示 。 理智地选择 XML 文档的粒度 。在设计 XML 应用程序和 XML 文档结构时,需要决定在单一 XML 文档中包含哪些业务数据 。在细粒度、中等粒度和粗粒度之间进行选择时,需要考虑应用程序主要以哪种粒度访问和处理数据 。如果不太确定,那么应该倾向于选用较细的粒度和较小的 XML 文档 。 使用 DMS 和更大的页取得更好的 XML 性能 。数据库管理的表空间(DMS)可以提供比操作系统管理的表空间(SMS)更高的性能 。在 DB2 9 中,在默认情况下新创建的表空间是 DMS 。DMS 表空间与自动存储一起使用可以使 DMS 容器随需增长,而不需要人为干预 。经验法则是,为 XML 数据选择一个不小于平均预期文档大小的两倍而且不超过最大值 32 KB 的页大小 。如果为关系数据和 XML 数据(或者为数据和索引)使用单一的页大小,那么 16KB 或 8KB 的页对于这两种数据类型而言可能都是较好的选择 。 使用 XML 存储选项:内联、压缩或单独的表空间 。如果通过性能分析发现对于 XML 数据需要更大的页大小,而对于关系数据或索引则需要更小的页大小,那么可以使用单独的表空间 。当定义一个表时,可以将 “长” 数据(大对象和 XML 数据)转到一个具有不同页大小的单独的表空间中 。但是应按常理来考虑 。更少的缓冲区池和表空间以及更少的页大小种类,可以产生更简单的物理数据库设计,从而更容易管理、维护和调优 。因此,要避免引入多种页大小,除非您知道这样做确实可以带来性能好处 。应该使用内联和压缩功能来减少存储开销并提高 I/O 性能 。 配置 DB2 以便快速地成块插入 XML 数据 。传统的插入和日志记录性能调优对于 XML 插入和导入仍然适用 。在 DB2 9.5 中,使用装载代替导入 。如果表上需要多个 XML 索引,就应该在任何成块插入之前定义它们 。这样的话,每个 XML 文档只被处理一次,便可以为所有 XML 索引生成索引条目 。如果在填充表之后发出多条 create index 语句,那么 XML 列中的所有文档将被访问多次 。 使用新的快照监视器元素检查 XML 性能 。DB2 9 为 XML 数据提供了新的缓冲区池快照监视器元素,它们与用于关系数据和索引的现有计数器相对应 。由于关系数据和索引存储在一个表空间内不同的存储对象中,因此它们具有不同的读和写计数器 。DB2 9 中的 pureXML 存储为 XML 数据引入了一种新的存储对象(称为 XDA),它也有自己的缓冲区池计数器 。 在研究了 Nicola 的性能提示之后,一定要阅读他关于通过索引改进 XML 查询性能的文章 。 成功带来的喜悦 DB2 9 pureXML 使香料店和零售公司 Douglas Holding 能够更快地进行销售数据整理和聚合 。 Douglas Holding AG 公司在欧洲和美国拥有超过 1,800 家零售商店 。在 2005 年,它启动了一个称为 Operational Data Stage 的项目,其目的是解决现金收据整理和销售信息聚合的主要问题 。使用 XML 格式获得数据是一个重要的基础步骤 。“灵活性是我们选用 XML 的主要原因,” Andreas Birkendorf 博士(处理公司 IT 需求的 Douglas Holding 分支机构 Douglas Informatik & Service 的项目主管)说,“因为数据源的差异非常大,而且它们的格式还可能会变化,所以我们需要一种非常灵活的接口 。” 这个项目在开始时使用 IBM DB2 Version 8 XML Extender,这是有效的,但是过程很复杂,难以使用 。2007 年,IBM DB2 9 pureXML 的出现改变了这种状况 。DB2 9 更容易使用,尤其是在 XML 和关系结构之间进行映射方面 。与使用 DB2 V8 XML Extender 时相比,性能提高了 20 倍以上 。这大大减少了处理时间;尽管 Birkendorf 的团队一度担心如果 Douglas 决定增加数百家商店,他们就会无法承受,而现在 Birkendorf 确信 “现在我们知道我们可以应付 。” 据 Birkendorf 所说,一部分DB2 9 XML性能改进并非来自物理处理速度的提高,而是由于不再需要完成某些工作 。“如果格式发生细微的变化,pureXML 使我们可以更轻松地应对 。实际上,有时候我们甚至不需要做手工修改;系统会处理它 。” Douglas Holding 很早就利用 pureXML 实现了 XML 模型系统,但是这个过程并非一帆风顺 。“具有关系数据库背景的人员可能需要调整其思维模式,” Birkendorf 说,“我们早在 pureXML 出现之前就意识到了 XML 的价值;我们知道它正是我们所需要的 。” |