SQL Server 2005数据挖掘与商业智能完全解决方案
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第3章 BI分析的基石:结构良好的数据仓库设计

本章导读:

上一章简单实现了福马特连锁超市的商业智能应用。在这个过程中会发现,OLAP分析、前端展现及数据挖掘都有一个共同的基础,这就是数据仓库。数据仓库来源于数据库,其本身也是由数据库管理系统进行管理,但是它的结构、功能和设计都与传统的数据库设计方法不同,上一章我们只是直接给出了数据仓库的设计方案,但是,知其然,还要知其所以然,本章将会对数据仓库的设计进行深入学习,把复杂的数据仓库与商业智能理论融入到具体的操作中,探究构建数据仓库的理论和方法。

数据仓库的设计是数据分析应用中十分重要的一环,涉及到的理论知识很多。这一章将结合一个复杂的数据仓库设计示例学习设计数据仓库的方法和技巧。在进入具体设计工作之前,先要掌握业务上使用的数据和分析中使用的数据的区别。

3.1 数据的两种组织形式:操作数据和分析数据

当同一数据使用不同组织形式的时候,其作用也有所不同。把企业中需要使用的这些数据形式进行分类,一般可以分成两类:操作数据和分析数据。这两种数据都可以存储在DBMS中进行管理。它们的组织形式实际上源于并作用于两种系统:操作型系统和分析型系统。

3.1.1 操作型系统和分析型系统的分离

传统的企业信息化实现的是用计算机信息处理代替人工信息处理,主要解决的是业务上的数据流问题。随着这类系统的逐渐增多,便针对这些系统产生了数据的多维信息查询需求,于是用于事务处理的数据环境和用于数据分析的数据环境的分离就成为了必然。

操作型处理以传统的数据库为中心进行企业的日常业务处理。比如连锁超市每一种商品的进货处理和每一笔销售业务的处理等。

分析型处理以数据仓库为中心分析数据背后的关联和规律,为企业的决策提供可靠有效的依据。比如,通过对超市近期数据进行分析可以发现近期畅销的产品,从而为公司的采购部门提供指导信息。又如,对于一个大型的连锁超市,如果能够将各个营业点不同时期的营业情况以非常直观的方式展现给管理人员,则管理人员可以根据这些分析结果决定是否需要撤销营业情况极差的营业点,而在客户流量特别大的超市附近增设营业网点。

操作型系统的使用人员通常是企业的具体操作人员,处理的数据通常是企业业务的细节信息,其目标是实现企业的业务运营;而分析型系统的使用人员通常是企业的中高层的管理者,或者是从事数据分析的工程师。分析型系统包含的信息往往是企业的宏观信息而非具体的细节,其目的是为企业的决策者提供支持信息,操作型系统和分析型系统的划分如图3-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中,有客户和市场两个分析主题,客户主题可以从消费数据库和客户服务数据库中获得客户消费和咨询等全方位的信息;市场主题可以从市场信息数据库分析市场的发展趋势。这种按主题的数据组织方法,极大地方便了数据分析的过程。主题的具体分析过程将在下一节学习。

错误!

图3-2 数据仓库面向主题的特性

2.集成的

全面而正确的数据是有效地进行分析和决策的首要前提。在某一个主题的统帅下,需要将数据进行提取、净化、转换和装载等集成操作。

比如在客户主题中,对于客户名称,业务数据库的设计中有的字段名为user_name,类型为char(10),有的字段名是name,类型是varchar(12),但在进入分析数据库时必须使用同一字段的命名和格式。这在SQL Server 2005中实际上是通过SSIS来完成的,但在数据库设计阶段也需要把数据的集成方案设计出来,而具体的操作则主要体现在对SSIS的操作上。

3.稳定的

业务系统一般只需要当前数据,在数据库中一般也存储短期数据,因此在数据库系统中数据是不稳定的,它记录的是系统中每一个变化的瞬态。但对于决策分析而言,历史数据是相当重要的,许多分析方法必须以大量的历史数据为依托。没有历史数据的详细分析是难以把握企业的发展趋势的,因此,数据仓库对数据在空间和时间的广度上都有了更高的要求。在数据仓库中,数据一旦被写入就不再变化了。数据仓库可以看成是一个虚拟的只读数据库系统。在数据集成性中已经说明了数据仓库在数据存储方面是分批进行的,定期执行提取过程为数据仓库增加记录,但是这些记录一旦加入,就不再从系统中删除。正是由于数据仓库的这个显著特点,使得数据仓库不需要在并发读写控制上投入过多的精力,因为所有的用户只是以只读的方式访问数据仓库。

图3-3演示了数据稳定性的一个简单的例子。在1月2日,99号客户的消费金额为200元,当时间推移到3月2日,99号客户的消费金额变成250元,这一信息在业务系统中被更新了。但是在数据仓库中(我们假定数据仓库每天进行一次数据提取),3月2日的数据提取结果是在数据仓库中增加了记录222,原先的记录111并没有发生任何的改变,说明99号客户在3月2日的消费金额为250元。可见,数据仓库实际上是为99号客户的消费行为进行了定期的拍照,并将快照存储起来供后续的分析工作使用。

错误!

图3-3 数据仓库的数据稳定性示例

4.随时间变化的

由于在数据仓库中数据只增不减,这使得数据仓库中的数据总是拥有时间维度。数据仓库实际上就是记录系统的各个瞬态,并通过将各个瞬态连接起来形成动画,从而在数据分析的时候再现系统运动的全过程。数据提取的周期实际上决定了动画间隔的时间,数据提取的周期短,则动画的速度快,图3-4示意了这种特点。

错误!

图3-4 数据仓库数据随时间变化的特点

数据仓库同数据库相比,还具有其他的特点。如数据仓库中的数据不再像数据库中的数据具有严格规范化的特点,这也是由数据仓库的应用需求决定的。数据仓库为了能够在尽量短的时间内将数据呈现给使用人员,使用所谓的“空间换时间”的技术,牺牲了数据的规范化,增加了数据的冗余度,从而减少系统的响应时间。再如,数据库系统和数据仓库系统在硬件的利用模式上具有很大的区别。在数据库环境下,硬件资源利用率总是保持在一个相对稳定的状态,这是由于不断地有事务需要处理。而在数据仓库环境下,系统的硬件资源常常在高利用率和低利用率之间切换。当系统进行数据分析应用时,硬件资源的利用率很高,而系统空闲(数据分析的工作在每天的某些时段进行,并不像事务处理工作那样一直进行)时,硬件资源的利用率就很低,如图3-5所示。

图3-5 数据库系统和数据仓库系统的硬件利用率

由于数据库系统和数据仓库系统在硬件利用率上的差异,我们难于在同一台服务器上既进行优化操作型处理,又进行优化分析型处理,因此数据库系统和数据仓库系统在物理上应当由不同的服务器来运行。