数仓在不同业务中中有不同的分层方式,针对日志型数仓,一般会有以下几层:
ODS贴源层:这是外部数据入库的缓冲层,所有数据都是按照入库时间进行增量存储,一般这层只会存储最近7天或者最近一个月的数据
DWD明细层:这是按照入库时间进行分区的全量数据,每天从ODS层数据进行同步更新。这是数仓离线计算的数据基础,也是明细数据查询基础
EDW增量层:这是按照业务发生时间进行分区的增量数据,按照业务的要求,会循环更新最近一段时间的数据最为edw增量计算数据,同时进行数据去重清洗异常数据,轻度汇总等任务
DWS汇总层:应用数据模型按照业务计算共性数据,业务指标的核心算法
APS应用层:依据业务需求对数据进行加工,加工完成的数据直接进入到分析型数据库中。这是报表数据的来源
一般ODS数据为非压缩数据,其他层的数据采用ORC格式存储snappy压缩,每层数据随着去重汇总数据会减少3~5倍左右
ODS和DW有什么区别?报表数据为什么不能来源于ODS?
ODS反应的是当前数据,一般只存储最近很短一段时间的数据,而DW是历史数据,可能会有几年甚至十几年的数据。所以ODS中并不是完整的数据,不能用来做长期决策
在上面的分层中,数据流向为 原始日志->ODS->DWD->EDW->DWS->APS
这种架构贴源层数据和数仓数据高度统一,开发成本比较低,但是由于所有数据都要走ODS,所以扩展性就比较差了。