目录

1.概述

2.什么是Kimball

2.1 概念

2.2 流程

3.什么是Inmon

3.1 概念

3.2 流程

4.特征对比

4.1 特性

4.2 优劣比较

5.具体例子

5.1 数据

5.2 对比

5.2.1 Inmon 模式:

5.2.2 Kimball 模式

6.总结


1.概述

    Kimball和Inmon是两种主流的数据仓库方法论,分别由 Ralph Kimbal大神 和 Bill Inmon大神提出,在实际数据仓库建设中,业界往往会相互借鉴使用两种开发模式。本文将详细介绍 Kimball 和 Inmon 理论在实际数据仓库建设中的应用与对比,通过数据仓库理论武装数据仓库实践。

2.什么是Kimball

2.1 概念

Kimball 模式从流程上看是是自底向上的,即从数据集市到数据仓库再到数据源的一种敏捷开发方法。对于Kimball模式,数据源往往是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,需要从这些OLTP中产生的事务型数据结构抽取出分析型数据结构,再放入数据集市中方便下一步的BI与决策支持。

2.2 流程

通常,Kimball都是以最终任务为导向。首先,在得到数据后需要先做数据的探索,尝试将数据按照目标先拆分出不同的表需求。其次,在明确数据依赖后将各个任务再通过ETL由Stage层转化到DM层。这里DM层数据则由若干个事实表和维度表组成。接着,在完成DM层的事实表维度表拆分后,数据集市一方面可以直接向BI环节输出数据了,另一方面可以先DW层输出数据,方便后续的多维分析。

Kimball往往意味着快速交付、敏捷迭代,不会对数据仓库架构做过多复杂的设计,在变换莫测的互联网行业,这种架构方式逐渐成为一种主流范式。

3.什么是Inmon

3.1 概念

Inmon 模式从流程上看是自顶向下的,即从数据源到数据仓库再到数据集市的一种瀑布流开发方法。对于Inmon模式,数据源往往是异构的,比如从自行定义的爬虫数据就是较为典型的一种,数据源是根据最终目标自行定制的。这里主要的数据处理工作集中在对异构数据的清洗,包括数据类型检验,数据值范围检验以及其他一些复杂规则。在这种场景下,数据无法从stage层直接输出到dm层,必须先通过ETL将数据的格式清洗后放入dw层,再从dw层选择需要的数据组合输出到dm层。在Inmon模式中,并不强调事实表和维度表的概念,因为数据源变化的可能性较大,需要更加强调数据的清洗工作,从中抽取实体-关系。

3.2 流程

通常,Inmon都是以数据源头为导向。首先,需要探索性地去获取尽量符合预期的数据,尝试将数据按照预期划分为不同的表需求。其次,明确数据的清洗规则后将各个任务通过ETL由Stage层转化到DW层,这里DW层通常涉及到较多的UDF开发,将数据抽象为实体-关系模型。接着,在完成DW的数据治理之后,可以将数据输出到数据集市中做基本的数据组合。最后,将数据集市中的数据输出到BI系统中去辅助具体业务。

4.特征对比

4.1 特性

特性

Kimball

Inmon

数据摄取

yes

yes

stage

yes

yes

ETL

yes

yes

数据集市

yes

yes

商业需求

yes

yes

数据时间属性

yes

yes

数据仓库优先

no

yes

事实维度拆分

yes

no

关系表维护

no

yes

处理导向

yes

no

数据模型泛化

no

yes

精心设计

no

yes

缓慢变化维

yes

no

连续变化维

no

yes

4.2 优劣比较

特性

Kimball

Inmon

时间

快速交付

路漫漫其修远兮

开发难度

维护难度

技能要求

入门级

专家级

数据要求

特定业务

企业级

5.具体例子

相信一通理论之后可能还是能困惑,现在举一个具体的例子。

5.1 数据

股票交易为例:(OLTP)原始数据包含了如下几张事务表:(真实场景字段设计更为复杂,此处已经简化)

交易记录表:记录用户下单情况

交易记录ID

用户ID

交易ID

交易单号

标的CODE

