2.数据仓库架构

2.1.数据设计方法

数据仓库建立之前,就必须考虑其实现方法,通常有自顶向下、自底向上和两者结合进行的这样三种实现方案。

2.1.1.自顶向下实现

自顶向下的实现需要在项目开始时完成更多计划和设计工作,这就需要涉及参与数据仓库实现的每个工作组、部门或业务线中的人员。要使用的数据源、安全性、数据结构、数据质量、数据标准和整个数据模型的有关决策一般需要在真正的实现开始之前就完成。

2.1.2.自底向上实现

自底向上的实现包含数据仓库的规划和设计,无需等待安置好更大业务范围的数据仓库设计。这并不意味着不会开发更大业务范围的数据仓库设计;随着初始数据仓库实现的扩展,将逐渐增加对它的构建。现在,该方法得到了比自顶向下方法更广泛的接受,因为数据仓库的直接结果可以实现,并可以用作扩展更大业务范围实现的证明。

2.1.3.两者结合的折中实现

每种实现方法都有利弊。在许多情况下,最好的方法可能是某两种的组合。该方法的关键之一就是确定业务范围的架构需要用于支持集成的计划和设计的程度,因为数据仓库是用自底向上的方法进行构建。在使用自底向上或阶段性数据仓库项目模型来构建业务范围架构中的一系列数据集市时,您可以一个接一个地集成不同业务主题领域中的数据集市,从而形成设计良好的业务数据仓库。这样的方法可以极好地适用于业务。在这种方法中,可以把数据集市理解为整个数据仓库系统的逻辑子集,换句话说数据仓库就是一致化了的数据集市的集合。

2.2.数据仓库架构争论

关于Inmon 和 Kimball的大辩论:Ralph Kimball 和 Bill Inmon 一直是商业智能领域中的革新者,开发并测试了新的技术和体系结构。在BI/DW领域中,围绕“哪一种数据仓库架构(Data Warehouse Architecture)最佳?”的争论一直没有休止,这个问题同时也是企业在建立DW时需要决策的关键问题:Bill Inmon的集线器架构/企业信息工厂架构(Hub and Spoke / CIF – Corporate Information Factory)与 Ralph Kimball的数据集市/数据仓库总线架构(Data Mart Bus Architecture/Data Warehouse Bus Architecture)则是DW架构的争论焦点。

Bill Inmon 将数据仓库定义为“一个面向主题的、集成的、非易变的、随时间变化的用于支持管理的决策过程的数据集合”;他通过“面向主题”表示应该围绕主题来组织数据仓库中的数据,例如客户、销售、产品等等。每个主题区域仅仅包含该主题相关的信息。数据仓库应该一次增加一个主题,并且当需要容易地访问多个主题时,应该创建以数据仓库为来源的数据集市。换言之,某个特定数据集市中的所有数据都应该来自于面向主题的数据存储。 Inmon 的方法包含了更多上述工作而减少了对于信息的初始访问。但他认为这个集中式的体系结构持续下去将提供更强的一致性和灵活性,并且从长远来看将真正节省资源和工作。下图是他的设计方法图解:


Ralph Kimball 说“数据仓库仅仅是构成它的数据集市的联合”,他认为“可以通过一系列维数相同的数据集市递增地构建数据仓库”。每个数据集市将联合多个数据源来满足特定的业务需求。通过使用“一致的”维,能够共同看到不同数据集市中的信息。Kimball 的数据仓库结构也就是著名的数据仓库总线(BUS)。设计方法如下图:


2.3.数据仓库架构选型

数据仓库架构的选取,与其所处的企业环境和业务的发展有着密切的关系:Inmon提倡的数据仓库建设方法,需要数据仓库建设人员自顶向下进行建设,数据仓库开发人员需要在数据仓库建设之前对企业各业务线进行深入的调研,有着非常全面的了解,然后根据企业各业务特点进行主题域划分。这种建设方式建设周期比较长,规划设计比较复杂,但是一旦建成,这个集中式的体系结构将提供更强的一致性和灵活性,并且从长远来看将真正节省资源和工作;Kimball提倡的数据仓库仅仅是构成它的数据集市的联合,各部门或业务可以根据自身的发展,建设符合自身主题的数据集市,并持续丰富完善这些数据集市。在应对企业级数据需求时,将这些数据集市的维度信息进行统一整理规范,然后通过一致的维度信息,将这些数据集市连接起来,使数据集市形成一个覆盖企业所有部门或业务的数据仓库,对外提供服务。

根据企业发展阶段和业务发展的速度建议:传统的、业务成熟的企业可以考虑采用Inmon方法建设数据仓库;业务复杂而且差异较大、发展速度又非常快的企业可以考虑Kimball方法建设数据仓库。

2.4.企业发展中的数据仓库建设变迁

企业或新部门,在初期发展过程中业务量少、组织形式相对简单。使得数仓建设人员可以站在全局的高度,俯视整个公司的业务流程,对其进行梳理归类,并抽取数据模型。以自上而下的方式建设数据仓库。所以在初期数据仓库建设的过程中基本采用了Inmon提倡的数据仓库建设方法,采用了DataSource-->ODS→EDW→DM-->APP的结构。即由ODS层完成各部门数据源的集成,在ODS的基础上建设了覆盖公司所有业务的包含众多主题的统一的数据仓库,然后由这个统一的数据仓库作为唯一的数据源,为各部门的数据集市提供数据支持。如下图:


但是一旦企业或部门发展速度非常快,业务量急剧增大,而且业务的组织形式趋于复杂,不同的业务之间可能存在巨大的差距。数据仓库的建设如果再继续沿用自伤而下的方式就会带来很多困难,例如在Inmon模式下EDW规划复杂、建设周期长,不能非常快速的响应各部门的需求,所以该方案逐步不能适应公司的发展。为了适应企业的发展,经过数仓开发人员的不断探索尝试,基本上倾向于采用混合模式建设数据仓库,即采用Inmon+Kimball的变种模式,结构如下:

从图上可以看出,与原有的架构最大的区别是:各部门数据集市的数据源并不是唯一的从EDW中获取,而是从各部门数据源所集成到的ODS层获取。但是有各部门数据集市也会涉及到跨部门的数据统计,所以这种公司级的数据应用还是从企业级数据仓库中获取。也就是各部门数据集市来支持各部门业务需求;企业级数据需求,从各部门数据集市或ODS层抽取公共模型进行建设(例如:公司级订单、用户等),并且在这里将各部门集市所依赖的公共维度进行统一,来支持公司级或跨部门的业务需求。