Kimball和Inmon是两种主流的数据仓库方法论,分别由 Ralph Kimbal大神 和 Bill Inmon大神提出,在实际数据仓库建设中,业界往往会
相互借鉴使用两种开发模式
Inmon和Kimball是数据仓库领域伟大的开拓者,他们均多年从事数据仓库的研究,Inmon还被称为“数据仓库之父”。Inmon的《数据仓库》和Kimball的《数据仓库工具箱》都是此领域的经典之作。后来人把这两人的数据仓库思想总结为“Inmon理论”和“Kimball理论”。他们的思想有共同点,也有不同点。
什么是数据仓库:数据仓库之父 Inmon的经典定义如下:数据仓库(Data Warehouse)是一个面向主题的(Subject
Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time
Variant)的数据集合,用于支持管理决策(Decision Making Support)。
1. 共同点
(1)均极力推崇数据仓库,认为从OLTP到BI分析之间建立数据仓库是很有必要的;
(2)均认为数据仓库的建立需要从企业整体角度出发,迭代开发,尽量避免按部门建立独立的数据仓库;
(3)数据进入数据仓库之前,需要经过ETL整合。
2. 不同点
Inmon理论
(1)数仓概念:数据仓库(Data Warehouse)是一个面向主题的(Subject
Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time
Variant)的数据集合,用于支持管理决策(Decision Making Support);
(2)自上而下按照主题建立数据仓库,如按照客户、供应商、产品等建立不同的主题。开发过程中每次增加一个主题;
(3)当建立的数据集市是跨多个主题的,需要以整合好的主题数据为基础。
Kimball理论
(1)自下而上,维度建模;
(2)先按照业务主线建立最小粒度的事实表,再建立维度表,形成数据集市,通过“一致维度”能够共同看到不同数据集市的信息;
1.什么是Kimball
1.1 概念
Kimball 模式从流程上看是是自底向上的,即从数据集市到数据仓库再到数据源(先有数据集市再有数据仓库
)的一种敏捷开发方法。对于Kimball模式,数据源往往是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,需要从这些OLTP中产生的事务型数据结构抽取出分析型数据结构,再放入数据集市中方便下一步的BI与决策支持。
1.2 流程
通常,Kimball都是以最终任务为导向。首先,在得到数据后需要先做数据的探索,尝试将数据按照目标先拆分出不同的表需求。其次,在明确数据依赖后将各个任务再通过ETL由Stage层转化到DM层。这里DM层数据则由若干个事实表和维度表组成。接着,在完成DM层的事实表维度表拆分后,数据集市一方面可以直接向BI环节输出数据了,另一方面可以先DW层输出数据,方便后续的多维分析。
Kimball支持数据仓库总线结构,提倡维度建模,以星型模型或是雪花模型等方式构建维度数据仓库。架构体系中,数据集市于维度数据仓库是紧密结合的,数据集市是数据仓库中一个逻辑上的主题域。各种前端工具将可以直接访问使用维度数据仓库。
Kimball往往意味着快速交付、敏捷迭代,不会对数据仓库架构做过多复杂的设计,在变换莫测的互联网行业,这种架构方式逐渐成为一种主流范式。
2. 什么是Inmon
2.1 概念
Inmon 模式从流程上看是自顶向下的,即从数据源到数据仓库再到数据集市的(先有数据仓库再有数据市场)一种瀑布流开发方法。
对于Inmon模式,数据源往往是异构的,比如从自行定义的爬虫数据就是较为典型的一种,数据源是根据最终目标自行定制的。这里主要的数据处理工作集中在对异构数据的清洗,包括数据类型检验,数据值范围检验以及其他一些复杂规则。在这种场景下,
数据无法从stage层直接输出到dm层,必须先通过ETL将数据的格式清洗后放入dw层,再从dw层选择需要的数据组合输出到dm层。
在Inmon模式中,并不强调事实表和维度表的概念,因为数据源变化的可能性较大,需要更加强调数据的清洗工作,从中抽取实体-关系。
2.2 流程
通常,Inmon都是以数据源头为导向。首先,需要探索性地去获取尽量符合预期的数据,尝试将数据按照预期划分为不同的表需求。其次,明确数据的清洗规则后将各个任务通过ETL由Stage层转化到DW层,这里DW层通常涉及到较多的UDF开发,将数据抽象为实体-关系模型。接着,在完成DW的数据治理之后,可以将数据输出到数据集市中做基本的数据组合。最后,将数据集市中的数据输出到BI系统中去辅助具体业务。
3.Kimball VS Inmon 优劣比较
Kimball方式对团队技术水平要求不太高,更易于实现,从小型的主题域数据集市建设起,但在逐步建设过程中,联合维度数据仓库的一致性较难控制,适用于战术层级的规划,或是有迫切的目标需要实现。
Inmon的方式,规范性较好,数据集成和数据一致性方面得到处理,适用于较为大型的企业级、战略级的规划。但对团队的要求较高,且实现周期较长、成本高昂。具体可根据企业的规模、项目规划、预算、团队等角度进行综合考虑。
特性KimballInmon
时间快速交付路漫漫其修远兮
开发难度小大
维护难度大小
技能要求入门级专家级
数据要求特定业务企业级
4.特征对比