数仓模型的分层:ODS -> DW-> DM -> APP
(1) ODS:数据源层 - Oprational Data Store
本层为数据源层,,存放原始数据,主要是埋点数据(日志数据)和业务操作数据(binlong),数据源主要是Mysql、HDFS、Kafka等,考虑到以后对数据源的追溯问题,不对业务数据进行处理,保持原有的数据。
(2) DW:数据仓库层 - Data Warehouse
本层是数据仓库的核心层,对ODS的数据进行分主题域建模等,比如去重、过滤空值等都放到DW层进行处理
- DWD - Data WareHouse Detail
数据明细层:
- 保持和ODS的数据粒度,【数据清理、整合、去重、规范化、脏数据】状态定义不一致等`
- **维度退化,将维度表退化至事实表中,减少事实表和维度表的关联**
- **将部分数据聚合,相同主题的数据整合到一张表中,提高数据的可用性**
- DWM - Data WareHouse Middle
数据中间层:
- 对【核心维度进行轻度聚合】,形成可复用的中间表的一些字段指标
- 形成的小的中间表可在DWS层中拼接成宽表
- 此层可根据具体业务省略,直接从DWD层-》DWS层
- DWS - Data WareHouse Service
数据服务层:
- 公共汇总层,进行轻粒度的汇总,粒度比DWM层粒度要粗一点
- 形成【宽表数据】,又叫【数据集市】,可以覆盖80%的业务场景
- 根据主题域的划分为宽表,此层字段会比较多,表会少一点
- DIM:维度表 - Dimension 公共维度层,基于维度建模理念思想,建立整个业务过程的一致性维度,主要使用 MySQL、Hbase、Redis 三种存储引擎,
(3) DM:数据集市层
以数据域+业务域的理念建设公共汇总层,对于DM层比较复杂,需要综合考虑对于数据落地的要求以及具体的查询引擎来选择不同的存储方式,分为轻度汇总层和高度汇总层。
(4) APP:数据应用层 - Application
提供数据给业务分析和数据产品使用
【主题域的划分原则】:根据业务和业务过程划分(业务线)
业务: 业务模块,功能模块
业务过程:企业的活动事件或行为,比如:下单 - 支付 - 退款等(---行为表和维表)
按照数据域划分
指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个个不可拆分的行为事件,在业务过程下,可以定义指标,维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。在划分数据域时, 既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域