1. 前言
在事务处理系统中的数据,主要用于记录和查询业务情况。随着数据仓库(DW)技术的不断成熟,企业的数据逐渐变成了决策的主要依据。数据仓库是一种面向决策主题、由多数据源集成、拥有当前及历史总结数据、以读为主的数据库系统,其目的是支持决策。数据仓库要根据决策的需要收集来自企业内外的有关数据,并加以适当的组织处理,使其能有效地为决策过程提供信息。数据仓库中的数据是从许多业务处理系统中抽取、转换而来,对于这样一个复杂的企业数据环境,如何以安全、高效的方式来对它们进行管理和访问就变得尤为重要。解决这一问题的关键是对元数据进行科学有效的管理。元数据是关于数据、操纵数据的进程和应用程序的结构和意义的描述信息,其主要目标是提供数据资源的全面指南。元数据不仅定义了数据仓库中数据的模式、来源以及抽取和转换规则等,而且整个数据仓库系统的运行都是基于元数据的,是元数据把数据仓库系统中的各个松散的组件联系起来,组成了一个有机的整体。
本文首先介绍了元数据的定义、作用和意义;然后讨论了数据仓库系统中元数据管理的现状和关于元数据的标准化情况;最后提出了建立元数据管理系统的步骤和实施方法。
2. 元数据
2.1 元数据的概念
按照传统的定义,元数据(Metadata)是关于数据的数据。在数据仓库系统中,元数据可以帮助数据仓库管理员和数据仓库的开发人员非常方便地找到他们所关心的数据;元数据是描述数据仓库内数据的结构和建立方法的数据,可将其按用途的不同分为两类:技术元数据(Technical Metadata)和业务元数据(Business Metadata)。
技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库使用的数据,它主要包括以下信息:
数据仓库结构的描述,包括仓库模式、视图、维、层次结构和导出数据的定义,以及数据集市的位置和内容;
业务系统、数据仓库和数据集市的体系结构和模式;
汇总用的算法,包括度量和维定义算法,数据粒度、主题领域、聚集、汇总、预定义的查询与报告;
由操作环境到数据仓库环境的映射,包括源数据和它们的内容、数据分割、数据提取、清理、转换规则和数据刷新规则、安全(用户授权和存取控制)。
业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够“读懂”数据仓库中的数据。业务元数据主要包括以下信息:使用者的业务术语所表达的数据模型、对象名和属性名;访问数据的原则和数据的来源;系统所提供的分析方法以及公式和报表的信息;具体包括以下信息:
企业概念模型:这是业务元数据所应提供的重要的信息,它表示企业数据模型的高层信息、整个企业的业务概念和相互关系。以这个企业模型为基础,不懂数据库技术和SQL语句的业务人员对数据仓库中的数据也能做到心中有数。
多维数据模型:这是企业概念模型的重要组成部分,它告诉业务分析人员在数据集市当中有哪些维、维的类别、数据立方体以及数据集市中的聚合规则。这里的数据立方体表示某主题领域业务事实表和维表的多维组织形式。
业务概念模型和物理数据之间的依赖:以上提到的业务元数据只是表示出了数据的业务视图,这些业务视图与实际的数据仓库或数据库、多维数据库中的表、字段、维、层次等之间的对应关系也应该在元数据知识库中有所体现。
2.2 元数据的作用
在数据仓库系统中,元数据机制主要支持以下五类系统管理功能:
(1)描述哪些数据在数据仓库中;
(2)定义要进入数据仓库中的数据和从数据仓库中产生的数据;
(3)记录根据业务事件发生而随之进行的数据抽取工作时间安排;
(4)记录并检测系统数据一致性的要求和执行情况;
(5)衡量数据质量。
与其说数据仓库是软件开发项目,还不如说是系统集成项目[1],因为它的主要工作是把所需的数据仓库工具集成在一起,完成数据的抽取、转换和加载,OLAP分析和数据挖掘等。如图1所示,它的典型结构由操作环境层、数据仓库层和业务层等组成。
其中,第一层(操作环境层)是指整个企业内有关业务的OLTP系统和一些外部数据源;第二层是通过把第一层的相关数据抽取到一个中心区而组成的数据仓库层;第三层是为了完成对业务数据的分析而由各种工具组成的业务层。图中左边的部分是元数据管理,它起到了承上启下的作用,具体体现在以下几个方面:
l 便于集成
l 提高系统的灵活性
l 保证数据的质量
l 帮助用户理解数据的意义
3. 数据仓库元数据管理现状
元数据管理的主要任务有两个方面:一是负责存储和维护元数据库中的元数据;二是负责数据仓库建模工具、数据获取工具、前端工具等之间的消息传递,协调各模块和工具之间的工作。
由以上几节我们了解到元数据几乎可以被称为是数据仓库乃至商业智能(BI)系统的“灵魂”,正是由于元数据在整个数据仓库生命周期中有着重要的地位,各个厂商的数据仓库解决方案都提到了关于对元数据的管理。但遗憾的是对于元数据的管理,各个解决方案都没有明确提出一个完整的管理模式;它们提供的仅仅是对特定的局部元数据的管理。当前市场上与元数据有关的主要工具见图2。
如图2所示,与元数据相关的数据仓库工具大致可分为四类:
1. 数据抽取工具:把业务系统中的数据抽取、转换、集成到数据仓库中,如Ardent的DataStage、CA(原Platinum)的Decision Base和ETI的Extract等。这些工具仅提供了技术元数据,几乎没有提供对业务元数据的支持。
2. 前端展现工具:包括OLAP分析、报表和商业智能工具等,如MicroStrategy的DSS Agent、Cognos的PowerPlay、Business Objects的BO,以及Brio等。它们通过把关系表映射成与业务相关的事实表和维表来支持多维业务视图,进而对数据仓库中的数据进行多维分析。这些工具都提供了业务元数据与技术元数据相对应的语义层。
3. 建模工具:为非技术人员准备的业务建模工具,这些工具可以提供更高层的与特定业务相关的语义。如CA的ERwin、Sysbase的PowerDesigner以及Rational的Rose等。
4. 元数据存储工具:元数据通常存储在专用的数据库中,该数据库就如同一个“黑盒子”,外部无法知道这些工具所用到和产生的元数据是如何存储的。还有一类被称为元数据知识库(Metadata Repository)的工具,它们独立于其它工具,为元数据提供一个集中的存储空间。包括微软的Repository,CA的Repository,Ardent的MetaStage和Sybase的WCC等。
4. 元数据管理的标准化
没有规矩不成方圆。元数据管理之所以困难,一个很重要的原因就是缺乏统一的标准。在这种情况下,各公司的元数据管理解决方案各不相同。近几年,随着元数据联盟MDC(Meta Data Coalition)的开放信息模型OIM(Open Information Model)和OMG组织的公共仓库模型CWM(Common Warehouse Model)标准的逐渐完善,以及MDC和OMG组织的合并,为数据仓库厂商提供了统一的标准,从而为元数据管理铺平了道路。
从元数据的发展历史不难看出,元数据管理主要有两种方法:
(1) 对于相对简单的环境,按照通用的元数据管理标准建立一个集中式的元数据知识库。
(2) 对于比较复杂的环境,分别建立各部分的元数据管理系统,形成分布式元数据知识库,然后,通过建立标准的元数据交换格式,实现元数据的集成管理。
下面我们分别介绍数据仓库领域中两个最主要的元数据标准:MDC的OIM标准和OMG的CWM标准。
4.1 MDC的OIM存储模型
MDC成立于1995年,是一个致力于建立与厂商无关的、不依赖于具体技术的企业元数据管理标准的非赢利技术联盟,该联盟有150多个会员,其中包括微软和IBM等著名软件厂商。1999年7月MDC接受了微软的建议,将OIM作为元数据标准。
OIM的目的是通过公共的元数据信息来支持不同工具和系统之间数据的共享和重用。它涉及了信息系统(从设计到发布)的各个阶段,通过对元数据类型的标准描述来达到工具和知识库之间的数据共享。OIM所声明的元数据类型都采用统一建模语言UML(Universal Modeling Language)进行描述,并被组织成易于使用、易于扩展的多个主题范围(Subject Areas),这些主题范围包括:
分析与设计(Analysis and Design):主要用于软件分析、设计和建模。该主题范围又进一步划分为:UML包(Package)、UML扩展包、通用元素(Generic Elements)包、公共数据类型(Common Data Types)包和实体关系建模(Entity Relationship Modeling)包等。
对象与组件(Object and Component):涉及面向对象开发技术的方方面面。该主题范围只包含组件描述建模(Component Description Modeling)包。
数据库与数据仓库(Database and Warehousing):为数据库模式管理、复用和建立数据仓库提供元数据概念支持。该主题范围进一步划分为:关系数据库模式(Relational Database Schema)包、OLAP模式(OLAP Schema)包、数据转换(Data Transformations)包、面向记录的数据库模式(Record-Oriented Database Schema)包、XML模式(XML Schema)包和报表定义(Report Definitions)包等。
业务工程(Business Engineering):为企业运作提供一个蓝图。该主题范围进一步划分为:业务目标(Business Goal)包、组织元素(Organizational Elements)包、业务规则(Business Rules)包、商业流程(Business Processes)包等。
知识管理(Knowledge Management):涉及企业的信息结构。该主题范围进一步划分为:知识描述(Knowledge Descriptions)包和语义定义(Semantic Definitions)包。
上述主题范围中的包都是采用UML定义的,可以说UML语言是整个OIM标准的基础。虽然OIM标准并不是专门针对数据仓库的,但数据仓库是它的主要应用领域之一。目前市场上基于该标准的元数据管理工具已经比较成熟,例如微软的Repositry和CA的Repositry均采用了OIM标准。
4.2 OMG组织的CWM模型
OMG是一个拥有500多会员的国际标准化组织,著名的CORBA标准即出自该组织。公共仓库元模型(Common Warehouse Metamodel)的主要目的是在异构环境下,帮助不同的数据仓库工具、平台和元数据知识库进行元数据交换。2001年3月,OMG颁布了CWM 1.0标准。CWM模型既包括元数据存储,也包括元数据交换,它是基于以下三个工业标准制定的:
(1) UML:它对CWM模型进行建模。
(2) MOF(元对象设施):它是OMG元模型和元数据的存储标准,提供在异构环境下对元数据知识库的访问接口。
(3) XMI(XML元数据交换):它可以使元数据以XML文件流的方式进行交换。
OMG元数据知识库体系结构如图3所示。
CWM为数据仓库和商业智能(BI)工具之间共享元数据,制定了一整套关于语法和语义的规范。它主要包含以下四个方面的规范:
(1) CWM元模型(Metamodel):描述数据仓库系统的模型;
(2) CWM XML:CWM元模型的XML表示;
(3) CWM DTD:DW/BI共享元数据的交换格式
(4) CWM IDL:DW/BI共享元数据的应用程序访问接口(API)
下面重点讨论CWM元模型的组成,它与OIM规范一样,也是由很多包组成的。组成CWM元模型的包结构如图4所示。
(1) 元模型(MetaModel)包:构造和描述其它CWM包中的元模型类的基础。它是UML的一个子集,由以下四个子包组成:
a) 核心(Core)包:它的类和关联是该模型的核心,其它所有的包都以它为基础。
b) 行为(Behavioral)包:包括描述CWM对象行为的类与关联,并且它为描述所定义的行为提供了基础。
c) 关系(Relationships)包:包括描述CWM对象之间关系的类与关联。
d) 实例(Instance)包:包括表示CWM分类器(Classfier)的类与关联。
(2) 基础包(Foundation):它包括表示CWM概念和结构的模型元素,这些模型元素又可被其他CWM包所共享,它由以下六个子包组成:
a) 业务信息(Business Information)包:包括表示模型元素业务信息的类与关联。
b) 数据类型(Data Types)包:包括表示建模者可以用来创建所需数据类型的结构的类与关联。
c) 表达式(Expressions)包:包括表示表达式树的类与关联。
d) 关键字和索引(Keys and Indexes)包:包括表示键和索引的类与关联。
e) 软件发布(Software Deployment)包:包括软件如何在数据仓库中发布的类与关联。
f) 类型映射(Type Mapping)包:包括表示不同系统之间数据类型映射的类与关联。
(3) 资源包(Resource):用于描述数据资源的包,它包括以下四个子包:
a) 关系(Relational)包:包括表示关系型数据资源的元数据的类与关联。
b) 记录(Record)包:包括表示记录型数据资源的元数据的类与关联。
c) 多维(Multidimensional)包:包括表示多维数据资源的元数据的类与关联。
d) XML包:包括表示XML数据资源的元数据的类与关联。
(4) 分析(Analysis)包:它由以下五个子包组成:
a) 转换(Transformation)包:包括表示数据抽取和转换工具的元数据的类与关联。
b) OLAP包:包括表示OLAP工具的元数据的类与关联。
c) 数据挖掘(Data Mining)包:包括表示数据挖掘工具的元数据的类与关联。
d) 信息可视化(Information Visualization)包:包括表示信息可视化工具的元数据的类与关联。
e) 业务术语(Business Nomenclature)包:包括表示分类业务的元数据的类与关联。
(5) 管理(Management)包:用于描述数据仓库管理的包,它包括以下两个子包:
a) 仓库过程(Warehouse Process)包:包括表示仓库过程的元数据的类与关联。
b) 仓库操作(Warehouse Operation)包:包括表示仓库操作结果的元数据的类与关联。
在数据抽取过程中,数据从各个业务系统中被统一转换存储到中央数据仓库中。CWM中的转换模型定义了数据在源和目的之间移动的过程,其中不仅包括源和目标之间的参数,还包括转换中的业务逻辑。这些业务逻辑可能包括一些商业规则、类库甚至是用户脚本。数据仓库如果有一个规范的转换模型将给工具软件厂商和专业服务提供商带来极大的好处,例如,按照统一的规范厂商可以设计一个通用的模型从标准ERP包中抽取数据。工具厂商甚至可以随软件提供成熟的模型,集成商也可以将一个模型应用到多个项目中。
最终用户同样也能从CWM中受益,在使用商业智能分析软件进行多维分析的时候,用户往往会对数据的含义和来源产生疑问。CWM能够提供这些信息,用户可以清楚地看到数据来自哪个系统,并且是如何组成的。
4.3 CWM与OIM之间的关系
上两节分别介绍了与数据仓库相关的两个主要标准,CWM实际上是专门为数据仓库元数据而制定的一套标准,而OIM并不是针对数据仓库元数据的。OIM所关注的元数据的范围比CWM要广,CWM只限定于数据仓库领域,而OIM模型包括有:分析与设计模型、对象与组件、数据库与数据仓库、商业工程、知识管理等五个领域。OIM与CWM在建模语言的选择(都选择UML当做自己的描述语言)、数据库模型的支持、OLAP分析模型的支持、数据转换模型的支持方面都比较一致;但是OIM并不是基于元对象设施(MOF)的,这意味着用OIM所描述的元数据需要通过其它的接口才能访问,而CWM所描述的元数据可以通过CORBA IDL来访问;在数据交换方面,OIM必须通过特定的转换形成XML文件来交换元数据,而CWM可以用XMI来进行交换。尽管如此,由于OMG与MDC两个组织的合并,CWM也会与OIM相互兼容以保护厂商已有的投资。
需要说明的是,MDC与OMG组织已经合并,今后所有的工具都将遵循统一的CWM标准,不过支持CWM的工具才刚刚出现,而支持OIM标准的工具已经相对成熟。
5. 元数据管理的相关研究工作
目前元数据的研究集中在:数据和数据库管理[11,12,13]、元数据模型[14,15,16]、数据集成[17,18]、元数据工具[19]。在各研究领域中都存在一些问题。
在数据仓库的研究课题当中,有许多是针对元数据的研究。文献〔5〕描述了一个在数据仓库环境中,基于微软的Repositry的、元数据驱动的数据转换方法,它包含了技术元数据与业务元数据;文献〔6〕中描述了一个基于元数据的数据仓库安全的解决方法,它只限定在技术元数据级别;更有名的一个研究项目是数据仓库质量项目(Data Warehouse Quality),这个项目的核心是通过元数据模型来衡量整个数据仓库中的数据质量。它是基于一个演绎数据库CONCEPTBASE的,并且使用该数据库特定的逻辑语言进行描述,目前该项目距离实用的阶段还比较远。
6. 元数据管理系统的设计与实现
6.1 设计原则
数据仓库环境下的元数据管理系统的建设是十分困难的。但是在实际项目的实施过程中,这个环节又是非常重要的。当前情况下,OMG组织的CWM标准将会成为数据仓库元数据领域事实上的标准,在元数据管理系统的建立过程中应尽量参考这个标准,这样使系统的可扩展性增强。可是在与之相关的工具成熟之前,我们完全可以采用OIM中的元模型(因CWM对OIM是兼容的)以及支持它的元数据管理工具进行元数据管理系统的建设,而且元数据所包含的范围很广。我们在建立元数据管理系统的时候,绝对不能盲目追求大而全,要坚持目标驱动的原则,在实施的时候要采取增量式、渐进式的建设原则。具体的建设步骤如下:
(1) 如果是在建设数据仓库系统的初期,那么首先要确定系统的边界范围,系统范围确定的原则是首先保障重点,不求大,只求精。
(2) 系统边界确定以后,把现有系统的元数据整理出来,加入语义层的对应。然后存到一个数据库中,这个数据库可以采用专用的元数据知识库,也可以采用一般的关系型数据库。
(3) 确定元数据管理的范围。比如,我们只想通过元数据来管理数据仓库中数据的转换过程,以及有关数据的抽取路线,以使数据仓库开发和使用人员明白仓库中数据的整个历史过程。
(4) 确定元数据管理的工具,采用一定的工具可以完成相应的工作。当前相关工具有微软的Repositry,它带有相应的编程接口,可以借助于它来完成元模型出入库的功能;与之相似的还有Platinum的OEE;另外还有Sybase的Wcc,它可以通过MDC以前的一个老标准――MDIS来集成抽取工具与转换工具,在一个窗口中就可以表示数据抽取与转换,并且可以把语义层以MDIS的格式导出到一个前端工具当中(比如Cognos的Improptu)。
6.3 元数据存储模式
元数据存在的状况是有差异的,系统层元数据应随数据库存在,且由建立在分布式网络数据库管理系统统一管理;数据集层次元数据可以随数据库存在也可随数据集存在;数据特征层次的元数据只能随数据集存在。
简单地,元数据存贮有两种形式(图5):其一是以数据集为基础,即每一个数据集有一个对应的元数据文档,每一个元数据文件中包含对相应数据集的元数据内容。另一种存在方式是以数据库为基础(即元数据库),给一个数据库有一个元数据文件,该文件为一表格数据,它由若干项组成,每一项表示元数据的一个要素,其记录为每一个数据集的元数据内容。
两种存贮方式各有优缺点,对于第一种存储模式,其好处是调用数据时其相应的元数据也作为一个独立的文件被传输,相对数据库有较强的独立性,在对元数据进行检索时可以利用数据库的功能实现,也可以将元数据文件调到其它数据库系统中进行操作;其问题是:每一数据集都有一个元数据文档,那么在规模巨大的数据库中则会有大量的元数据文件,管理上极为不便。在第二中存在模式中,由于库中只有一个元数据文件,管理极为方便,添加或删除数据集只把该文件中添加或删除相应的记录项即可;但如果想获取某数据集的元数据时,实际得到的只是关系表格数据的一个记录,则要求数据用户使用的系统中可以接受这种特定形式的数据。因此推荐使用元数据库的方式。
元数据库是用于存储元数据的地方,元数据库最好选用主流的关系数据库管理系统,支持CWM标准。一个元数据库还包含那些用于操作和查询元数据的机制;建立元数据库的主要好处是提供了统一的关键数据结构和业务规则,易于将企业内部的多个数据集市有机的结合起来;特别是,现在一些客户倾向建立多个数据集市,而不是一个庞大无比的数据仓库。可以考虑在建立数据仓库(或数据集市)之前,先建立一个用于描述数据的、用于应用集成的元数据库,做好数据仓库实施的初期支持工作,对后续开发和维护有很大的帮助。
在拥有不同厂商、不同功能和不同元数据库的环境下,要实现两种产品之间的元数据同步是非常富有挑战性的工作。因为必须从一种产品中获得足够详细的元数据,将其映射到另一种产品中,再指出两者意义或编码的差别;通常系统有数百、数千个元数据,必须对每个元数据重复这一过程。
在整个数据仓库环境中,元数据管理工具可以从各个数据仓库组件中收集元数据,存储到元数据库中,然后向业务用户传递和展示正确的信息。采集、集成和描述元数据可以扩展到十分广泛的范围,可以在设计和建模的过程中,可以在数据转换、清洗和过滤的过程中,也可以在数据移植的过程中;可以从数据库/数据存储软件,和前端展示工具中得到元数据。
元数据库为整个企业的宝贵信息提供了详细的记录,保存数据存储位置和商业含义、生成和维护数据的主体、数据驱动的应用处理、与其它数据的关系以及数据的转换过程等。元数据库保证了数据仓库数据的一致性和准确性,为企业进行数据质量管理提供数据依据。
另外,元数据库还支持强大的查询和报表生成工具,用户使用报表工具可以查询元数据库,从元数据库获得重要的决策支持信息。
6.2 元数据管理模式
元数据管理涉及到各个层次的元数据,管理的内容包括元数据的获取、元数据的更新、使用和面向应用项目的元数据使用处理等多个方面。元数据的管理涉及数据库、数据处理软件、数据使用系统、面向应用的数据分析等各个环节。下面给出了一种普通意义的以元数据信息系统为基础的元数据管理模式(图6):
通常意义上的元数据管理是指元数据通过各种途径形成后,对其内容的添加、删除、更新等涉及内容改变的操作和元数据内容检索、查询、放置、组织等常规性元数据操作,从这种意义上元数据的管理可以通过两种方式实现,即系统管理模式和用户管理模式。系统管理模式是面向数据库的,由数据库管理系统专业人员完成,数据用户只有使用权,没有元数据的操作权,数据应用项目中新生成的数据集的元数据也有应用系统传递给数据库管理员,然后由数据库管理员统一管理。这种方式中,数据在处理过程中形成的动态元数据很难及时记录下来。另一种管理方式是用户管理模式,它是面向应用项目的,即允许某些数据用户在数据应用元数据的变动信息直接反馈给元数据库,这样则能保证元数据的动态更新和新生成数据集元数据的及时捕获及写入元数据文件。但这种模式中数据用户的权限要适当的控制,以避免数据库的破坏。通常对元数据的管理是采用两者结合的模式。
总之,建立元数据管理系统一定要坚持关注标准,又不被标准所束缚的原则,建立符合自身目标的元数据管理系统。