公共仓库元模型(CWM)学习(一)

一、什么是CWM?

在我们学习一个新东西时,首先得弄懂明白它是用来干什么的?然后通过实例与理论交错学习,CWM——Common Warehouse Metamodel, 很明显翻译过来时公共仓库元模型,CWM的提出主要基于以下背景:

  • 从数据仓库开发者的角度:单一工具很少能完全满足用户不断变化的需求,但同时又很难对各种产品进行集成;
  • 从数据仓库用户的角度:面对的信息量太大,无法轻易找到自己真正需要的,而且把这些信息完整正确地表示出来也是个挑战;
  • 从数据仓库供应商的角度:目前信息的共享还没有标准格式,元数据集成的代价太大;


现在有很多数据仓库产品,它们对元数据都有自己的定义和格式,百家争鸣,都不愿与其他厂商共享,然后最终的客户往往又不会选择一家公司为其建设数据仓库,其主要原因我想还是怕在一棵树上吊死, 因此创建、管理和共享元数据很耗时而且容易出错。要解决上面这些问题,就必须得用标准的语言描述数据仓库元数据的结构和语义,并提供标准的元数据交换机制。CWM就是满足这些条件的一个规范。

OMG(对象管理组织)在2000年发布了CWM规范,旨在推动数据仓库、智能商务和知识管理方面元数据的共享和交换。和OMG合作提出CWM规范的公司有:IBM,Unisys,NCR,Hyperion Solutions,Oracle,UBS AG,Genesis Development,Dimension EDI。还有一些公司明确表示支持CWM,包括:Deere & Company,Sun,HP,Data Access Technologies,InLine Software,Aonix,Hitachi, Ltd。

说白了,CWM其实就是一个元数据交换的标准,为各种数据仓库产品提出的一个标准。

二、CWM组成元素?

CWM主要基于以下三个工业标准:

  • UML(Unified Modeling Language):统一建模语言,是OMG的一个建模标准;
  • MOF(Meta Object Facility):元对象工具,是OMG关于元模型和元数据库的一个标准;
  • XMI(XML Metadata Interchange),XML元数据交换,是OMG关于元数据交换的标准;

 咋一看,是不是很熟悉,尤其是UML 、 XML  大家应该很明白这是干什么的吧,这三个标准是OMG元数据库体系结构的核心,UML定义了表示模型和元模型的语法和语义。MOF为构建模型和元模型提供了可扩展的框架,并提供了存取元数据的程序接口。而利用XMI则可以将元数据转换为标准的XML数据流或文件的格式,以便进行交换,这大大增强了CWM的通用性。

三、CWM元素之间的关系?

从小老师就教我们团结就是力量,如果单独的里面的某个元素出来,干的事情肯定寥寥无几,而且还不尽完美,所以明白之间的关系很重要,为了说明CWM和这三个标准之间的关系,首先介绍一下元数据的层次。传统的元数据有四个层次,除了最底层外,每一层都对它的下一层进行描述。最底层是用户对象层(M0),包括用户要描述的信息,这些信息统称为数据。向上一层是模型层(M1),由描述信息的元数据组成,在这一层,元数据一般都组合成模型的形式。再向上一层是元模型层(M2),由定义M1层元数据格式和语义的描述信息组成,也就是元元数据,一般组合成元模型的形式。最高层是元元模型层(M3),它定义了元模型的结构和语义。下面举个例子对这种四层结构进行说明。

 M

上图中四层的内容解释如下:

  • 数据层是学生记录(Record)的实例,即具体的某个学生;
  • 模型层描述学生这个记录类型的内容,它有一个名字(“Student”)和两个字段(Field),每个字段都有一个名字和类型,比如第一个字段的名字是“name“,字段类型是String;
  • 元模型层对Record这种类型进行定义,在这一层, Record是元类metaClass的一个实例,一个Record拥有两个元属性metaAttribute,第一个name定义它的名字,是String类型,第二个fields定义它包含的字段集,字段集中的成员是Field类型。类似的,元类field应该也包含两个元属性:名字name和类型type;
  • 元元模型层的结构是基本固定的,它将所有概念抽象为以下这些组件:元类meta-Class、元属性meta-Attribute和元关联meta-Association,并定义了元类之间的关系,主要包括:包含(Contains),继承(Generalizes),类型引用(IsOfType)和依赖(DependsOn);

理论上,还可以再向上抽象,但由于元元模型层是自描述的,所以四层就足够了。至于为什么要抽象出上面两层,则是为了支持各种不同的模型和元模型。

综上所述,可以用下面这张表来描述OMG的上述规范和元数据四层结构的对应关系:

元数据层次 MOF术语

示例

M3

元元模型

MOF模型

M2

元模型,元元数据

UML元模型,CWM元模型

M1

模型,元数据

UML模型,CWM模型

M0

对象,数据

数据仓库数据

通过上面的学习,大家应该从思维模式上开始对CMW有了一定的感性认识,元数据层次从M0到M3其实就是对原始数据的一种抽象描述,因为元数据本来就是来描述数据的,这里的层次抽象就是将这些元数据如何用XML描叙出来,然后对外交换,这样标准就形成了!!哈哈 是不是有点晕,没关系下篇继续….

参考:http://tech.it168.com/bitech/2007-11-30/200711301245741.shtml

已有5 条评论

ahuoo进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>