本手册将分为三部分发布,以帮助读者逐步深入理解数据仓库的设计与实践。
- 第一部分介绍数据仓库的整体架构概述;
- 第二部分深入讨论ETL在数仓中的应用理论,ODS层的具体实现与应用;
- 第三部分将围绕DW数据仓库层、ADS层和数据仓库的整体趋势展开;
通过这样的结构,您可以系统地学习每一层次的内容和设计原则。
前情提要:《新兴数据仓库设计与实践手册:从分层架构到实际应用(一)》https://mp.weixin.qq.com/s/_iYSM0sT_NOysducbxEJhg
数仓分层下的ETL
在不同数据层次、以及源系统到数据仓库之间的ETL(Extraction、Transformation、Loading)是数据仓库建设的核心,负责将分散在不同源系统的异构数据抽取到临时中间层,经过清洗、转换、集成后加载至数据仓库或数据集市。
通常,ETL规则的设计和执行在数据仓库实施中占据了60%到80%的工作量。而随着数据量的增加和非结构化数据和实时处理需求的增加,ETL架构也逐步被淘汰演变为EtLT架构 参见文章:《ELT已死,EtLT才是现代数据处理架构的终点!》 以更好地适应多样化的数据源和实时场景。
数据抽取(Extraction)
数据抽取负责将原始数据从各源系统中获取。传统的抽取方式包括初始化加载与定期刷新。初始化加载用于建立维表和事实表,将初始数据导入到数据仓库中;数据刷新则负责在源数据变动时追加或更新数据仓库内容。常见的刷新方式有定时任务和触发器。
在处理非结构化数据(如API接口数据、XML文件)和Binlog数据时,抽取步骤会更加复杂。
比如,需要通过交互接口(如HTTP API、SaaS API
)获取非结构化数据,并对数据库的变更日志(Binlog
)进行解析(如Oracle CDC、AWS RDS CDC、MongoDB CDC
)。
这些数据在抽取后,通常需转换为仓库兼容的内存格式,以便后续的处理和集成,例如,将多种源数据统一转为WhaleTunnel/SeaTunnel
格式供处理引擎使用。