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 vs Inmon】

    目录 1.概述 2.什么是Kimball 2.1 概念 2.2 流程 3.什么是Inmon 3.1 概念 3.2 流程 4.特征对比 4.1 特性 4.2 优劣比较 5.具体例子 5.1 数据 5.2 ...

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

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

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

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

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

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

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

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

  6. 数据仓库Kimball Or Inmon?

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

  7. 【DBMS 数据库管理系统】数据仓库 ( 数据仓库简介 | 操作型数据与分析性数据对比 | 数据仓库特征 | 特征一 : 面向主题组织数据 | 面向应用 | )

    文章目录 一.数据仓库简介 二.操作型数据与分析型数据对比 三.数据仓库 特征 与 定义 四.特征一 : 面向主题 数据组织方式 五.面向应用 数据组织方式 六.面向主题 组织数据 七.数据 从 面向 ...

  8. RAID独立磁盘冗余阵列,对比各模式下的性能优劣

    一.RAID 概述 首次提出: 1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 "A Case of Redundant Array of Inexp ...

  9. 数据仓库分层类型-具体实例

    数据仓库分层类型 架构发明者 建模方式[5] 著作 数据仓库特点 架构图 Kimball Ralph Kimbal 维度建模 The Data Warehouse Toolkit 自底向上 Inmon ...

最新文章

  1. tensorflow intel platform 优化
  2. WEB登录H3C模拟器
  3. ubuntu/linuxmint如何添加和删除PPA源
  4. 安装python38_debian8安装python3.7
  5. 【转】奴性哲学十句话,洗脑常用词!!!
  6. 用一条dos命令创建一个恶意文件夹
  7. linux——rpm的详细说明
  8. 深入理解java虚拟机 (一) 第二版
  9. 我想做产品,实现一个非常优秀的电脑桌面记事本加闹钟
  10. 型人格 disc测试_(在线测试)表演型人格障碍 在线筛查测试表演性人格障碍...
  11. IntelliJ IDEA lombok插件的安装和使用
  12. 【Angular 4】管道
  13. 部署速度翻6倍,知乎从0到1实现部署系统演进及优化
  14. 简单控制 xLang 窗体
  15. 单路视频编码器怎么使用
  16. td-agent 安装,配置,采集日志到postgresql
  17. python移动图形工作站_让Python跑得更快
  18. Manim文档及源码笔记-CE文档-主题化指南3渲染文本和公式
  19. wpf 打开输入法、禁用输入法
  20. 【电子产品】关于指纹考勤机识别率下降

热门文章

  1. 【NOIP 2013 Day1 T3】货车运输(最大生成树+LCA)
  2. 创业板股票如何在python取数_如何用python获取实时的股票数据?
  3. android auto 映射百度地图,GitHub - puderty/pudev: 1,百度CarLife映射与高清修改,纯属自用。2,Android Auto的第三方地图...
  4. python教学研究_基于CDIO模式的Python教学研究
  5. Latex中文配置中修复Package fontspec Error
  6. 招聘旺季来临,爽朗的小伙伴们,你们准备好了吗?
  7. windows系统给文件添加备注
  8. 想考华为认证,需要准备什么?
  9. matlab离散系统仿真分析——电机
  10. 计算机 创新方法举例,列举列举五种创新的方法并加以举例说明