1. 引言
本篇主要讲述数据仓库系统的体系结构与组成要素、数据集市与数据仓库之间的关系、元数据的定义与作用。
在上一篇,笔者介绍了数据仓库的定义:
“数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的用来更好地支持企业或组织决策分析的数据集合。”
数据仓库是区别于传统操作型数据库的数据集合,主要应用于分析型数据操作,支持企业全局的决策分析。但是要实现这一应用目的,单一的数据仓库是无法完成的,需要建立一个数据仓库系统。
基于数据仓库系统,完成数据从操作型数据库等数据源到数据仓库或者数据集市的流动、传输,以支持前台的决策分析处理工作。
2. 数据仓库系统的体系结构
一个典型的数据仓库系统的体系结构图,如下所示。
简单地说,数据从操作型数据库、文件、网络等数据源,通过ETL集成工具进行数据抽取、清洗、转换、加载等工作,进入到数据仓库和数据集市中,进而通过OLAP服务器支持前台的多维分析、查询报表、数据挖掘等操作。
3. 组成要素
数据仓库系统是由数据源、集成工具、数据仓库与数据仓库服务器、OLAP服务器、元数据与元数据管理工具、数据集市和前台分析工具等组成。
(1)数据源:
数据源就是提供初始数据的地方,是数据仓库系统的基础。通常包括企业内部数据和外部数据。内部数据包括各种操作型数据库中的数据以及文档数据,外部数据包括各类法律法规、市场信息、竞争对手信息以及各种统计数据和文档。
(2)集成工具:
即ETL工具。ETL是Extract-Transform-Load
的缩写,包括数据抽取(Extracting
)、数据清洗(Cleaning
)、数据转换(Transforming
)、数据加载(Loading
)等工作。具体地说:
- 数据抽取,就是从不同数据源中选择数据仓库所需要的数据。这些数据可能具有的特点是:来自不同平台、不同结构、不同类型等。
- 数据清洗,由于数据来自于不同的数据源,因此数据质量难以保证,比如存在数据不一致性、量纲不同、值缺失等情况,就需要对抽取到的数据进行清洗。
数据转换,就是将面向应用的数据转换成面向主题的数据。
什么是面向主题的数据?在上一篇博文第6节已经介绍到
数据加载,就是将数据装入到数据仓库中。
补充:ETL工作是BI/DW项目的核心和灵魂,它按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60%~80%,这是国内外从众多实践中得到的普遍共识。
(3)数据仓库服务器:
数据仓库服务器负责管理数据仓库中的数据,为整个企业的数据分析提供一个完整的、统一的视图。
(4)OLAP服务器:
使用OLAP服务器对分析需要的数据按照多维数据模型进行再次重组,以支持用户多角度、多层级的数据分析。
(5)数据集市:
数据集市是一个小型的数据仓库,通常具有较少的主题域,是部门级的数据仓库,面向部门级的应用。
(6)前台分析工具:
包括各种数据分析工具,如报表工具、OLAP分析工具、数据挖掘工具。各种分析工具既可以从数据仓库中获取数据,还可以从数据集市中获取数据。
(7)元数据:
元数据就是整个数据仓库的所有描述性信息,即关于数据的数据。ETL负责建立元数据。
总结:数据从数据源到将最终的分析结果呈现给用户,需要经历以下几个过程:
① 从各种数据源中抽取合适的、需要的数据;
② 对数据进行清洗、加工、转换、重构等预处理工作;
③ 建立高效、海量的企业数据仓库(Enterprise Data Warehouse,EDW
);
④ 针对特定的分析主题,建立专门的数据集市(Data Mart,DM
);
⑤ 针对特定的业务需要,创建前端数据展现应用,或者开展专题分析项目。
4. 数据集市
(1)数据集市的定义:
数据集市就是面向部门或者应用的小型数据仓库,相比企业级数据仓库,具有较少的主题域。
(2)数据集市的分类:
按照数据的获取方式,将数据集市分为从属型数据集市和独立型数据集市。
从属型数据集市就是从中央数据仓库中获取数据,这类数据集市之间是互连的。
独立型数据集市就是直接从操作型数据库等数据源中获取数据,这类数据集市之间没有联系,是相互独立的。
(3)两种建立数据集市的思想:
两种数据集市对应着两种建立数据集市的思想,即“自顶向下”和“自底向上”的思想。
“自顶向下”就是先创建一个中央数据仓库,然后按照各个特定部门的特定需求建立多个从属型的数据集市。
“自底向上”就是先以最少的投资,根据部门的实际需要,创建多个独立的数据集市,然后不断扩充、不断完善,最终形成一个中央数据仓库。
(4)数据集市的作用:
数据集市一般包含着某一特定业务内容的数据,因此可以按照业务的分类来组织,当然也可以按照数据仓库的主题、地理位置、企业部门来组织。这样,数据集市就可以满足企业、部门、个人不同层次、不同范围的人员对数据的需求。
数据集市可以分布在不同的物理平台上,也可以逻辑分布在同一物理平台上。
(5)数据集市与数据仓库的区别:
数据集市是按照部门或者业务分类进行组织的小型数据仓库,而数据仓库则是面向整个企业的。二者的不同,一是主题域的不同,二是数据规模的不同,三是访问效率的不同。
5. 元数据
(1)元数据的定义:
元数据就是关于数据的数据。关系型数据库中的“数据字典”
就是元数据的一种。
(2)元数据的作用:
元数据描述数据的结构、来源、抽取和转换规则、存储,描述操纵数据的进程和应用程序的结构、功能等。其主要目的就是提供数据资源的全面指南,使数据仓库管理员和开发人员能够清楚的了解到数据存放在哪里、有什么数据、来源于哪里、如何使用和管理这些数据。
(3)元数据的分类:
按照使用元数据的用户分类,可以分为技术元数据和业务元数据。技术元数据描述数据的技术细节,主要提供给开发人员和管理人员;业务元数据主要是让业务人员能够明白数据仓库中的数据。
按照来源的正式程度分类,分为正式元数据和非正式元数据,前者是经过讨论并由决策者确定的元数据,后者是一些规范、制度、常识组成,没有标准的形式。
按照功能分类,分为数据源元数据、ETL元数据、ODS元数据、DW元数据、报表元数据、接口数据文件格式元数据、商业元数据。
6. 参考文献
[1] 数据仓库(原书第4版),William H.Inmon著,王志海等译,机械工业出版社,2006.8
[2] 数据仓库与数据分析教程,王珊等编著,高等教育出版社,2012.8
[3] 博文:系统设计与架构笔记:ETL工具开发和设计的建议