1.3 数据仓库
在计算机诞生后的初始阶段,那时应用程序主要使用磁带存储数据,其是一种顺序存储器,寻址时间长,无法快速找到文件在磁带中的准确位置。20世纪70年代,出现了磁盘存储,也就是直接访问存储,用户能够以毫秒级(甚至更短时间)找到磁盘上的文件。随着存储的不断发展,数据库管理系统(Database Management System, DMS)应运而生,也就是今天大家熟知的关系型数据库。在随后的30年,数据库大放异彩,出现了很多优秀的代表(包括Oracle、SQL Server、MySQL和PostgreSQL等),成为计算机领域的重要组成部分。数据库的主要用途是联机事务处理(Online Transactional Processing, OLTP),典型的场景包括电子商务、银行和证券等。在这样的系统里,单个数据库每秒处理的事务数往往很高。
随着时间的推移,企业逐渐意识到数据的价值,希望通过已掌握的数据对市场战略进行评估。以零售业为例,市场营销体系通常涵盖市场评价、用户体验和品牌价值等多个维度,企业希望从更高的维度发现整个体系的总体规律,通过横向分析了解用户的体验效果,这就需要用到在线联机分析(Online Analytical Processing, OLAP)。一般来说,单次OLTP处理的数据量比较小,所涉及的表比较有限,一般仅一两张表,而OLAP的目的是从大量的数据中找出规律,经常用到count、sum和avg等聚合方法,所以对多张表的数据进行连接汇总非常普遍。表1-1给出了OLTP和OLAP的主要区别。
表1-1 OLTP和OLAP的主要区别
虽然传统数据库也能执行OLAP,但由于其设计目的是面向事务处理,在执行计划和查询优化方面受限于数据规模,无法完全满足OLAP的要求。另外,企业需求错综复杂,可能需要使用跨多个部门的数据源,由于数据库类型不同,数据抽取时间不同,外部信息来源不同,因此在获得一份公司整体运营情况的报表时,只有跨部门动用大量的人力进行分析、设计和编码,才能保证结果的准确性和有效性。这样的处理方式效率低、时效性差。所以,为了访问和整合业务数据,使数据保持一致、可靠、及时和随时可用,企业需要将事务处理和数据分析的环境分离开,数据仓库的理论和解决方案应运而生。数据仓库与数据库相比有如下优势。
(1)整合多个来源的数据,实现企业的中心视图,并且可以使用单一的查询引擎呈现数据。
(2)维护数据历史记录,支持对历史数据的分析。
(3)将分析处理与事务性数据库分离,从而提高两个系统的性能。
以下为数据仓库的发展史。
(1)1983年,Teradata发布了第一款专门为决策支持而设计的DBC/1012数据库系统。
(2)1988年,IBM的Barry Devlin和Paul Murphy发表了An Architecture for a Business and Information System,提出了企业数据仓库的概念。
(3)1990年,由Ralph Kimball创立的Red Brick Systems推出了专门用于数据仓库的数据库管理系统Red Brick Warehouse。
(4)1991年,Bill Inmon出版了Building the Data Warehouse,说明了建立数据仓库的原因、数据仓库的价值,并提出建设数据仓库的指导性意见。
(5)1996年,Ralph Kimball出版了The Data Warehouse Toolkit,提供了进行数据模型优化的详细指导意见,讨论了通用的维度设计技术,优化决策支持系统的数据架构。
初期的数据仓库主要用于管理企业中多个数据库实例,后来逐渐演变出由独立软硬件构成的数据仓库一体机,但其成本较高且扩展性有限。后期又出现了分布式数据仓库,一方面,它基于分库分表,在逻辑上把数据分成不同的模块,存放在不同的数据库中;另一方面,它通过大规模并行处理(Massively Parallel Processing, MPP)架构提供更好的扩展性,以应对海量数据的查询,在一定程度上解决了扩容问题。21世纪初是数据仓库高速发展的时期,IBM、Oracle、Teradata等公司提供了从硬件、软件到实施的数据仓库建设整体方案,同时也出现了很多并购活动,例如,Oracle收购了Hyperion,SAP收购了Business Objects,IBM收购了Cognos、Netezza等。
随着数据仓库的蓬勃发展,企业的数据环境逐渐发展为以数据库为基础构建业务处理系统和以数据仓库为基础构建分析系统的统一体。数据仓库作为企业数据管理系统的中心枢纽,通过整合来自交易系统、ERP、CRM的数据提供报告和分析,如图1-1所示。
图1-1 以数据仓库为中心的企业数据环境
但是,数据仓库出现的目的并不是取代数据库,事实上,两者相辅相成,能够满足企业不同的业务需求,表1-2给出了数据库与数据仓库的区别。
表1-2 数据库与数据仓库的区别