数据库,其本身也是由数据库管理系统进行管理,但是它的结构、功能和设计都与传统的数据库设计方法不同,上一章我们只是直接给出了数据仓库的设计方案,但是,知其然,还要知其所以然,本章将会对数据仓库的设计进行深入学习,把复杂的数据仓库与商业智能理论融入到具体的操作中,探究构建数据仓库的理论和方法。
数据仓库的设计是数据分析应用中十分重要的一环,涉及到的理论知识很多。这一章将结合一个复杂的数据仓库设计示例学习设计数据仓库的方法和技巧。在进入具体设计工作之前,先要掌握业务上使用的数据和分析中使用的数据的区别。
3.1 数据的两种组织形式:操作数据和分析数据
当同一数据使用不同组织形式的时候,其作用也有所不同。把企业中需要使用的这些数据形式进行分类,一般可以分成两类:操作数据和分析数据。这两种数据都可以存储在DBMS中进行管理。它们的组织形式实际上源于并作用于两种系统:操作型系统和分析型系统。
3.1.1 操作型系统和分析型系统的分离
传统的企业信息化实现的是用计算机信息处理代替人工信息处理,主要解决的是业务上的数据流问题。随着这类系统的逐渐增多,便针对这些系统产生了数据的多维信息查询需求,于是用于事务处理的数据环境和用于数据分析的数据环境的分离就成为了必然。
操作型处理以传统的数据库为中心进行企业的日常业务处理。比如连锁超市每一种商品的进货处理和每一笔销售业务的处理等。
分析型处理以数据仓库为中心分析数据背后的关联和规律,为企业的决策提供可靠有效的依据。比如,通过对超市近期数据进行分析可以发现近期畅销的产品,从而为公司的采购部门提供指导信息。又如,对于一个大型的连锁超市,如果能够将各个营业点不同时期的营业情况以非常直观的方式展现给管理人员,则管理人员可以根据这些分析结果决定是否需要撤销营业情况极差的营业点,而在客户流量特别大的超市附近增设营业网点。
操作型系统的使用人员通常是企业的具体操作人员,处理的数据通常是企业业务的细节信息,其目标是实现企业的业务运营;而分析型系统的使用人员通常是企业的中高层的管理者,或者是从事数据分析的工程师。分析型系统包含的信息往往是企业的宏观信息而非具体的细节,其目的是为企业的决策者提供支持信息,操作型系统和分析型系统的划分如图3-1所示。
操作型处理和分析型处理的分离,划清了数据处理的分析型环境与操作型环境之间的界限,从而由原来以单一数据库为中心的数据环境发展为以数据库为中心的业务处理系统和以数据仓库为基础的分析系统。企业的生产环境,也由以数据库为中心的环境发展为以数据仓库为中心的环境。操作型系统根据其特点也称联机事务处理(OLTP),存储操作数据,称为数据库。分析型系统也称联机分析处理(OLAP),一般把存储分析数据的数据库称为数据仓库。
3.1.2 事务处理和分析处理的对比
OLAP系统与OLTP系统从本质上来说是不同的。许多OLTP中的功能需求和OLAP的功能需求都不一致,有的甚至是相反的。表3-1是2种数据处理系统的功能特点比较。
表3-1 OLAP与OLTP功能特点对比
由表3-1可见,OLAP与OLTP是2类不同的应用,OLTP面对的是操作人员和低层管理人员,OLAP面对的是决策人员和高层管理人员;OLTP是对基本数据的查询、增、删和改操作处理,它以数据库为基础,而OLAP更适合以数据仓库为基础的数据分析处理。OLAP中历史的、导出的及经综合提炼的数据均来自OLTP所依赖的底层数据库。OLAP数据较之OLTP数据要多一步数据多维化或预综合处理,建立不同级别的统计数据,从而满足快速统计分析和查询的要求。除了数据及处理上的不同外,OLAP前端产品的界面风格及数据访问方式也同OLTP有别,OLAP多采用便于非数据处理专业人员理解的方式(如多维报表和统计图形),查询提出及数据输出直观灵活,用户可以方便地进行逐层细化、切块与切片和数据旋转等操作(详见第6 章);而OLTP多为操作人员经常用到的固定表格,查询及数据显示也比较固定和规范。例如,在第2章用Reporting Service和Excel 2007为福马特商店创建的多维分析报表实际上就是OLAP系统运行的结果。
有了以上事务处理和分析处理的区别和联系,就可以相应地得出操作型数据和分析型数据的关系。
3.1.3 操作型数据与分析型数据的对比
由上面对业务操作和商务分析2种过程的比较可知,如果把用于OLTP系统的数据直接应用于商务数据分析和决策支持活动就会面临许多困难。主要表现在4个方面。其一是事务处理的数据之间往往需要用复杂的关系来保证快捷性、一致性和实时性,要将其用于分析,则需要创建特殊查询语句,而此项工作只有数据库技术专家才能做好,这很明显不符合进行商务数据分析的用户群的需要;其二是在进行事务处理的系统中进行大量的数据分析,会影响在线事务的处理速度和性能;其三是在事务处理数据库中执行复杂的查询时,会由于速度过慢而影响分析的效率和决策的执行;最后,事务处理数据库中的数据会由于经常改变而影响数据分析的一致性。
功能决定其结构。按照表3-1对OLTP和OLAP的功能对比,可以对应地得出其相应数据的区别,如表3-2所示。
表3-2 操作型数据与分析型数据的区别
由上表可知,操作数据是处于不断变换和更新之中的,属于动态数据。比如通过订单输入程序输入的订单数据就属于操作数据。
分析数据是主要用于对经营业务进行分析,因而用的是历史数据,通常都不会随着时间的推移而发生变化,因此属于静态数据。只有在原始信息错误的情况下,分析数据才会有变动。比如某个时间点的销售额是最终数据,是不可逆的,它可以用于分析销售情况,属于分析数据。分析数据通常是从动态数据源迁移到静态数据源的,因而主要来源于操作数据。环境的变化可能为分析带来其他影响因素,因而来自外部的额外信息也可能是分析数据所需要的。下面就在对比这两类数据的基础上,明确数据仓库的特点。
3.1.4 数据仓库的特点
数据仓库的特点可以从数据仓库的定义来理解。目前数据仓库的定义是不统一的。公认的数据仓库之父 W.Hinmon将其定义为:“数据仓库是支持管理决策过程的、面向主题的、集成的、随时间而变的、持久的数据集合。”他指出了数据仓库面向主题、集成、稳定和随时间变化这4个最重要的特征。
1.面向主题
业务系统是以优化事务处理的方式来构造数据结构的,对于某个主题的数据常常分布在不同的业务数据库中。这对于商务分析和决策支持来说是极为不利的,因为这意味着访问某个主题的数据实际上需要去访问多个分布在不同数据库中的数据集合。
对于商务分析来说,典型的主题域有客户、产品、交易(销售)和收益等。例如在图3-2中示例了一个以零售业为主的企业情况。该企业在以前的企业信息化中已经构建了消费数据库、客户服务数据库和市场信息数据库。其中,消费数据库记录了客户对不同产品的消费情况,客户服务数据库记录了客户的咨询和投诉情况。这2个数据都是客户主题的相关数据。如果直接使用业务系统进行决策支持,则需要分别访问这2个数据库才能获得客户各个侧面的信息,这样将极大的浪费系统处理的时间和效率,并且数据之间的不一致性和不同步问题,将极大影响决策的可靠性。
基于以上的原因,数据仓库将这些数据集中于一个地方,在这种结构中,对应某个主题的全部数据被存放在同一数据表中,这样决策者可以非常方便地在数据仓库中的一个位置检索包含某个主题的所有数据。在图3-2中,有客户和市场两个分析主题,客户主题可以从消费数据库和客户服务数据库中获得客户消费和咨询等全方位的信息;市场主题可以从市场信息数据库分析市场的发展趋势。这种按主题的数据组织方法,极大地方便了数据分析的过程。主题的具体分析过程将在下一节学习。
上一章简单实现了福马特连锁超市的商业智能应用。在这个过程中会发现,OLAP分析、前端展现及数据挖掘都有一个共同的基础,这就是数据仓库。数据仓库来源于