公共仓库元模型(CWM)(转)

转自:https://www.jianshu.com/p/21207b50084a

一、什么是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),它定义了元模型的结构和语义。下面举个例子对这种四层结构进行说明。

四层的内容解释如下:

  • 数据层是学生记录(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的上述规范和元数据四层结构的对应关系:

image.png


四、 CWM的组成结构
CWM完整地描述了数据仓库元数据交换的语法和语义以及用于异质平台之间的元数据交换机制,它由三个部分组成:
1、CWM元模型
CWM元模型描述了数据仓库的组成元素,用户可以按照这些元模型开发相应的组件,比如ETL、OLAP和数据挖掘等。为了降低复杂度并达到重用,CWM元模型采用分层的方式组织它所包含的包,大家可以看看CWM元模型的包结构图:

 

如图中所示,CWM元模型主要包括四层:基础包Foundation,资源包Resource,分析包Analysis和管理包Management。
基础包主要定义了为CWM其它包所共享的一些基本概念和结构,它包含的子包有:
Business Information:定义了面向业务的通用信息,比如负责人信息等;
Data Types:定义了其它包用以创建自己所需的数据类型的元模型组件;
Expressions:定义了CWM其它包定义表达式树所需的元模型组件;
Keys and Indexes:定义了描述关键字和索引的共享元模型;
Software Deployment:描述一个软件在数据仓库中如何被使用的元模型;
Type Mapping:支持不同系统之间数据类型的映射的元模型;

资源包主要定义了一些描述常用的数据源/目标的元模型,它包含的子包有:
Relational:描述通过关系型接口访问的数据库的数据模型和元模型,比如RDBMS,ODBC,JDBC等;
Record:描述记录的基本概念和结构的元模型,这里记录的概念很广泛,它可以描述任何结构化的信息,比如数据库的一条记录、文档等;
Multidimensional:描述多维型数据库的元模型;
XML:描述用XML表示的数据源和数据目标;

分析包主要定义了一些描述数据仓库工具的元模型,它包含的子包有:
Transformation:定义数据仓库中抽取转换规则的元模型,它包含对各种类型数据源之间的转换规则的描述;
OLAP:对OLAP工具和应用进行描述,并定义了它到实际系统的映射;
Data Mining:对数据挖掘工具和应用进行描述;
Information Visualization:定义了问题领域中有关信息发布或者信息可视化的元模型;
Business Nomenclature:对业务数据进行描述,比如业务术语及其适用范围等;

管理包主要定义了一些描述数据仓库运行和调度信息的元模型,它包含的子包有:
Warehouse Process:描述数据仓库中抽取转换规则的执行过程,也就是各个转换规则的触发条件;
Warehouse Operation:描述数据仓库日常运行情况的元模型;

2、CWM DTD 和CWM XML CWM DTD和XML是对应于CWM中所有包的DTD和XML,它们都遵循XMI规范。定义CWM DTD和XML的主要目的是为了基于XML进行元数据交换,因为XML在各个领域的应用越来越广泛,CWM提供元模型到XML的转换,无疑大大增加了自己的通用性,各种分析工具和元数据库可以利用这些模板为自己的元模型生成DTD和XML文档,就可以和其它的工具之间进行元数据交换。

3、CWM IDL
CWM IDL为上面所有的包定义了符合MOF1.3的IDL接口,这样就可以利用CORBA进行元数据交换。用户可以创建一些具有分析功能的软件包,比如数据挖掘组件等。提供CWM中规定的IDL接口,就可以被其它支持CWM的工具和数据仓库调用,这大大增强了CWM的灵活性和适用性。

五、CWM的特点

通过对CWM组成结构的介绍,可以看出CWM具有以下特点:

Ø 对所有的数据仓库功能元数据定义了详细的元模型和交换方式,包括技术元数据(比如Software Deployment,Transformation,Warehouse Process等)和业务元数据(比如OLAP,Business Information等);

Ø 定义了一个通用且强大的Transformation包,可以表示任何数据源和数据目标之间的转换规则。此外,还为多种常用的数据源/目标(比如Relational,Record,Multidimensional,XML等)和工具相关的数据源(比如IMS,DMSII,COBOL Data,Essbase和Express等)定义了元模型和交换方式;

Ø 对所有的数据仓库运行元素定义了元模型和交换方式,包括调度、状态报告和历史记录等;

Ø 对所有的分析型数据以及主要的分析型数据模型定义了元模型和交换方式,比如多维型;

Ø 对操作型数据以及主要的操作型数据模型定义了元模型,比如关系型和面向对象型;

六、CWM的设计目标

CWM主要的设计目标和原则有以下几个方面:

Ø 对UML中概念的重用:UML 1.3 是整个CWM的设计基础,CWM在任何可能的地方对UML中的概念进行重用,所有的CWM对象类型都直接或间接地继承于UML,因此也继承了它们的属性和方法。这样可以节省很多重复工作,并且使CWM更容易理解,所有熟悉UML的用户都可以有一个比较高的起点;

Ø 模块化:CWM元模型被分成许多包,以便它们分别实现并减少复杂度。

Ø通用化:CWM元模型独立于任何具体的数据仓库工具,但同时,它尽量多地包含了基于特定工具实现的有代表性且通用的数据仓库特点。也就是说,只有那些多种工具共享的信息才会被CWM元模型包含进来;

七、CWM的应用人群

CWM主要面向以下几类用户:

Ø 数据仓库平台和工具提供商:CWM为他们提供了一个组件可插卸的通用系统框架。因为这是一种全球通用的元数据交换协议,所以他们可以很方便地在各种异质平台上发布自己的产品;

Ø 数据仓库服务提供者:可重用、可编辑、可扩展的CWM元数据大大提高了他们的工作效率。因为CWM与产品无关,所以可以避免大量的重复设计工作;

Ø 数据仓库管理员:数据仓库管理员有时需要对现有工具进行整合,而CWM XML无疑为他们提供了一种最方便的整合方式。另外,管理员经常需要对资源进行增减、分区或者重新分配,CWM提供了这方面的元数据以帮助他们完成这些工作,并对改变造成的影响作出评估;

Ø 终端用户:CWM为查询和展示工具定义了元模型,以便更方便快捷地为终端用户展示他们所需的信息;

Ø信息技术管理者:CWM为系统管理和报表工具定义了元模型,使得用户能够更轻松地对系统和信息进行管理;

posted @ 2024-01-08 14:23  粒子先生  阅读(386)  评论(0编辑  收藏  举报