UML软件工程组织

构建DB2 Cube View元数据桥之三
wayne yesky

  跟踪

  当一个错误出现的时候,你不清楚为什么应用程序接口会失败,那么常常需要启动应用程序接口跟踪。一般是开启高级跟踪,如果绝对必要的时候也可只开一个中级或者低级跟踪。

 

  为了打开跟踪,象下面显示的这样修改你的配置文件db2md_config.xml。每个DB2实例都有一个配置文件,你可以在实例目录中找到它。在Windows中,默认的DB2实例被命名为"DB2"并且配置文件可以在sqllib/db2/db2md_config.xml中找到。在下面的XML中,跟踪等级已经被设置为高级别。

<?xml version="1.0" encoding="UTF-8" ?>
<!-- <copyright> -->
<!-- Licensed Materials - Property of IBM -->
<!-- 5724-E15 -->
<!-- (c) Copyright IBM Corp. 2002, 2003 All Rights Reserved. -->
<!-- US Government Users Restricted Rights - Use, duplication or disclosure -->
<!-- restricted by GSA ADP Schedule Contract with IBM Corp. -->
<!-- </copyright> -->
<olap:config xmlns:olap="http://www.ibm.com/olap">
<log>
<trace level="high" logFile="db2mdtrace.log" bufferSize="0"/>
<error level="medium" logFile="db2mderror.log" bufferSize="0"/>
</log>
</olap:config>

  注意:不要试图更改跟踪文件的名字。它必须被称作db2mdtrace.log。跟踪文件db2mdtrace.log可以在实例目录中找到。
  创建元数据桥

  一个元数据桥是一个软件组件或者公用程序,把元数据从一种格式映射到另一种格式。元数据桥被开发,以便在一个第三方业务智能工具或者OLAP工具与DB2 Cube View之间交换元数据。


图1 一个元数据桥

  例如,IBM提供了一个DB2 Cube View和IBM DB2 OLAP Server产品之间的桥。更确切地说,这个桥在DB2 Cube View和DB2 OLAP Server上的OLAP Integration Server之间交换元数据。

  当设计一个元数据桥的时候,有许多事项需要考虑。我们将更详细地讨论其中的一些问题。

  · DB2 Cube View元数据对象模型与其它格式的兼容性/相似性?

  · 桥是单向还是双向?

  · 每次映射什么级别的元数据?通常,Cube模型或者Cube对象(连同所有被引用的对象一起)是一个桥的来源或者目标。

  · 桥支持和管理逐渐增加的元数据变化吗?

  · 使用哪种程序设计语言?

  · 对于这种程序设计语言,哪些XML语法分析程序有效?

  · 当使用DB2 Cube View元数据的时候,桥会调用应用程序接口来读取元数据或者读入一个输出元数据XML文件吗?

  · 当产生DB2 Cube View元数据的时候,桥将调用应用程序接口来创建元数据,或者把元数据写入一个XML文件吗?

  映射演练

  做一个映射演练是设计桥的重要的第一步。做这个演练的设计师或者开发者必须有关于DB2 Cube View元数据对象模型和另一种元数据对象模型的透彻的工作知识。

  如表二所示,每个DB2 Cube View对象当做一个映射的时候,都有通用属性需要研究。

  表1 DB2 Cube View对象的通用属性

属性 注意
模式 当映射到DB2 Cube View的时候,所有新的对象通常被放入一个模式中。但是Cube View对象被允许引用不同的模式中的其它Cube View对象。DB2 Cube View中的每个对象的完整名称是它的模式加上它的名称,比如MYSCHEMA.MYATTRIBUTE。模式可以不长于30字节。
名称 每个DB2 Cube View对象类型都有自己的名称空间,除了Attribute和Measures共享相同的名称空间。比如,可以有一个Attribute和Join有相同的完整名称。到DB2 Cube View的桥通常必须生成目标对象的名称。名称不长于128字节。
业务名称 最大128字节。
注释 最大 254字节
构建器 当映射到DB2 Cube View的时候不需要。
构建期 当映射到DB2 Cube View的时候不需要。
修改器 当映射到DB2 Cube View的时候不需要。
修改期 当映射到DB2 Cube View的时候不需要。

  DB2 Cube View对象模型必须被研究并且与将要映射的元数据相比较。注意元数据之间的差别可能导致元数据在被映射的时候丢失。如果元数据桥是双向的,那么判断元数据返回时被修改的程度。对于大部分的桥,不建议返回元数据。表3有一些对象类型的注意事项需要牢记。当映射到DB2 Cube View时,输出元数据XML必须有效。它必须在语法上是正确的。桥应该它们输出的DB2 Cube View元数据XML是否符合语法规则,通过验证XML和模式文件db2md_metadata.xsd。此外,输出元数据必须遵守DB2 Cube View指定的所有元数据有效性规则。在DB2 Cube View中,有三级的有效性检查。当映射到DB2 Cube View时,遵守"Base"规则就足够了。一个从DB2 Cube View读取数据的桥可能坚持让元数据服从"Cube Model completeness"元数据规则。请参看用户手册关于DB2 Cube View元数据验证等级的详细资料。

  表2 映射不同的对象类型的注意事项

