为把Bill Inmon和Kimball 两种不同的思路统一起来,Bill Inmon提出了CIF(Corporation Information Factory)架构,核心是把数据仓库分为不同的层次以满足不同场景的需求;每层根据不同的场景采用不同的方案。
传统数据仓库1.0的分层:
数据源->数据集成平台->数据交换平台->数据集市(数据应用、数据汇总、数据明细)
传统数据仓库2.0的分层:
ODS->DWD->DWS->DM
- ODS(Operation Data Service):操作型数据服务,不做建模,和业务数据库保持一致
- DWD(Data WareHouse Detail):数据仓库明细层,采用ER 建模,一般到3NF ;对来源于多个业务系统的数据进行合并;如需要,在该层另外开辟一个区域作为公共维度层(DIM),把通用的主数据抽取出来按3NF建模。
- DWS(Data WareHouse Service):数据仓库服务层,采用维度建模,对DWD的数据进行按维度建模,可根据需要进行通用的轻微轻汇总,减少重复计算。
- DM(Data Market):数据集市层,采用维度建模、多维建模,根据业务需求对DWS层进行重度汇总,方便业务使用。
基于大数据的数据仓库:
Data Lake->DWD->DWS->DM->ADS(BI、推荐系统、用户画像、广告系统)
Data Lake:数据湖,采集企业的所有数据,包括结构化数据、半结构化数据、非结构化数据、媒体数据(音频、视频、图片);可以保留源数据格式或用Data Vault建模。
其他层和传统数仓几乎差不多。
ODS层的作用:
- 尽可能减少对源系统的影响
- 方便作业重新开始以及Debug
- 数据备份、方便数据审计
- 数据格式的统一
- 实时性要求高就不必ODS
- 必要时添加派生审计字段、去掉Clob、Blob字段、增加checkSum code
DW&DM层的区别:
| DW | DM |
需求 | 侧重于整合,下游为系统;侧重于共享性和权威性 | 侧重于分析,下游是报表;侧重于灵活性和多变性 |
模型 | 侧重于模型的稳定性,兼顾成本和效率 | 侧重访问的方便性 |
团队和管理 | 总部CIO主导,主数据、参照数据等核心数据由总部CIO审核 | 确保数据来源于DW,数据的Owner是数据使用部门 |
变更管理 | 谨慎面对变化,充分考虑对下游的影响 | 主动迎接变化,方便下游使用 |
访问 | ETL、各系统的接口、低频次 | 高频次、最终用户 |
审计 | 数据变化的审计 | 报表的访问审计 |