Vijay Bommireddipalli (vijayrb@us.ibm.com), 数据服务器解决方案专家, IBM Matthias Nicola (mnicola@us.ibm.com), DB2/XML 性能负责人, IBM 硅谷实验室 Tom Tortolani (dw@cn.ibm.com), 产品管理副总裁, Skytide
2008 年 4 月 17 日 在本文中,我们主要讨论大规模 XML 数据的分析模型,这里的数据由 XML 数据库事务处理基准(TPoX)表示。TPoX 是一个金融应用程序场景,用来评估 XML 数据库系统的性能,主要针对 XQuery、SQL/XML、XML 存储和编制索引、XML 更新和其他 XML 特性。 来自 IBM Database Magazine 。
随着基于 XML 的行业标准(FIXML、FPML、ACORD、XBRL 等)的出现,大量交易数据采用了 XML 格式。各个公司开始意识到分析这些数据对于业务的成功非常重要。
传统的业务分析软件是针对高度结构化、规范化的数据设计的。但是,XML 数据模型允许在每个文档中包含描述性信息,这使 XML 数据很难转换为规范化的格式。但是,现在有了一套针对结构化、非结构化和可扩展数据优化的新颖的业务分析解决方案。在这个专栏中,我们将讨论与 IBM DB2 9 结合使用的 Skytide Analytical Platform,它按照 XML 固有的层次化格式存储 XML。
改进 XML 处理
Skytide Business Analytics Server 为结构化关系数据和 XML 这样的半结构化数据提供报告和分析功能。在 DB2 9 中,XML 是一类的数据类型;XML 类型的列可以存储任何良构的 XML 文档。在存储 XML 文档之后,不需要在运行时解析 XML,所以可以非常高效地查询 XML。
这里涉及的数据基于 FIXML 标准,金融行业广泛采用这种标准进行金融信息交换。
Skytide 和 IBM 基于 TPoX 场景执行了一系列测试,涉及到构建多维数据集和运行复杂的分析查询。在以 DB2 9 作为数据源构建分析模型时,Skytide Business Analytics Server 的处理速度比处理字符大对象(CLOB)形式的 XML 文档快 35 倍,比处理文件系统中的 XML 文件快 85 倍。我们将解释我们采用的方式和获得的结果。
DB2 pureXML、CLOB 还是文件系统
有多种存储 XML 的方法。文件系统存储是其中之一,但是由于需要高效的搜索、访问控制、可伸缩性、数据完整性等性质,促使许多公司考虑采用数据库存储。
如果采用 CLOB 列存储,XML 文档就作为未解析的文本插入。如果不进行 XML 解析,XML 文档的结构就被完全忽略。因此,数据库无法对存储的文本对象执行智能化且高效的搜索和提取操作。惟一的补救方法是,在执行查询时调用 XML 解析器“探索” XML 文档的内部结构,而这会产生很大的开销。
DB2 9 的 pureXML 技术在插入文档时(而不是执行查询时)解析 XML 文档。按照经过解析的格式存储和查询 XML 文档,这种格式不同于 XML 的文本表示,是一个由节点组成的树结构。在执行搜索和提取操作时,不需要执行查询时 XML 解析,这会显著提高性能。
测试场景
TPoX 基准代表一个使用 XML 数据的金融交易处理应用程序。在这个场景中,客户拥有帐户,能够下单买进或卖出有价证券,比如股票、债券或共同基金。这些信息由三个 XML 文档集合表示:
-
Customers(客户)。每个客户有一个 XML 文档,其中包含客户的个人信息,比如姓名、地址、首选客户状态和帐户信息(持有的证券和余额)。
-
Orders(订单)。每笔金融交易有一个 XML 文档,其中包含帐户编号、交易日期、买进或卖出的有价证券的代号、交易数量等等。
-
Securities(有价证券)。市场上交易的每种有价证券有一个 XML 文档,其中包含有价证券代号、有价证券类型、板块、价格等等。
为了对性能进行对比测试,我们按照三种不同的方式把所有 XML 文档存储在相同的硬件上:DB2 pureXML、DB2 CLOB 列和文件系统。然后使用 Skytide 基于这三种数据源构建多维数据集。
我们对两个不同规模的数据集执行了两组测试:
- 10GB 的原始 XML 数据,这些数据代表 60 万个客户和涉及 2 万种有价证券的 3 百万个订单。
- 100GB 的原始 XML 数据,这些数据代表 6 百万个客户和涉及 2 万种有价证券的 3 千万个订单。
对于这两个数据集,都测试了两种多维数据集:
- 使用每个数据集中的所有数据。
- 只考虑与美国客户相关的信息。这个多维数据集让 DB2 使用 pureXML 特性高效地执行所需的过滤。
多维数据集设计
多维数据集是通过定义维而形成的,在分析模型中使用维对相关数据(度量指标)进行分类,从而便于用户理解查询和报告需求。维通常包含多级聚合。例如,Period 维包含每日、每月和每年级别。在我们的测试中,所有多维数据集都包含以下的维:
- Customer(包含 Customer ID、Account No.、Premium Customer 级别)
- Geography(包含 State、Country 级别)
- Period(包含 Day、Month、Year 级别)
- Security(包含 Symbol、Type、Industry 级别)
- Orders(包含 Order ID 级别)
一个维的实际值称为成员(member)。例如,Customer 维包含 100 个成员(客户)。另外,每个多维数据集都包含度量指标 Number of Orders、Order Amount、Account Balance 和 Last Trade Amount。
一个多维数据集中包含的详细数据的级别常常取决于多个因素,比如报告需求、源数据延迟、多维数据集延迟等等。我们的主测试多维数据集包含两年的全球范围的每日交易数据。根据业务需求的不同,可以把数据划分为更小更有针对性的多维数据集,从而更好地满足用户的分析需要。在计算维聚合时,Skytide 并不要求多维数据集包含所有详细数据。因此,在我们的多维数据集中可以省略按不同 Customer ID 细分的数据,这会大大提高构建多维数据集和执行某些查询的性能。
对数据集进行划分的一种实用方式是按照时间或地理位置划分,比如把数据划分为与各个国家相关的多维数据集。采用与国家相关的多维数据集的测试结果(见 ibmdatabasemag.com)展示了在多维数据集设计中为提高性能做出的妥协。
构建多维数据集的时间
表 1 对比了四个测试多维数据集的构建时间。为了给报告和分析提供 XML 数据,Skytide 在构建多维数据集的过程中直接装载相关的数据值。这个过程只装载和链接 Skytide 多维数据集定义所需的 XML 元素和属性。Skytide 使用 DB2 的 XQuery 和 SQL/XML 支持预先过滤出符合要求的文档,这会显著减少多维数据集的构建时间。
表 1. 四个多维数据集的构建时间对比
分析查询响应时间
在我们的测试场景中,pureXML 数据源在构建子多维数据集时有很大的性能优势。对于只包含美国客户数据的多维数据集,Skytide 把一个 XML 谓词传递给 DB2,然后 DB2 使用它的 XML 索引和查询功能,只把美国数据传递给 Skytide。对于 CLOB 或文件系统中的 XML 数据,Skytide 必须在所有文档中搜索多维数据集所需的美国数据。
由于数据的性质,在构建 100GB 的包含所有国家的多维数据集时,要先执行一次性的历史数据处理(两年的每日订单);然后把新的交易数据批量添加到多维数据集中(按每日或每小时划分)。由于需要的历史数据处理时间太长,从 CLOB 或文件系统中的 XML 文件装载数据是不现实的。
组合起来效果更好
Skytide 和 DB2 都支持高效的 XML 数据管理。对 XML 文档进行分解和映射是一项复杂的任务,而且随着时间的推移很难维护。Skytide 和 DB2 pureXML 的组合通过直接操作 XML 数据简化了 XML 数据的存储、访问和查询。Skytide 能够使用 DB2 的 XML 查询只获取相关数据,从而显著减少构建多维数据集的时间,并提供一个高度优化的分析解决方案。
参考资源
作者简介  | 
|  | Vijay Bommireddipalli 在加利福尼亚州圣何塞市 IBM 硅谷实验室的数据服务器解决方案团队工作,帮助客户和合作伙伴开发 DB2 解决方案。在加入这个团队之前,Vijay 是 Warehouse Manager 开发团队的一名开发人员。他在获得马萨诸塞州立大学达特茅斯分校计算机电子与工程硕士学位后于 2000 年 7 月加入 IBM。 |
 | |  | Nicola 博士是 IBM Silicon Valley Lab 负责 XML 数据库性能的技术负责人。他的工作重心是 DB2 中 XML 性能的所有方面,包括 XQuery、SQL/XML 以及 DB2 中的所有本地 XML 特性。Nicola 博士与 DB2 XML 开发小组以及那些使用 XML 的业务合作伙伴和客户紧密协作,协助他们设计、实现和优化 XML 解决方案。在加入 IBM 之前,Nicola 博士曾在 Informix Software 公司负责数据仓库性能方面的工作。他还用了四年时间致力于分布式和重复数据库方面的研究与行业项目。1999 年,他从德国的亚琛科技大学获得计算机科学博士学位。 |
 | |  | Tom Tortolani 是 Skytide 负责产品管理的副总裁,他是美国专利 6,317,750 号(高级多维导航技术)的主要发明人。
|
对本文的评价
|