对象类型 映射注意事项
Attribute SQL表达式模板是最难映射的属性,因为它常常需要分析表达式。此外,一个来自DB2 Cube View的桥需要处理引用其它Attributes的Attributes,并且递归遍历所有的Attributes以判断用于一个给定的Attribute的最终SQL表达式。当映射到一个Attribute的时候,数据类型属性不是必需的;当属性被创建的时候,由DB2 Cube View来决定。
Join Join在映射到DB2 Cube View时被创建,因为它们可以获取构建维度模型和Cube模型所需要的结构信息。
Attribute 关系 层次的一部分。在更复杂的Cube模型中可找到。
Measure 和Attribute相同的问题(也就是说,其SQL表达式模板很难映射)。桥在支持很复杂的measure时,通常有一些限制。
Facts 带有相同维度的一套Measures。注意需要映射Attribute和Join。
Dimension 当创建Dimension时,确定你包含了所有的Attributes。注意Hierarchy和Join是可选项。
Hierarchy 注意Attribute列表是顺序的。注意并不是所有的类型和配置的整合都是被允许的。桥有时对可被映射的层次类型有限制。
Cube Model 一个桥可以映射的顶级对象。一个到DB2 Cube View的桥如果可能的话应该创建一个Cube Model对象。
Cube (和 Cube Facts, Cube Dimension, Cube Hierarchy) 映射为一个Cube Model的一部分。

  使用者或生产者

  桥可以要么产生要么使用DB2 Cube View元数据。通常要求一个双向的桥,一个方向在另一个方向之前实现。在这一情况下,我们建议首先了解用于双向的映射,即使只有一个方向的映射被立即实现。通过定义双向的映射,你将保证映射合理且完整。

  映射什么

  Cube模型是DB2 Cube View中的高级元数据对象,一般是映射桥的对象。有时一个桥还可以产生或者使用与一个Cube模型相连的Cube对象。

  把元数据推进DB2 UDB的桥并不总有足够的信息用来创建一个Cube模型。为了创建一个Cube模型,一个桥通常必须知道哪些表是实际表,哪些表是维度表。如果一个桥没有这些信息,它仍然可以创建象Attribute和Joins这样的简单对象。

  渐变

  支持递增的元数据变化是用于企业数据仓库环境的桥的一个重要的特性。

  所有的Cube View元数据对象都有一个"修改时间",比如在这个对象的XML中的modifyTime ="2003-03-25T09:54:51"。使用这个修改时间来判断哪些元数据对象已经改变。这个应用程序接口不提供查询从某个时间起所有对象是否已经改变的方法,所以你必须读入一组对象,然后分别检查它们的修改时间。

  使用ALTER或IMPORT操作应用程序接口,把元数据变化推入DB2中。使用IMPORT操作,你可以判断是否要覆盖已经变化的对象。你还可以在实际执行import之前发现哪些对象有冲突。

  程序设计语言

  如果映射是从XML到XML的话,那么可以考虑使用XSLT。但是要知道,有时候映射所需的复杂的程序逻辑很难使用XSLT实现。我们知道的大部分桥都是用Java或者C/C++实现的。

  XML语法分析程序

  一种选择是使用Xerces语法分析程序。 详细信息请参阅 http://xml.apache.org/xerces-c/index.html.

  API or XML file

  无论是产生还是使用DB2 Cube View XML,一个桥都需要决定是调用应用程序接口还是处理XML文件。两种方法都各有利弊。

  使用XML文件的利弊

  使用XML文件的优点就是桥可以不依赖DB2 Cube View运行,比如在另一个客户端或者服务器上。

  使用XML文件的不利之处在于:

  · 当使用Cube View XML的时候,你不能保证元数据有效并且和DB2中的关系模式同步。

  · 当产生DB2 Cube View XML的时候,你不能保证元数据在稍后能被成功地导入。

  使用应用程序接口的利弊

  使用应用程序接口的优点是:

  · 桥可以使用VALIDATE操作来保证任何从DB2读入的元数据都有效。

  · 桥可以通过查询DB2系统目录表读取被引用表的附加信息。

  · 桥可以参看DB2中的所有元数据。

  应用程序接口的不利之处是,它可能要花很长时间来实现桥,因为你需要添加代码来调用DB2 Cube View应用程序接口。程序需要产生操作XML并且分析响应XML。

  实现步骤

  下面的是如何成功设计和实现桥的基本步骤。

  1. 产生一个设计文件,包含详细的映射。

  2. 根据真实的测试情况测试映射,然后根据需要修正设计。

  3. 实现桥。

  4. 执行对这个桥的严格的质量保证。

  经验表明,一个典型的元数据桥工程需要三月以上的时间。一个月用来设计,一个多月用来实现,还有一个月用来测试。建议让客户参与Beta测试。

  结论

  IBM鼓励业务智能工具和解决方案的开发者能和DB2 UDB的DB2 Cube View特性交互操作。对于许多OLAP工具和应用程序,与DB2 Cube View的整合需要使用基于XML存储过程接口读取或者创建元数据。本文中我们已经看到,在我们对存储过程使用的用于输入输出的XML语法融会贯通之后,这个接口就变得非常容易了。

  在我们能够轻松自如的使用这个应用程序接口之后,我们可以进行把DB2 Cube View元数据映射到其它格式的工作。我们还提到了构建用于DB2 Cube View的元数据桥的注意事项。能够映射元数据的桥对于解决方案开发者非常重要,因为一个好的桥将给他们节省很多用于构建和配置解决方案的时间。


版权所有:UML软件工程组织