1)数仓的分层原则

好的数仓分层并不是为了分层而分层,没有最好的只有更合适的,要考虑对下游及整个链路的影响

好的分层架构的要求

  • 清晰的数据结构
  • 数据血缘的追踪
  • 减少重复的开发
  • 数据关系的条理化
  • 屏蔽对原始数据的影响

数据仓库的分层

ODS -> DW->DM->APP

数仓架构ppt免费下载 数仓的架构_数据

ODS:数据源层 - Oprational Data Store

本层为数据源层,考虑到以后对数据源的追溯问题,不对业务数据进行处理,保持原有的数据,对一些数据的处理,比如去重、过滤空值等都放到DW层进行处理

DW:数据仓库层 - Data Warehouse

本层是数据仓库的核心层,对ODS的数据进行分主题域建模等

  • DWD - Data WareHouse Detail

数据明细层:

- 保持和ODS的数据粒度,数据清理、整合、去重、规范化、脏数据状态定义不一致等
  - **维度退化,将维度表退化至事实表中,减少事实表和维度表的关联**
  - **将部分数据聚合,相同主题的数据整合到一张表中,提高数据的可用性**
  • DWM - Data WareHouse Middle

数据中间层:

- 对核心维度进行轻度聚合,形成可复用的中间表的一些字段指标
  - 形成的小的中间表可在DWS层中拼接成宽表
  - 此层可根据具体业务省略,直接从DWD层-》DWS层
  • DWS - Data WareHouse Service

数据服务层:

- 公共汇总层,进行轻粒度的汇总,粒度比DWM层粒度要粗一点
  - 形成宽表数据,又叫数据集市,可以覆盖80%的业务场景
  - 根据主题域的划分为宽表,此层字段会比较多,表会少一点

APP:数据应用层 - Application

提供数据给业务分析和数据产品使用

DM:维表层 - Dimension

如果维表过多,可以单独设计维表层

  • 高基维度:一般为资料表,如果商品资料,用户资料表中,数据量较大(千万级,亿级)
  • 低基维度:一般为配置表,千万级别,也有可能是个位数

2)主题域的划分原则

根据业务和业务过程划分(业务线)

业务: 业务模块,功能模块

业务过程:企业的活动事件,比如:下单 - 支付 - 退款等

按照数据域划分

指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过 程可以概括为一个个不可拆分的行为事件,在业务过程下,可以定义指标,维度 是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数 据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。在划分数据域时, 既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数 据域中和扩展新的数据域

3)数据模型设计原则

  • 高内聚低耦合:主题内部高内聚,主题之间低耦合
  • 核心模型和扩展模型要分离:不能让扩展模型去影响核心模型
  • 公共逻辑下沉及单一:像java的封装,不要让公共的逻辑暴露给应用层,抽取出来的公共层一定要单一
  • 成本和性能平衡:适当的冗余可以增加查询性能,不可过度冗余和数据复制
  • 数据回滚:处理逻辑不变,在不同时间多次运行数据结果确定不变