1.2 数据仓库的演进过程
在了解了数据仓库的概念之后,我们还应该思考数据仓库中的数据从哪里获取。数据仓库中的数据通常来自各个业务数据存储系统,也就是各行业在处理事务过程中产生的数据,比如用户在网站中登录、支付等过程中产生的数据,一般存储在MySQL、Oracle等数据库中;也有可能来自用户在使用产品过程中与客户端交互时产生的用户行为数据,如页面的浏览、点击、停留等行为产生的数据。用户行为数据通常存储在日志文件中,这些数据经过一系列的抽取、转换、清洗,最终以一种统一的格式被装载到数据仓库中。数据仓库中的数据作为数据源,提供给即席查询、报表、数据挖掘等系统进行分析。
数据仓库的演进过程就是存储设备的演进过程,也是体系结构的演进过程。事实上,数据仓库和决策支持系统(Decision Support System,DSS)处理的起源可以追溯到计算机和信息系统发展的初期,二者是信息技术长期复杂演化的产物,并且这种演化现在仍然继续进行着。最初的数据存储介质是穿孔卡和纸带,毫无疑问,这种存储介质的局限性是非常大的。随着直接存储设备、个人计算机(PC)及第四代编程语言的涌现,用户可以直接控制数据和系统。此时,诞生了管理信息系统(Management Information System,MIS),除了利用数据进行高性能在线事务处理,它还能进行管理决策的处理。这种理念的提出是很有前瞻性的。
20世纪80年代出现了数据抽取程序,它能够不损害已有系统,使用某些标准来选择合乎要求的数据,并将其传送到其他文件系统或数据库中。起初只是抽取数据,随后是抽取之上的抽取,接着是在此基础之上的抽取。当时,这种失控的抽取处理模式被称为自然演化式体系结构。自然演化式体系结构在解决了使用数据时产生的性能冲突之余,也带来了很多问题,比如数据可信性问题、生产率问题等。
自然演化式体系结构不足以满足将来的需求,数据仓库需要从体系结构上寻求转变,于是迎来了体系结构化的数据仓库环境。体系结构化的数据仓库环境主要将数据分为原始数据和导出数据。原始数据是维持企业日常运行的细节性数据,导出数据是经过汇总或计算来完成公司管理者的决策制定过程所需的数据。最初,信息处理界认为原始数据和导出数据可以配合使用,并且二者能很好地共存于同一个数据库中。事实上,原始数据和导出数据的差异很大,不能共存于同一个数据库中,甚至不能共存于同一个环境中。这种方式使得数据仓库很难较好地工作,会带来很多棘手的问题。例如,某些原始数据由于安全或其他因素不能被直接访问,很难建立和维护数据来源于多个业务系统版本的报表,业务系统的表结构为事务处理性能而优化,有时并不适用于查询与分析,没有适当的方式将有价值的数据合并到特定应用的数据库中,有误用原始数据的风险,并且很有可能影响业务系统的性能。
在体系结构化的数据仓库环境中有4个层次的数据——数据操作层、数据仓库层、数据集市层、数据个体层。数据操作层只包含面向应用的原始数据,并且主要服务于高性能事务处理领域;数据仓库层用于存储不可更新的、集成的、原始的历史数据;数据集市层则是为满足用户的部分特殊需求而创建的;数据个体层用于完成大多数的启发式分析。
这样的体系结构在当时产生了大量的冗余数据,事实上相较于自然演化式体系结构的层层数据抽取,这种结构的数据冗余程度反而没有那么高。
体系结构化的数据仓库环境的一个重要作用就是数据的集成,当把数据从操作型环境载入数据仓库环境时,如果不进行集成就没有意义。数据集成的示例如图1-1所示。一个用户在数据操作层产生4条数据,这4条数据分别被存储在用户信息表、订单表、优惠券表、收藏表中,显示了用户的不同操作方式。4条不同的数据在被抽取到数据仓库层时会进行聚合,得到右侧的集成数据,其中显示了同一个用户的所有行为,我们可以根据用户的这条集成数据得知此用户是一个游戏爱好者,此时给他推送与游戏相关的产品更有可能增加销量。
图1-1 数据集成的示例
数据仓库的演进和发展在架构层面大致经历了3个阶段。
1.简单报表阶段
简单报表阶段的主要目标是为业务分析人员提供日常工作中用到的简单报表,以及为领导提供决策所需的汇总数据。该阶段数据仓库的主要表现形式为传统数据库和前端报表工具。
2.数据集市阶段
数据集市阶段的主要目标是根据某个业务部门(如财务部门、市场部门等)的需要,对数据进行采集和整理并进行适当的多维报表展现,提供对该业务部门有所指导的报表数据和对特定领导决策进行支撑的汇总数据等。
3.数据仓库阶段
数据仓库阶段主要是按照一定的数据模型(如关系模型、维度模型)对整个企业的数据进行采集和整理,并且能够根据各个部门的需要,提供跨部门的、具有一致性的业务报表数据,生成对企业总体业务具有指导性的数据,同时为领导决策提供全方位的数据支持。
通过研究数据仓库的演进过程,我们可以发现从数据集市阶段到数据仓库阶段,其中一个重要变化就在于对数据模型的支持。数据模型概念的完善和构建,可以使数据仓库发挥出更大的作用。因此,数据模型的建设对数据仓库而言具有重大意义,在本数据仓库项目的搭建过程中,我们也将对数据模型展开详细探讨。