1. 结构分层
1.1 数据加载层
一般数据源来自不同业务库、埋点、第三方数据源,存储一般使用mysql pgsql
1.2 数据运营层
数据量一般比较大,常用hdfs ,使用hive hbase
1.3 数据仓库层
存储需求和ods 类似
1.4 数据应用层
需要较高的反应速度,mysql pgsql redis
2. 数据模型
数据模型主要分为三层:
ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP是面向业务定制的应用数据。
2.1 ODS 数据运营层
- 数据运营层是最接近数据源的一层,本层数据总体按照源头业务系统的分类方式进行分类
- 一般来说,考虑溯源问题,减少该层的数据清洗程度,原封不动的接入原始数据,又DW进行清洗工作
2.2 DW 数据仓库
从ods层获取到的数据按照主题建立各种数据模型,在较高层级上对数据进行抽象,同类业务、中间表归档为同一主题。
2.2.1 dwd 数据明细层
-
粒度与ods保持一致,并提供一定数据质量支持;
-
进行维度退化手法,将维度退回到事实表中,减少事实表与维度表的关联;
-
进行部分数据聚合,将相同主题的数据汇集在一起
2.2.2 dwm数据中间层
-
对dwd数据进行轻度聚合,生成一系列中间表,提升公用指标的复用性
-
对通用指标核心指标进行聚合,算出相应指标
2.2.3 dws数据服务层
- 一般该层数据表比较少,一张表涵盖较多的业务内容,通常字段比较多,被称为宽表
实际应用中,由于ops 和dwm 计算的指标存在计算量大且维度少的问题。
解决方案:在dwm计算出多个小中间表,再拼接成一张dws的宽表
分层目标:80% 的需求能在dws表(20%的表)支持,极少数用到dwm ops 数据
2.3 app数据应用层
主要提供给数据产品或数据分析使用的数据,需要较高的反应速度
- 存放于redis postgresql 供线上系统
- 存放于hive druid 供数据分析与数据挖掘
2.4 dim数据维度层
- 高基数维度数据
- 低基数维度数据