DB2 9 是第一个能同时支持关系型又能支持层次型的混合型数据库。混合型的引擎面向过去,能够兼容老的基于关系型数据库设计的系统;面向未来,能够很好的适应未来IT和业务系统灵活多变的业务需求,发挥XML的灵活性优势。
下面,我们从技术点和性能两大方面对比DB2 9与Oracle 10g XML技术的差异。前面已经分析过Oracle通过大对象和拆分两种方式来支持XML的存储。我们分别针对两种方式来跟DB2 9的Native XML技术作比较。
(一)Oracle基于大对象CLOB的存储方式
XML操作 | DB2 9 Native XML | Oracle非结构化大对象存储 |
存储方式 | 预先解析,磁盘上存储类似XML DOM树结构 | CLOB |
查询的时候是否需要解析? | 不需要 | 需要 |
支持任意节点或属性上的索引? | 支持 | 不支持重复出现节点上的索引 |
XML存储字段允许多个Schema ? | 允许 | 允许 |
XML文档可以没有Schema ? | 允许 | 允许 |
XML的灵活性? | 允许 | 允许 |
子文档更新 | 支持 | 需要解析 编码 |
全文索引支持 | 通过NSE实现,可以支持XPATH路径确定的子文档上的全文检索 | 通过CTX支持全文索引;但不能够针对XPATH子树检索 |
(二)Oracle基于拆分的存储方式
XML技术点 | DB2 9 | Oracle 10g 结构化存储 |
存储 | Native (层次) | (对象-)关系 |
XML文档没有Schema | 允许 | 不允许 |
每个字段是否支持多个Xml Schema? | 允许 | 不允许 |
Schema发生变化 灵活性 | 支持 | 不支持 |
Native XQuery 查询 | 支持 | 不支持(需要翻译成SQL) |
支持任意 XQuery | 支持 | 否 (需转成SQL或借助外部Java引擎) |
需要多次Join获取文档内容 | 不需要 | 需要 |
任意节点属性上创建索引包括重复节点 | 支持 | 很困难/做不到 |
子文档更新 | 9.5版本支持 | 转化成SQL更新 |
注:在 Oracle 数据库 10g 第 2 版中,Oracle 也引入了XQuery 引擎,但存储结构等没有发生变化。
性能方面也是用户和开发人员最关心的问题。目前关于XML数据库的Benchmark基准还不够成熟,关于数据库交易系统OLTP,分析系统OLAP的基准测试各大厂商已经认可了TPCC,TPCH。而在数据库的XML技术方面,各厂商的支持水平差异较大,目前还远没有达到大家竞相参与Benchmark测试的阶段。目前IBM, Intel所支持的BenchMark标准TPOX已经形成,它针对XML的插入,以及并发用户的读写等形成了一套测试的规范。Oracle目前还没有参与这个测试。
由于Oracle目前对XML支持的能力跟DB2 不采取Native XML的方式路线基本一致。我们做了DB2 9 自身Native XML方式跟Clob和拆分方式的比较,大概来了解不同技术实现下性能的大概差异,由于具体测试的细节很多,这里只摘取几个结果的汇总比较,具体可参考PDF Performance文档:
以下测试结果是基于大批量XML的事务处理的场景下得出,其中包括符合金融规范FIXML的数据。
(1) Clob与 Native XML方式下插入性能的比较:
DB2 Native XML方式下插入需要解析,CLOB插入不需要,但是CLOB方式下为了维护索引所需要的Side Table也需要较多代价。单个用户插入下我们看到维护Side Table的Clob方式效率更低。
另外XML 列可以利用缓冲池,而CLOB则不可以。所以并发插入的情况下Native XML比Clob有更好的表现。
(2) Clob与 Native XML方式下并发查询性能的比较:
Native XML 方式下查询不需要解析,Clob方式下查询需要解析,对资源和时间的消耗都成本不菲。Native方式有明显的优势。
(3) Shredding 拆分方式与Native方式插入性能比较
(4) Shredding 拆分方式与Native方式查询性能比较
最后,引用一个SOA环境下 开发周期比较测试,对比不同XML技术对开发人员的影响:
测试项目 | 采用传统关系型技术 | 采用 DB2 9 pureXML 技术 |
开发获取和搜索XML信息的业务流程 | CLOB: 8 小时 Shred: 2 小时 | 30 分钟 |
I/O读写数据相关的代码量 (减少65%) | 100 | 35 |
增加新的数据字段 | 1 周 | 5 分钟 |
查询 | 24 - 36 小时 | 20 秒 - 10 分钟 |
查询未解析的XML元素 | 1 周 | ½ 天 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9524210/viewspace-496193/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9524210/viewspace-496193/