网上已经有很多关于数据仓库特征的介绍,这里就不再赘述。主要是梳理下数据仓库inmon和kimball两大派系的特点。
kimball数据仓库架构
Kimball架构是一种自下而上的架构,它认为数据仓库是一系列数据集市的集合。企业可以通过一系列维数相同的数据集市递增地构建数据仓库,通过使用一致的维度,能够共同看到不同数据集市中的信息,这表示它们拥有公共定义的元素。
kimball将数据仓库划分为4个不同组成部分,分别是:操作型源系统、ETL系统、数据展示和商业应用,架构图如下:
操作型源系统
记录操作型系统,用于获取业务事务。源系统位于数据仓库之外,提供的数据仓库需要的基础数据,系统不能控制源系统数据格式和内容。但源系统一般不维护历史信息,数据仓库的责任是更好的承担源系统过去情况的责任,并依据业务需求实现源系统数据不能实现广泛的、无法预料的查询方式查询特点。
获取-转换-加载(ETL)系统
ETL系统处于操作型源系统和数据仓库展现之间。ETL工作流程包括数据获取、转换和加载。
其中数据获取是将数据从操作型系统导入数据仓库环境,读取并理解数据将需要的数据复制到ETL系统进行后续数据处理操作。
数据转换是对读取的操作型源系统数据进行清洗数据(消除拼写错误、处理错误元素、解析规范数据标准格式)、合并来自不同数据源数据。数据通过ETL系统处理,增加数据利用价值,同时可以进行元数据诊断,逐步改进源系统数据质量。
数据加载是将构建处理完成的数据加载到展现区域的目标纬度模型中。在数据加载过程中主要是划分纬度和事实,具体包括代理键分配、查找代码以及提供适当描述、拆分或组合列以提供适当的数据值、连接满足3NF数据表成为扁平的不满足规范化要求。
支持商业智能决策展现区
展现区数据应该以维度模型展现,采用星型模式或OLAP多维数据库。为满足用户无法预期的、随意查询,必须使用原子数据。虽然在展现区,为提高性能会存储聚集数据,但仅仅有这些汇总数据而没有形成汇总数据的细粒度数据,是不够完整的。虽然用户度某个订单的单个目的查询频度较低,但可能会对上周、上个月订单类型查询,因此展现区一定要包含最细粒度数据,方便用户获取得最准确查询结果,而用户对需求是不可预知的、不断变化的,提供各种细节数据方便用户上卷解决实际问题。
商业智能应用
商业智能(Business Intelligence,BI)指用户利用展现区制定分析决策能力。
辐射状企业信息工厂inmon架构
Bill Inmon提倡辐射状企业信息工程(corporate information factory,CIF),下图是简化版CIF。
在CIF环境下,数据从操作型数据源中获取,在ETL系统中处理,这一过程叫数据获取。这一过程获取的原子数据保存在满足3NF数据库中。这种规范化、原子数据的仓库称为CIF架构下企业数据仓库(EDW)。而规范化的数据要求是CIF中强制性的构件。CIF提倡企业数据协调和集成,是使用规范化的EDW承担这一角色。
inmon主张自上而下的架构,不同的OLTP数据集中到面向主题、集成的、不易失的和时间变化的结构中,用于以后的分析,且数据可以通过下钻到最细层,或者上卷到汇总层;数据集市应该是数据仓库的子集,每个数据集市是针对独立部门特殊设计的。inmon将数据仓库定义为整个企业级的集中存储库,数据仓库存放着最低的详细级别的原子数据。维度数据集市只是在数据仓库完成以后才创建的。因此,数据仓库是企业信息工厂(CIF)的中心,它为交付商务智能提供逻辑框架。
数据获取
获取各种操作源系统数据,按照3NF标准对获取的数据进行拆分,形成企业数据仓库中的规范表。
数据发布
针对不同主题,对企业数据仓库中的规范原子数据按照维度模型拆分,结合部门、主题场景对企业数据仓库中的数据进行上卷到汇总层,提供BI应用使用。企业数据仓库中保留的是原子数据,BI应用系统可以下钻直接查询原子数据等细粒度数据。
两大派系对优缺点总结
Inmon的核心企业数据仓库要求规范化表,需要大量的时间来梳理和设计数据表结构,但如果规范化数据仓库一旦建立好了,则以后数据就更易于管理。而且由于开发人员不能直接使用其中心数据库,更加确保了数据质量,中心数据库是采用规范化设计的,冗余情况也会更少。而维度建模数据仓库对数据表结构没有强规范型要求,数据仓库建设敏捷性就更好点,而且适用于业务变化比较频繁的情况,对开发人员的要求也没有规范化数据仓库那么高。