数据仓库【2】:架构
- 1、架构图
- 2、ETL流程
- 2.1、ETL -- Extract-Transform-Load
- 2.1.1、数据抽取(Extraction)
- 2.1.2、数据转换(Transformation)
- 2.1.3、数据加载( Loading )
- 2.2、ETL工具
- 2.2.1、结构化数据ETL工具
- 2.2.1、非|半结构化数据ETL工具
- 3、数据积存
- 3.1、操作数据层(ODS)
- 4、数据分析
- 4.1、数据明细层(DWD)
- 4.2、数据汇总层(DWS)
- 4.3、数据应用层(ADS)
1、架构图
2、ETL流程
2.1、ETL – Extract-Transform-Load
- 将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程
- 构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先
定义好的数据仓库模型,将数据加载到数据仓库中去 - ETL 规则的设计和实施约占整个数据仓库搭建工作量的 60%~80%
2.1.1、数据抽取(Extraction)
- 抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据
- 结构化数据一般采用JDBC、数据库日志方式,非|半结构化数据会监听文件变动
抽取方式- 数据抽取方式有全量同步、增量同步两种方式
- 全量同步会将全部数据进行抽取,一般用于初始化数据装载
- 增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据更新
2.1.2、数据转换(Transformation)
- 数据转换要经历数据清洗和转换两个阶段
- 数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
- 数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换
- 结构化数据在转换过程中的逻辑较为简单,非 | 半结构化数据的转换会较为复杂
2.1.3、数据加载( Loading )
- 将最后处理完的数据导入到对应的目标源里
2.2、ETL工具
2.2.1、结构化数据ETL工具
- Sqoop
- Kettle
- Datastage
- Informatica
- Kafka
2.2.1、非|半结构化数据ETL工具
- Flume
- Logstash
3、数据积存
3.1、操作数据层(ODS)
-
数据与原业务数据保持一致,可以增加字段用来进行数据管理
-
存储的历史数据是只读的,提供业务系统查询使用
-
业务系统对历史数据完成修改后,将update_type字段更新为UPDATE,追加回ODS中
-
在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种
- 全量导入:数据第一次导入时,选择此种方式
- 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式
4、数据分析
4.1、数据明细层(DWD)
- 数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域)
- 数据仍然满足3NF模型,为分析运算做准备
4.2、数据汇总层(DWS)
- 数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
- 存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型
4.3、数据应用层(ADS)
- 数据应用层也被称为数据集市
- 存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担
- 数据仓库擅长数据分析,直接开放业务查询接口,会加重其负担
- 数据仓库擅长数据分析,直接开放业务查询接口,会加重其负担