0. 说明 《数据仓库原理》系列博文,是笔者在学习数据仓库与商业智能时的读书笔记,现重新梳理思路,分享在这里,希望读者批评指正。 本系列主要包括以下几部分内容: [1].数据库与数据仓库 为什么有了数据库还需要数据仓库?什么又是数据仓库? [2].数据仓库系统的体系结构 数据仓库系统的体系结构包括哪些组成要素?各自的作用又是什么? [3].数据仓库与ODS 什么是ODS?为什么需要ODS?DB~ODS~DW三层体系结构又是什么? [4].联机分析处理(OLAP) OLAP是什么?OLAP与OLTP有什么区别?多维数模型有哪几种?多维分析操作又有哪些? 每部分分别作为一篇博文进行总结。 1. 引言 本篇主要讲述什么是数据仓库?数据仓库产生的背景和原因,数据仓库的定义、特征、功能。 人类对数据的管理经历人工管理、文件系统管理、数据库系统管理三个阶段,数据库管理实现了对数据的存储、有序组织和共享。在数据库系统管理阶段的早期,人们对数据的使用主要集中在查、删、增、改等操作,当数据积累到一定程度时,人们希望对数据进行统计、多维分析、甚至挖掘来产生更多的价值,这时候,传统的操作型数据库无法满足这一需求,因此便产生了数据仓库。 传统的数据库与数据仓库在存放的数据特征、性能要求、应用范围、面向人员等方面均有所差别。 2. 两种数据处理模式:操作型数据处理和分析型数据处理 计算机系统中存在着两种不同的数据处理模型:操作型数据处理和分析型数据处理,又分别称为联机事务处理(Online Transaction Process,OLTP)和联机分析处理(Online Analysis Process,OLAP)。 操作型数据处理,是指对数据库联机的日常操作,主要完成数据的收集、整理、存储以及增删查改等操作,主要由一般工作人员和基层管理人员完成。 分析型数据处理,是指对数据的再加工,通常是对海量的历史数据查询和分析,从中获取信息,主要由分析人员和中高级管理人员完成。 3. 两类数据:操作型数据与分析型数据 两种数据处理模式对应着两类数据:操作型数据和分析型数据。
操作型数据处理主要应用于企业的日常事务处理工作,数据库中存放的是细节的数据,也是当前的数据,反映的是近一次修改后的结果。对数据的操作主要是数据的增删查改。数据库中的数据是可以修改的。数据的组织以方便事务处理、提高事务处理性能为目标。 分析型数据处理主要应用于企业的管理工作,数据库中主要存放的是历史数据和综合数据。对数据的操作主要集中在查询和统计分析,需要涉及大量数据,数据的组织方式以方面查询分析为主要目标,为了提高查询效率允许存在某种程度上的数据冗余。 4. 数据库的局限性 传统的数据库在操作型数据处理上取得了巨大的成功,但是在分析型数据处理上却遇到了瓶颈。主要有以下几个原因: (1) 数据的分散。操作型数据处理往往只需要涉及一个部门业务或者一个系统的数据,因此现在企业的数据是分散在各个操作型数据库,而分析型操作往往面向整个企业、跨部门进行。 (2) 数据不一致的问题。从各个操作型数据库中抽取数据会存在数据不一致的问题,比如同名异义、异名同义、单位不统一、字长不一致等,因此在分析操作前必须首先对这些数据进行预处理。 (3) 历史数据问题。分析型数据操作往往需要大量的历史数据,但是操作型数据库一般存放的是短期数据。 (4) 数据粒度问题。分析型数据操作往往关注的是综合性数据,但是操作型数据库中存放的是细节数据,如果在分析前对细节数据进行综合,会严重影响分析的效率。 因此,为了克服以上问题,使两种数据操作都能够有效的进行,产生了数据仓库。 总结:数据库和数据仓库分工不同,数据库存放操作型数据,用于操作型数据处理,关注的事务处理的效率;数据仓库存放分析型数据,用于分析型数据处理,关注的是分析和查询的效率;两者功能不同、用途不同,因此结构也会不同。 5. 数据仓库的定义 “数据仓库之父” William H.Inmon在其《Building the Data Warehouse》中这样定义数据仓库:“数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的用来更好地支持企业或组织决策分析的数据集合。” 这一定义指出了数据仓库中的数据应该具备以下4个特征: 面向主题的; 集成的; 不可更新的; 随时间不断变化的。 也指出了数据仓库的用途:面向企业决策分析。 简单地说,数据仓库是一种面向决策主题的,从多个数据源集成数据的,拥有当前数据、细节级和综合级的历史数据的,以查询和分析为主的数据库系统,目的是支持企业决策。 6. 数据仓库数据的特征 (1)面向主题的 面向主题的数据组织方式是相对面向应用的数据组织方式而言的。 什么是面向主题的数据组织方式? 面向主题的数据组织方式是在较高层次上对分析对象的数据的一个完整的、一致的描述,能完整、统一地刻画各个分析对象所涉及企业的各项数据,以及数据之间的联系。 企业在信息化建设时通常会按照业务类别来建立子系统,比如采购、销售、库存、人事、财务,子系统背后是各种操作型数据库。基于这样的数据环境,如果需要对“顾客”这一对象进行相关的分析处理,需要从各个操作型数据库中提取数据,即使能够取出来也会面临各种问题,比如数据不一致。这是面向应用的数据组织方式,显然不能满足分析需要。 面向主题是根据分析需要,将分析对象所涉及的数据以及数据之间的联系从企业各个方面进收集、汇聚,形成一个完整的、一致的、统一的数据集合。这里的主题是分析对象,比如:“顾客”、“商品”、“供应商”。 面向主题的数据组织方式强调的是要形成关于主题的一致的信息集合。 (2)集成的 由于数据仓库中的数据是按照主题组织的,因此所涉及的数据来源于各个操作型数据库、数据文件或者网络。由于数据来源不同,可能存在不一致的情况,比如同名异义、异名同义、单位不同、字长不同,因此在进入数据仓库前需要对数据进行清洗、转换等操作。又因为之前的数据是面向应用的,因此需要将数据从面向应用到面向主题进行转变。而数据仓库中不仅有细节数据,还需要大量的综合性数据,所以需要对数据进行综合、计算。完成这几步后,数据才能被加载到数据仓库中。 (3)不可更新的 不可更新是指数据一旦进入到数据仓库中,不允许修改,并且会被长期保留。 数据仓库中的数据反映的是一段相当长时间内的历史数据,一般会按照一定的周期(月、日)进行加载和刷新。 (4)随时间不断变化的 数据仓库会随着时间的变化不断增加新的数据。因为数据仓库中的数据是来源于操作型数据库等数据源的历史数据和综合性数据,所以需要定期的去捕捉这些数据源中的新数据,将其加载到数据仓库中。 数据仓库中的数据会有一定的存储期限,当超过这个期限后,数据会被删除掉。 数据仓库中有大量的综合数据,而很多数据是按照时间进行组织的,比如月记录、日记录,所以需要按照这一时间周期定期的加载新数据。 7. 数据仓库的功能 数据仓库是一种数据存储,将不同来源的异构数据进行清洗、转换、加工,集成并存储起来,支持分析查询需求,从而为企业决策提供支持。