数据仓库架构

这节来说说数据仓库的架构,关于架构并没有一个统一的标准,按照数据量以及使用环境可以搭建适合当下场景的数据仓库,下面主要是介绍比较大众或者说比较通用的数据仓库架构。传统的数据仓库架构按层级可分为 ETL、ODS、DWD、DWS 和 ADS 五个层级,层次结构如下图所示。

数据仓库架构_第1张图片
这五个层级针对不同的需求解决各阶段各自的问题,在数据量少的情况下个别层次可以继续简化,也可以在层次之间增加数据中间件,让整个过程更加规范化,对于层级结构没必要细究,重点是每个层级所解决的问题以及在整个链路所处的位置。

ETL

ETL(Extract Transform Load)是抽取、转换、加载三个过程的缩写,目的是将数据从业务、文件或其他数据源抽取出来,经过简单转换后加载到数据仓库系统中。这个过程中有两个重点,从哪里抽取以及抽取方式。

抽取的数据源可以是结构化数据、非结构化数据和半结构化数据,这其中结构化数据一般来源自 MySQL、Oracle 等数据库,需要考虑的问题是通过 JDBC 还是数据库日志进行抽取,通过 JDBC 则会对数据库产生额外的开销,跟业务数据库抢资源,数据量不大的情况下也选择在半夜进行,若是数据量大可以通过数据库日志进行同步更新,不会对数据库产生额外开销,而且效率会快不少。非结构化或者半结构化就要简单一些了,无非是在转换的时候需要下点功夫解析数据。

抽取方式的话分为全量抽取和增量抽取,全量一般发生在第一次将数据加载到数据仓库中的时候,全量查询即可,增量则是会对业务数据库中有更新的数据抽取出来更新到数据仓库中,可以监控数据库日志对数据仓库进行操作。

数据运营层(ODS)

ODS(Operation Data Store)数据准备区,数据仓库会将业务数据或者日志数据原封不动的存储一份,一般通过增加字段进行处理管理,是后续数据仓库加工的来源。这一层及的重点是保证数据的完整性和实效性。

在离线数仓中,业务数据定期通过 ETL 加载进 ODS 中,导入方式有全量和增量两种,全量是数据第一次导入时选择的方式,增量则是非第一次导入,只需导入新增和更改的数据,建议使用外连接&全覆盖的方式(将新增、更新的数据与数据仓库中的数据进行外连接,在内存中修改数据仓库中需要更新的数据再导入数据仓库中,将原先的数据全部覆盖)。

数据仓库层(DW)

DW(Data Warehouse)数据分层从下往上分为 DWD 和 DWS

  • DWD(Data Warehouse Details):数据明细层,是数据仓库与业务层的隔离层,主要对 ODS 做一些数据清洗和规范化操作
  • DWS(Data Warehouse Service):数据服务层,基于 DWD 上的数据,按主题整合汇总数据,就是做宽表,用于后续业务查询支持,OLAP 分析等

数据应用层(ADS)

ADS(Application Data Service)应用服务层,该层级主要存储数据产品和数据分析需要的数据,一般注重查询速度,所以需要将数据存储到指定的 ADS 应用或是 MySQL 数据库,或者存到 ES 以供前端搜索查询使用。

数据仓库的架构如此,但并不代表每个层级就得使用一个工具,例如 Hive 就包揽了好几个层级,ETL层级也可能包含多个工具。在数据仓库的搭建环节,重点是做好仓库的架构以及数据在每个层级的产出是什么状态的,接下来是每个层级内部实行操作的细节,最后才是利用什么工具,耗费多少资源,切莫本末倒置,工具学得再好没有理论的支持也不知道在什么场合下使用。

你可能感兴趣的:(数据仓库,mysql,数据仓库)