参考: 万字详解数仓分层设计架构 ODS-DWD-DWS-ADS
数据分层的意义
1、清晰数据结构
2、数据血缘追踪
3、数据复用,减少重复开发
4、把复杂问题简单化
5、屏蔽原始数据的(影响),屏蔽业务的影响
ETL操作
1、数据抽取
2、数据清洗
3、数据转换
4、数据加载
数据中台包含的内容很多,对应到具体工作中的话,它可以包含下面的这些内容:
系统架构:以Hadoop、Spark等组件为中心的架构体系
数据架构:顶层设计,主题域划分,分层设计,ODS-DW-ADS
数据建模:维度建模,业务过程-确定粒度-维度-事实表
数据管理:资产管理,元数据管理、质量管理、主数据管理、数据标准、数据安全管理
辅助系统:调度系统、ETL系统、监控系统
数据服务:数据门户、机器学习数据挖掘、数据查询、分析、报表系统、可视化系统、数据交换分享下载
1、贴源层(ODS, Operational Data Store)
数据引入层(ODS,Operational Data Store,又称数据基础层):将原始数据几乎无处理地存放在数据仓库系统中,结构上与源系统基本保持一致,是数据仓库的数据准备区。这一层的主要职责是将基础数据同步、存储。
数据实时离线
离线方面:每日定时任务型:跑批任务,业务库,比如我们典型的日计算任务,这里经常会使用 Sqoop 来抽取,比如我们每天定时抽取一次。每天凌晨算前一天的数据,早上起来看报表。这种任务经常使用 Hive、Spark 来计算,最终结果写入 Hive、Hbase、Mysql、Es 或者 Redis 中。
实时数据:日志埋点数据或者业务库,这部分主要是各种实时的系统使用,比如我们的实时推荐、实时用户画像,一般我们会用 Spark Streaming、Flink 来计算,最后会落入 Es、Hbase 或者 Redis 中。数据源是业务数据库,可以考虑用 Canal 监听 Mysql 的 Binlog,实时接入即可,然后也是收集到消息队列中,最终再由 Camus 拉取到 HDFS。
2)数据存储策略(增量、全量)
实际应用中,可以选择采用增量、全量存储或拉链存储的方式。
增量存储
为了满足历史数据分析需求,您可以在ODS层表中添加时间维度作为分区字段。以天为单位的增量存储,以业务日期作为分区,每个分区存放日增量的业务数据。
全量存储
以天为单位的全量存储,以业务日期作为分区,每个分区存放截止到业务日期为止的全量业务数据。
拉链存储
拉链存储通过新增两个时间戳字段(start_dt和end_dt),将所有以天为粒度的变更数据都记录下来,通常分区字段也是这两个时间戳字段。
2、数仓层(DW,data warehouse)
数据仓库层(DW)层:数据仓库层是我们在做数据仓库时要核心设计的一层,本层将从 ODS 层中获得的数据按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除对决策无用的数据,提供特定主题的简明视图。在DW层会保存BI系统中所有的历史数据,例如保存10年的数据。
DW存放明细事实数据、维表数据及公共指标汇总数据。
维度层(DIM,Dimension):以维度作为建模驱动,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。为了避免在维度模型中冗余关联维度的属性,基于雪花模型构建维度表。
明细数据层(DWD,Data Warehouse Detail):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细事实表。可将某些重要属性字段做适当冗余,也即宽表化处理。
汇总数据层(DWS,Data Warehouse Summary):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。以宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。
1)公共维度层(DIM,Dimension)
公共维度汇总层(DIM)主要由维度表(维表)构成。维度是逻辑概念,是衡量和观察业务的角度。维表是根据维度及其属性将数据平台上构建的表物理化的表,采用宽表设计的原则。因此,构建公共维度汇总层(DIM)首先需要定义维度。
DWD层做了哪些事?
①数据清洗过滤
②数据映射,转换
DWS层做了哪些事?
dws将dwd层的数据按主题进行汇总,按照主题放到一个表中
3、应用层(ADS)applicationData Service应用数据服务