数据仓库诞生的原因
随着时代的进步,许多企业都将信息技术运用于自身的生产、运营、销售等活动中。在这个过程中,企业积累了大量的历史数据,这些数据显然具有重要的价值。但是,由于数据的类型繁多,业务逻辑复杂,甚至各个部门采用不同的数据库管理系统,导致数据无法有效整合,无法为进一步的分析提供支持。另外,数据量的不断增长有可能导致数据库系统的性能下降。 所以,业界产生了数据仓库这种专门的技术来解决这一些列的问题。
数据仓库的定义
现在让我们来整理一下,数据仓库的输入是企业的各种数据。我们希望通过数据仓库获取整个企业的信息,并且数据仓库能够确保数据的一致性,能够为决策提供支持。
Bill Inmon (数据仓库之父 http://en.wikipedia.org/wiki/Bill_Inmon ) 在1980年代提出了数据仓库的概念:"a subject-oriented, integrated, time variant and non-volatile collection of data used in strategic decision making".
我个人对数据仓库的理解是:一个旨在整合企业所有数据,为企业的决策提供可信数据的系统。
数据仓库的组成
一般来说,数据仓库有以下几个组成部分操作源系统(Operational Source System)
这个部分相当于数据仓库的输入端,也就是企业在生产过程捕捉数据的区域,通常是一个在线事务处理系统OLTP(Online Transaction Processing),它会记录每一个事务的记录(Transaction Record)。
数据准备区域(Data Staging Area)
在操作源系统存储的数据每隔一段时间会送到数据准备区进行处理,这里是整个数据仓库的核心部分,里面的操作通常我们称之为ETL(Extract-Transformation-Load)抽取,变形和载入。
抽取是将数据源的数据载入到数据仓库。
变形有很多种,有数据清洗(将不合格的数据去除),装换格式,进行计算等等。最最重要的是,变形后,原本紧凑的,符合各种范式的数据将变成维度化(Dimensional)的数据。
数据仓库一般使用维度模型,这种模型是比起我们通常的数据库建模更强调数据模型的简单,易于理解,以后我会深入介绍。
载入是将变形好的数据存储到数据仓库的下一个部分。
数据展现区(Data Presentation)
经过ETL处理过的数据被存放在这个区域。这个区域是为各种查询,报表和分析提供支持。
数据获取工具(Data Access Tools)
用户通过这个工具来设计查询,报表并获取最终的数据。
数据仓库的特征
在这里简单罗列一些数据仓库(DW)和一般数据库应用OLTP的差别OLTP | DW | ||
使命 | 记录业务信息 | 查询,分析历史数据 | |
数据库操作 | 增删改查都有 | 对大规模数据的查询和分析为主,定期的插入、更新 | |
数据库建模方式 | 标准化模型 尽量遵守范式 | 维度建模 | |
时间 | 在保证事务acid的情况下尽快能的快 | 尽可能的快 | |
空间 | 空间资源有限。 使用范式减少冗余。 OLTP的数据通常只存贮几个周到几个月 | 可以认为有无限空间。 为了快速查询,存在很多冗余。 专门存放历史数据。 | |
复杂度 | 数据库表结构 | 复杂 | 经过ETL后的数据一般是星型模型,更容易理解 |
数据操作 | 简单 | 源数据要经过ETL后才能进入数据仓库。复杂度被包含到了ETL中。 |
学习资源 参考资料
我的学习资料主要是Ralph Kimball (http://en.wikipedia.org/wiki/Ralph_Kimball )等著的《数据仓库工具箱》(Kimball's Data Warehouse Toolkit Classics)这套书:http://www.kimballgroup.com/html/booksKimballClassics.html
这套书中总共有三本,第一本是《维度建模完全指南》,第二本是《ETL实践技巧》,第三本是《数据仓库生命周期》。
第一本有中译本,不过网上书店都没有卖了,貌似绝版了,计算机的好书好多都绝版了。
第二本网上有中文的pdf文档,不过翻译的质量不是很好。
第三本现在还能买到,是清华大学出版社出版的。
第一本书是了解数据仓库和维度建模的入门书籍,我现在就在看。
第二本书是讲ETL的,其中关于审计维,维度表和事实表数据推送的章节是重点。
第三本主要讲数据仓库项目管理的,内容比较泛,而且新手也不可能去管理项目吧,所以不推荐。
下集预告
下一篇文章会简单介绍一下维度建模,维度表和事实表。完