目前,业界里存在 Kimball与Inmon各自倡导的两种体系结构,两者各有优势。
ETL 之前是操作型系统或者事务系统,有数据库在线系统,有文本文件系统等。这些系统的数据经过 ETL 后,加载数据到企业数据仓库中。
ETL(数据集成)的过程是整合不同系统的数据,经过加工、清洗和统一。
企业数据仓库:目的是将附加的数据存储用于各种分析型系统。
数据集市:是针对不同的主题区域,从企业数据仓库中获取的信息,转换成多维格式,然后通过不同手段的聚集、计算,最后提供最终用户分析使用。
Inmon 把信息从企业数据仓库移动到数据集市的过程描述为“数据交付”。
kimball的维度数据仓库是基于维度模型(星型、雪花、星座模型)建立的企业级数据仓库,有时称为“总线体系结构”,和inmon提出的企业信息化工厂有很多相似之处,都是考虑原子数据的集成仓库。
建立从属数据集市的好处主要有:
性能:当数据仓库的查询性能出现问题,可以考虑建立几个从属数据集市,将查询从数据仓库移出到数据集市。
安全:每个部门可以完全控制他们自己的数据。
数据一致:因为每个数据集市的数据来源都是同一个数据仓库,有效消除了数据不一致的情况。
Inmon数据仓库采用自上而下的方法。它将数据仓库定义为整个企业级的集中存储。数据仓库存放着最低的详细级别的原子数据。维度数据集市只是在数据仓库完成后才创建的。因此,数据仓库是企业信息工厂(CIF)的中心,它为交付商业智能提供逻辑框架。
Kimball数据仓库采用自下而上的方法。它首先建立最重要的业务单元或部门的数据集市。这些数据集市可以为透视组织数据提供一个较窄的视图,需要的时候,这些数据集市还可以与更大的数据仓库合并在一起。Kimball将数据仓库定义为“一份针对查询和分析做特别结构化的事物数据拷贝。”Kimball的数据仓库结构就是著名的数据仓库总线。
Kimball提出了维度建模方法,将表分为事实表和维度表。维度模型关注的重点是如果使最终用户访问数据仓库更容易,并有较高的性能。
一、都是假设操作型系统和分析型系统是分离的;
二、数据源(操作型系统)都是众多;
三、ETL整合了多种操作型系统的信息,集中到一个企业数据仓库。
Kimball 的数据仓库包含高粒度的企业数据,使用多维模型设计,这也意味着数据仓库由星型模式的维度表和事实表构成。分析系统或报表工具可以直接访问多维数据仓库里的数据。
在此架构中的数据集市也与 Inmon 中的不同。这里的数据集市是一个逻辑概念,只是多维数据仓库中的主题域划分,并没有自己的物理存储,也可以说是虚拟的数据集市。
在 kimball 的架构中,还有一个可变通的设计,即在 ETL 的过程中加入 ODS 层,使得 ODS 层中能保留第三范式的一组表来作为 ETL 过程的过度。另外,还可以把数据集市和企业维度数据仓库分离开来,这样多一层,即展现层(Presentationlayer)。
简单归纳 Kimball 和 Inmon 的区别,如下图:
特性 | Kimball | Inmon |
时间周期 | 快速交付 | 比较长 |
开发难度 | 小 | 大 |
维护难度 | 大 | 大 |
技能要求 | 入门级即可 | 专家级 |
业务要求 | 特定业务 | 企业级 |
kimball 模式 -- 互联网企业优先选择
适合快速迭代,实施成本低,能够较快交付任务。这种模式非常适应互联网行业的高速发展,也适合中小型企业。
inmon模式 -- 传统企业优先选择
开发进度慢,实施成本高,适合对设计科学性和规范性较高的企业,在业务模式较固定的行业应用较好,比如金融和电信等行业。
PS:企业可以根据自身业务场景,选择不同的数据仓库架构来建设。