Kimball vs Inmon
先说结论
国内互联网公司90%以上用的是Kimball(维度建模),或者更准确地说,是Kimball的变体。Inmon在传统企业(银行、电信、制造业)还有不少应用,但在互联网和大数据领域,Kimball是绝对主流。面试的时候不要只背区别,要能说出为什么你们选了这个方案。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
高阶 | 大数据面试 · 数仓建模系列
| 面试真题 Kimball和Inmon的建模方法论有什么区别?你们公司用的是哪种?为什么? |
|---|
核心区别
| 对比项 | Kimball | Inmon |
|---|---|---|
| 思路 | 自下而上:先建数据集市再整合 | 自上而下:先设计企业级模型 |
| 核心产出 | 事实表+维度表(星型模型) | 3NF范式化表 |
| 建设周期 | 快,2-4周出第一个主题 | 慢,需完整设计后才能用 |
| 灵活性 | 高,加新维度就行 | 低,改动牵一发动全身 |
| 查询性能 | 好,JOIN少 | 差,JOIN多 |
| 适合团队 | 小团队、快速迭代 | 大团队、长期规划 |
| 典型用户 | 互联网公司 | 银行、电信、政府 |
实际项目中的混合方案
纯粹的Kimball或Inmon在实际项目中很少见。大部分公司用的是混合方案:ODS层同步不变;DWD层偏Inmon,做规范化清洗;DWS/ADS层偏Kimball,星型模型+宽表。这种「底层规范化、上层维度化」的折中方案最为普遍。
| Wood的实战经验 我的4段工作经历全部用Kimball方法论。小公司没条件花3个月做完整企业级设计,先跑起来边跑边优化就是Kimball精髓。 不过我在出海硬件品牌时DWD层做了严格规范化(用户、设备、事件各自独立),DWS层则完全按Kimball建星型模型和宽表。底层规范、上层灵活。 |
|---|
| 面试加分提示 「我们主要用Kimball,因为团队小、4E1A务迭代快、查询引擎适合星型模型。但DWD层借鉴了Inmon思想做了规范化,可以说是混合方案。」 先表明主方案+理由,再说借鉴的部分,显示全面性。 |
|---|
总结
| 记忆点 | 内容 |
|---|---|
| Kimball | 自下而上,维度建模,快,互联网主流 |
| Inmon | 自上而下,范式建模,稳,传统企业多 |
| 实际方案 | 大多数混合:底层偏Inmon,上层偏Kimball |
| 选型依据 | 团队规模+业务迭代速度+查询引擎特性 |