出价

现价

方向

手数

创建时间

修改时间

状态

备注

类型

1

1

1

MR123456

A123456

9.0

9.5

100

2016-10-10 10:58:00

2016-10-10 10:58:00

未成交

NULL

创业板

2

1

1

MR123456

A123456

9.0

8.9

200

2016-10-10 11:00:00

2016-10-10 11:00:10

已成交

NULL

创业板

3

1

2

MR123457

A123456

10.1

10.2

200

2016-10-10 14:00:00

2016-10-10 14:00:30

已成交

NULL

创业板

成交日志表:记录用户下单且成交的情况

成交日志ID

用户ID

外部单号

交易记录ID

标的CODE

方向

手数

成交价格

创建时间

修改时间

状态

备注

类型

1

1

MR123456

2

A123456

200

8.9

2016-10-10 11:00:10

2016-10-10 11:00:10

正常

NULL

创业板

2

1

MR123456

3

A123456

200

10.1

2016-10-10 14:00:30

2016-10-10 14:00:30

正常

NULL

创业板

用户信息表

用户ID

别名

姓名

联系方式

性别

身份号码

资产账户ID

是否开通创业板

风险评级

资产余额

创建时间

修改时间

用户类型

资产类型

1

FinanceR

张三

1234567890

12345567890X

SA123213

12321312.00

2015-10-10 14:00:00

2016-10-10 14:00:00

A

现金账户

5.2 对比

如果是 Inmon 模式,我们需要将数据库拆分成 用户实体表、成交日志实体表、用户与成交日志关系表等多个子模块。如果是 Kimball 模式,我们则需要将数据库拆分成 用户维度表、用户资产事实表、成交事实表。在Kimball模式中,我们不需要单独维护关系表,因为关系已经冗余在维度表和事实表中。

5.2.1 Inmon 模式:

用户实体

用户ID

别名

姓名

联系方式

性别

身份号码

是否开通创业板

风险评级

资产余额

创建时间

修改时间

用户类型

资产类型

1

FinanceR

张三

1234567890

12345567890X

12321312.00

2015-10-10 14:00:00

2016-10-10 14:00:00

A

现金账户

成交关系表

成交ID

用户ID

1

1

2

1

用户资产关系表

资产ID

用户ID

SA123213

1

5.2.2 Kimball 模式

用户维度表

用户ID

别名

姓名

联系方式

性别

身份号码

是否创业板

风险评级ID

创建时间

修改时间

用户类型ID

资产ID

1

FinanceR

张三

1234567890

SA123213

1

1

2015-10-10 14:00:00

2016-10-10 14:00:00

1

SA123213

可以看到这里的用户维度表不包含业务交易信息,变化相对缓慢(静态)而风险评级、用户类型也需要由风险评级维度表、用户类型维度表来维护

用户资产事实表

资产ID

用户ID

账户余额

资产类型

创建时间

修改时间

SA123213

1

12321312.00

现金账户

2016-10-10 14:00:00

2016-10-10 14:00:00

这里的用户资产事实表通常数据是由用户资产交易日志产生的,因为日志存在只插入,不更新的特点(快速增加、最细粒度)

6.总结

对于大多数互联网公司由于需求的快速变化,处心积虑设计(Inmon)实体-关系的设计哲学似乎并不能满足快速迭代的业务需要。所以,更多场景下趋向于使用(Kimball)维度-事实的设计哲学反而可以更快地完成任务。

数据仓库建设通常以日为粒度,将OLTP数据变化的不情况增量同步到数据仓库中。

在数据仓库的实际工作中,80%的时间会花费在任务调度、数据清洗和业务梳理上,只有20%的时间会投入到数据挖掘上。

