联机分析处理
数据仓库
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库是为企业所有级别的决策制定过程提供支持的所有类型数据的战略集合。它是单个数据存储,出于分析性报告和决策支持的目的而创建。 为企业提供需要业务智能来指导业务流程改进和监视时间、成本、质量和控制。
数据仓库特点
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 数据库系统和数据仓库系统的硬件利用率
由于数据库系统和数据仓库系统在硬件利用率上的差异,我们难于在同一台服务器上既进行优化操作型处理,又进行优化分析型处理,因此数据库系统和数据仓库系统在物理上应当由不同的服务器来运行。