据仓库(data warehouse) 也可以简称为
DW
DH
数据仓库中的分层:
1. 数据运营层 ODS
ODS
(Operation Data Store): 数据准备区,最接近数据源的一层, 也称为贴源层
. 数据仓库中 源头系统的数据通常会原封不动的存储一份. 这称为为ODS
. 是后续数据仓库加工数据的来源.ODS 数据来源的方式:
- 业务数据库
- 经常会使用sqoop来抽取,例如每天定时抽取一次。
- 实时方面,可以考虑
用canal监听mysql的binlog
,实时接入即可.
- 埋点日志
- 日志一般以文件的形式保存,可以选择用flume定时同步
- 也可以采用 spark Streaming, flink 来做实时同步
- kafka也ok
- 消息队列
- kafka, rabbitMQ
- 业务数据库
2. 数据仓库层 DW
DW 数据分层,由上至下 可以分为:
DWD
,DWB
,DWS
DWD
(data warehouse deatils): 细节数据层,是业务层与数据仓库层的隔离层, 主要是对 ODS做一些数据清洗和 规范化的操作.- 去除空值,脏数据,超过规范极限的…
DWB
(data warehouse base): 数据基础层, 存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层.- 一般是由数据明细层 按照一定的业务需求,生成轻度汇总表. 明细层需要复杂清洗的数据和需要MR处理的数据也经过处理后接入到轻度汇总层.
- 日志存储方式: 内表,parquet文件格式.
- 日志删除方式: 长久存储.
- 表schema: 一般按天创建分区,没有时间概念的按具体业务选择分区字段.
- 库与表命名: 库名:dwb,表名:初步考虑格式为:dwb日期业务表名,待定.
- 旧数据更新方式: 直接覆盖
DWS
(data warehouse service): 数据服务层, 基于 DWB的基础数据,整合汇总成分析某一个主题域的数据服务层. 一般是宽表. 用于提供后续的业务查询. OLAP 数据分析, 数据分发…- 用户行为轻度聚合
- 主要是对
DWD
DWB
的数据做一些轻度汇总. - 数据宽表, 按照业务划分,如流量、订单、用户等, 生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等.
- 数据生成方式: 由轻度汇总层和明细层数据计算生成.
- 日志存储方式:使用impala内表,parquet文件格式
- 日志删除方式:长久存储
- 表schema:一般按天创建分区,没有时间概念的按具体业务选择分区字段.
- 库与表命名:库名:dm,表名:初步考虑格式为:dm日期业务表名,待定.
- 旧数据更新方式: 直接覆盖
3. 数据服务层,应用层 ADS
ADS
(Application Data Service): 应用数据服务,该层主要是提供数据产品和数据分析使用的数据,一般会存储在ES、mysql等系统中供线上系统使用。
我们通过说的报表数据,或者说那种大宽表,一般就放在这里ETL
(Extract-Transform-Load): 用于描述将数据从来源端经过抽取、转换、加载
到目的端的过程。宽表
: 指字段比较多的数据库表. 通常是指业务主体相关的指标,纬度,属性关联在一起的一张数据库表.- 宽表由于把不同的内容都放在同一张表,宽表已经不符合三范式的模型设计规范:
- 坏处:数据有大量冗余
- 好处:查询性能的提高和便捷
- 宽表的设计广泛应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提供数据挖掘模型训练过程中迭代计算的消息问题.
- 宽表由于把不同的内容都放在同一张表,宽表已经不符合三范式的模型设计规范:
[参考]
数据仓库分层中的ODS、DWD、DWS
【漫谈数据仓库】 如何优雅地设计数据分层 ODS DW DM层级
数据仓库–通用的数据仓库分层方法