数仓主流架构
数据仓库在不同企业,它的架构也会有所差异。但分层和基本功能上大同小异,可能命名上有所不同,或者根据企业的业务特点做了一定的定制。
现在国内主流的架构还是以阿里为参考,整体架构如图所示:
从图中色块的不同,也能大体看到架构整体上分为四部分:ETL、ODS、CDM、ADS。
按照数据流动的方向,从下而上依次进行讲解。
ETL
ETL 是数据同步模块,表示将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。
数据仓库因为要定期从业务数据库中同步数据,整个过程就是通过 ETL 来实现的。
ETL 一般会采用现成的工具,如 Sqoop、Kattle 等直接完成数据从数据库到数据仓库的加载工作。
有些企业除了需要收集业务数据库的数据,还会采集日志等文件数据,需要使用 Flume、Logstash 等工具,可能也会构建定制化的 ETL 系统。
对数据库数据的抽取,工作量较少,因为本身数据库中的数据就很规范。但对于非数据库中的数据,比如日志,数据较为杂乱,可能在抽取过程中要进行相当繁杂的数据清洗工作。
ODS(操作数据源层)
数据通过 ETL 流程抽取到数据仓库中后,会进入到 ODS 层。这一层与原始数据保持一致,不进行任何的修改,目的就是为了原始数据的保存。为业务数据库减负后,业务数据库会将历史数据删