数据仓库【Kimball vs Inmon】相关推荐

  1. 数据仓库Kimball Or Inmon?

    关键词: 数据仓库,数据集市,Kimball, Inmon, 敏捷开发 从1970 年的Codd关系数据模型,到DW开山鼻祖Inmon的关系型建模方法,再到Kimball 的雪花模型.DW的发展史驶过 ...

  2. 深入对比数据仓库模式:Kimball vs Inmon

    1.概述     Kimball和Inmon是两种主流的数据仓库方法论,分别由 Ralph Kimbal大神 和 Bill Inmon大神提出,在实际数据仓库建设中,业界往往会相互借鉴使用两种开发模式 ...

  3. 数据仓库(5)数仓Kimball与Inmon架构的对比

    数据仓库主要有四种架构,Kimball的DW/BI架构.独立数据集市架构.辐射状企业信息工厂Inmon架构.混合Inmon与Kimball架构.不过不管是那种架构,基本上都会使用到维度建模. Kimb ...

  4. Kimball和Inmon方法论的适用场景比较

    Kimball和Inmon是两种主流的数据仓库方法论,两者各有优势.本文简要的做一些比较,以帮助数据仓库实践. 1 Inmon数据仓库 Inmon数据仓库采用自上而下的方法.它将数据仓库定义为整个企业 ...

  5. C. 数据仓库 --- Kimball架构

    C. 数据仓库 - Kimball架构 Kimball关键性概念 总线架构:多维体系结构主要包括后台(Back Room)和前台(Front Room)两部分. 后台也称为数据准备区(Staging ...

  6. Kimball和Inmon方法论的适用场景比较。

    Kimball和Inmon是两种主流的数据仓库方法论,两者各有优势.本文简要的做一些比较,以帮助数据仓库实践. 1    Inmon数据仓库 Inmon数据仓库采用自上而下的方法.它将数据仓库定义为整 ...

  7. 数据仓库概念扫盲,kimball和Inmon两大派系在争什么?

    本文,是为了让大家更好的理解大数据经典架构的补充内容,主要介绍一下数据仓库相关的内容. 数据仓库(Data Warehouse,DW):由两个主要部分构成(一个整合的决策支持数据库 + 一个收集.清洗 ...

  8. 数据仓库中的Inmon与Kimball架构之争

    对于数据仓库体系结构的最佳问题,始终存在许多不同的看法,甚至有人把Inmon和Kimball之争称之为数据仓库界的"宗教战争",那么本文就通过对两位提倡的数据仓库体系和市场流行的另 ...

  9. 数据仓库中的Inmon与Kimball架构

    对于数据仓库体系结构的最佳问题,始终存在许多不同的看法,甚至有人把Inmon和Kimball之争称之为数据仓库界的"宗教战争",那么本文就通过对两位提倡的数据仓库体系和市场流行的另 ...

最新文章

  1. 自己动手开发jQuery插件
  2. Tungsten Fabric SDN — VNC API — API Server 的 API Specification
  3. php中if规则,php中if函数用法
  4. 【转载】Linux修改文件权限
  5. 加油站(暴力+贪心)
  6. C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串
  7. 【线段树】【LCT】【LCA】树点涂色(luogu 3703)
  8. 帕累托最优生活例子_创业者:用博弈解决生活的难题
  9. mysql 什么是子查询_MySQL 子查询
  10. RecordBatch分析
  11. Work Queues(点对多)
  12. MySQL多IDC部署注意事项
  13. mtk开机声音与关机声音修改(原创)
  14. mysql 1114错误_mysql cluster导表时报1114问题
  15. 【5G会话管理】UE IP地址的管理
  16. 验证码自动识别平台与打码平台的区别
  17. Java-满天繁星案例(2)
  18. Python 自动化办公-玩转 Word
  19. 【OBS Studio】脚本自动生成大量场景思考实践
  20. SQL Server 为视图或函数 指定的列名比其定义中的列多

热门文章

  1. moderlarts第一次培训
  2. HBase过滤器简介
  3. 盲人摸象符合格式塔心理学派的理论寓意吗?|小白心理-312/347考研答疑
  4. [Video Transformer] Video Swin Transformer
  5. 返利CPS项目怎么做
  6. 【课程】并行计算导论
  7. springBoot优雅返回图片/网页到浏览器
  8. glup前端代码打包的使用
  9. 图像查看软软件XnView
  10. [Java Web]一篇文章由浅入深地带你入门HTML