在关系数据库中存储DB2 9 XML 数据将会提供一些更为具有可靠性、可管理性以及 RDBMS 的等一些其他的优点。但是假如你所采用笨拙的存储方法,应用程序的性能将会出现问题。以下就是正文的主要内容描述。
在关系数据库中存储 XML 数据会提供可靠性、可管理性以及 RDBMS 的其他优点。但是,如果采用笨拙的存储方法(比如分解和 CLOB),应用程序的性能就会出现问题。当 IBM 在 DB2 9 中引入 pureXML 之后两年,这个问题已经解决了。
当 IBM 在 2006 年推出 DB2 9 时,它的 pureXML 技术引起了广泛的关注。但是,人们并没有马上接受 “关系/XML” 混合型 DBMS 的思想。这种思想的好处很明显:通过把 XML 引擎和现成的 RDBMS 集成在一起,XML 数据可以轻松地合并到数据操作中,还可以对 XML 数据应用关系系统的许多数据管理特性,比如安全性和存档。
但是,这种做法的性能怎么样呢?考虑到对象-关系数据库过去的性能,人们对混合型系统的性能抱着怀疑态度。
两年之后,pureXML 的性能影响不仅停留在理论上,而且已经在真实环境中表现出来了。
希望通过DB2 9 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 中还改进了插入和更新性能)改进了数据库的处理性能;IBM 的测试和真实项目表明,与 DB2 V8 或其他 DBMS 中的相似操作相比,速度提高了 10 到 20 倍(参见相关内容中 “成功带来的喜悦”部分)。
更适合DB2 9 XML 的模型
pureXML 的性能特点还包括其适应性。要点:XML 数据并不会取代关系数据。对于标准的金融业务,XML 数据很难超越关系数据库,但是 RDBMS 很难处理出版物,比如整本书、杂志或期刊。如果应用程序中的数据具有复杂的层次结构,或者包含大量非结构化信息,RDBMS 也很难处理。
例如,生命科学组织正在把许多常用数据由各种专有格式转换为 XML。在某些情况下,对于难以在传统 RDBMS 中存储和提取的数据,XML 格式提供了优化的数据访问路径,这使 XML 数据库在根本上具有显著的性能优势。
XML DBMS 还有一个优点:它们能够通过 Web 服务或其他方法与 XML 应用程序直接通信。因为 XML 在因特网上使用广泛,应用程序之间的通信也大量采用 XML 格式,所以让整个通信链(应用程序 - 消息 - 数据库)都采用 XML 格式是很有意义的。
IBM 的 pureXML 在技术方面有许多重要的创新(68 项新专利!),但是 IBM 关系/XML 模型真正的价值在于它在主流企业应用程序中表现出的性能。
【编辑推荐】