一、数据仓库的概念
目前很难给数据仓库(Data Warehouse)一个严格的定义,不准确地说,数据仓库也是一种数据库,它与操作性数据库进行分开维护。按照数据仓库系统构造方面的领头设计师William H.Inmon的说法,数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)以及反映历史变化(Time Variant)的数据集合,用于支持管理决策。
1、面向主题是指数据仓库会围绕一些主题来组织和构建,如顾客、供应商、产品等,数据仓库关注决策者的数据建模与分析,而不是企业的日常操作和事务处理,因此,数据仓库排除对决策支持过程无用的数据,提供面向特定主题的视图。
2、集成是指通常构建数据仓库会将多个异构的数据源,如关系数据库、一般的文件和事务处理记录等集成在一起,这就需要使用数据清理和数据集成技术,来确保命名约定、编码结构和属性度量等的一致性。
3、相对稳定是指数据仓库大多会分开存放数据,数据仓库不需要进行事务处理、数据恢复和并发控制等机制,通常数据仓库只需要两种数据访问操作:数据的初始化装入和数据的访问。
4、反映历史变化是指数据仓库是从历史的角度提供信息,换句话说,数据仓库中的关键结构都会显式或者隐式地包含时间元素。
二、数据仓库与操作性数据库的区别
为了进一步加深对数据仓库概念的理解,我们把数据库系统和数据仓库进行对比。为了区分,这里把数据库系统称为操作性数据库。操作性数据库的主要任务是执行联机事务和查询处理,这种系统称为联机事务处理(Online Transaction Processing,OLTP)系统,它涵盖了企业组织机构大部分的日常操作,如购物、注册、记账等。 数据仓库系统则是在数据分析和决策方面为用户和决策者提供服务,以特定的主题和格式来组织和提供数据,从而满足不同用户的需求,因此这种系统称为联机分析处理(Online Analytical Processing,OLAP)系统。
OLTP和OLAP的主要区别体现在如下几个方面:
1、系统面向的用户对象不同。OLTP系统面向一般的客户,用于数据库用户的事务处理和查询,而OLAP系统则是面向知识工人或者管理决策人员,提供数据分析功能。
2、数据的内容不同。OLTP管理的是当前的数据,对于数据的操作相对较为细小琐碎,无法用于决策。OLAP则管理了大量的历史数据,如一个销售公司一个月、一年甚至数年的销售数据。OLAP提供了汇总和聚集机制,并且可以在不同的粒度级别、不同的维度视角来存储和管理数据,这些优势使得数据可以用于分析和决策任务。
3、采用的模型和设计不同。通常OLTP系统采用的实体—联系(E-R)模型和面向应用的数据库设计,而OLAP采用的是面向某个主题的星形模式、雪花模式或事实星座模式的数据库设计。
4、访问模式不同。OLTP系统的访问模式主要由短的原子事务所组成,既有读操作也有写操作,这种系统需要考虑事务管理、并发控制和故障恢复等机制。而OLAP的访问模式在完成数据的初始装载以后,基本都是只读操作。
5、数据的视图不同。OLTP主要关注当前生产环境的数据,不太涉及历史数据。而OLAP系统通常要跨越数据库的多个版本,处理来自不同组织的数据信息。由于数据量巨大,OLAP的数据通常会存放在多个存储介质上。
操作性数据库与数据仓库的其他区别,如数据量的大小、操作的频度和性能等,如下表所示:
三、发展前期
计算机发展的早期,人们已经提出了建立数据仓库的构想。“数据仓库”一词最早是在1990年,由Bill Inmon先生提出的,其描述如下:数据仓库是为支持企业决策而特别设计和建立的数据集合。
企业建立数据仓库是为了填补现有数据存储形式已经不能满足信息分析的需要。数据仓库理论中的一个核心理念就是:事务型数据和决策支持型数据的处理性能不同。企业在它们的事务操作收集数据。在企业运作过程中:随着定货、销售记录的进行,这些事务型数据也连续的产生。为了引入数据,我们必须优化事务型数据库。
处理决策支持型数据时,一些问题经常会被提出:哪类客户会购买哪类产品?促销后销售额会变化多少?价格变化后或者商店地址变化后销售额又会变化多少呢?在某一段时间内,相对其他产品来说哪类产品特别容易卖呢?哪些客户增加了他们的购买额?哪些客户又削减了他们的购买额呢?
事务型数据库可以为这些问题作出解答,但是它所给出的答案往往并不能让人十分满意。在运用有限的计算机资源时常常存在着竞争。在增加新信息的时候我们需要事务型数据库是空闲的。而在解答一系列具体的有关信息分析的问题的时候,系统处理新数据的有效性又会被大大降低。另一个问题就在于事务型数据总是在动态的变化之中的。决策支持型处理需要相对稳定的数据,从而问题都能得到一致连续的解答。
数据仓库的解决方法包括:将决策支持型数据处理从事务型数据处理中分离出来。数据按照一定的周期(通常在每晚或者每周末),从事务型数据库中导入决策支持型数据库——既“数据仓库”。数据仓库是按回答企业某方面的问题来分“主题”组织数据的,这是最有效的数据组织方式。
四、数据仓库的系统结构
1、数据源
是数据仓库的数据来源,含外部数据、现有业务系统和文档资料等;对这些数据首先完成数据集成,包括数据的抽取、清洗、转换和加载任务。数据源中的数据采用ETL(Extract-Transform-Load,数据抽取、转换、装载)工具并以固定的周期加载到数据仓库中。
2、数据存储和管理
此层次主要涉及对数据的存储和管理,含数据仓库、数据仓库检测、运行与维护工具和元数据管理等。
3、数据服务
为前端和应用提供数据服务,可直接从数据仓库中获取数据供前端应用使用,也可通过OLAP服务器为前端应用提供负责的数据服务。
4、数据应用
此层次直接面向用户,含数据查询工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统。
随着应用需求的发展变化,传统的数据仓库也存在如下几个亟待解决的问题:
(1)无法满足快速增长的数据存储需求,传统数据仓库基于关系型数据库,横向扩展较差,纵向扩展有限。
(2)无法处理不同类型的数据,传统数据仓库只能处理和存储结构化数据。随着应用需求的发展,数据的格式越来越丰富,半结构化、非结构化数据所占比重越来越大,处理需求越来越迫切。
(3)传统数据仓库建立在关系型数据仓库之上,计算和处理能力不足,当数据量达到TB级后性能难以得到保证。
五、建模划分
数据仓库的数据建模大致分为四个阶段:
1、业务建模,这部分建模工作,主要包含以下几个部分:
(1)划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。
(2)深入了解各个业务部门内的具体业务流程并将其程序化。
(3)提出修改和改进业务部门工作流程的方法并程序化。
(4)数据建模的范围界定,整个数据仓库项目的目标和阶段划分。
2、领域概念建模,这部分得建模工作,主要包含以下几个部分:
(1)抽取关键业务概念,并将之抽象化。
(2)将业务概念分组,按照业务主线聚合类似的分组概念。
(3)细化分组概念,理清分组概念内的业务流程并抽象化。
(4)理清分组概念之间的关联,形成完整的领域概念模型。
3、逻辑建模,这部分的建模工作,主要包含以下几个部分:
(1)业务概念实体化,并考虑其具体的属性。
(2)事件实体化,并考虑其属性内容。
(3)说明实体化,并考虑其属性内容。
4、物理建模,这部分得建模工作,主要包含以下几个部分:
(1)针对特定物理化平台,做出相应的技术调整。
(2)针对模型的性能考虑,对特定平台作出相应的调整。
(3)针对管理的需要,结合特定的平台,做出相应的调整。
(4)生成最后的执行脚本,并完善之。
六、主要案例
1、Agrofert
农业、食品和化工集团Agrofert 发现,随着企业的快速发展,旗下子公司已经有 160 多个不同的系统在运行。很难提供统一的报告,而且支持和许可成本也不断上升。如果每新购一个系统就扩大一次基础架构,显然不是一种可以扩展的战略。Agrofert采用 SAP ERP 应用程序作为其部分子公司的共享服务,目的是将其逐渐推广到整个企业,这些应用程序在两个地点的 IBM Power Systems 服务器上集中管理。公司从混合数据库环境(包括 Oracle 和 Microsoft SQL Server)迁移到 IBM DB2,将 IBM DB2 作为其标准数据库,同时还为关键的业务数据部署集中的存储系统。迁移后,不再需要本地系统,能够极大地降低管理、支持和许可成本;借助IBM DB2 可降低许可费用,简化管理并减少员工教育及培训;整合的存储有助于降低成本,而 IBM DB2 深度压缩将会降低总体存储需求;总成本估计减少 20%。2、迪斯尼乐园
Disney每年都有10亿美元商品销售收入,而建立一个ERP系统来处理这些信息是极具挑战性的。最新的集中式ERP系统是设计用来处理商品管理、存货管理和相关业务过程的。但是Disney 也希望平衡财务和业务智能(BI)报告和业务分析系统,这意味着建立一个新的数据仓库。Disney在该项目中所使用的一些产品包括SAS分析软件和Teradata数据仓库技术。最新的集中式ERP、数据仓库和分析系统正帮助Disney更好地管理存货、分析销售额和预报特定领域的商品需求。