谈谈数仓etl系统建设


一、前言

其中,ETL任务完成了数据加载、卸载、各层数据模型间的数据流、业务规则的实现等数据处理过程。建立数仓ETL子系统是数据仓库系统实施过程中十分重要的一环。建立一个完整的ETL子系统,是建立仓库平台的基本目标之一,是建立仓库平台的基础。

ETL是扩展(数据提取)、传输(数据转换)和数据加载(Loading)三种数据处理行为的缩写,也就是建立早期数据仓库的数据流处理次序,所以形成的特殊术语至今仍在使用。但是,随着数据库引擎作为数据仓库的核心技术的不断发展,ETL模式也在不断发展变化,逐步形成了E-L-T、E-T-L-T等多种形式。MPPDB以GaussDBDWS为代表,采用ELT或ETLT方式构建了ETL子系统。

二、ETL子系统逻辑参考体系结构

构建ETL子系统,以集成企业分散、分散、标准不统一的异构数据源业务数据,进行必要的清理和转换,形成高质量、统一的数据模型,以便于用户查询、分析、研究。

数仓etl,数据仓库,子系统

2.1数据提取(扩展)

从数据仓库上游系统(通常是核心系统、商业系统或外部系统)获取全量或增量数据的过程。由于企业内部信息底层体系结构的完善和数据平台功能的划分,不同的平台之间往往采用松耦合的方式。传统的中下游系统直接从上游系统抽取数据,已不符合目前技术的发展趋势。另一方面,下游系统直接从上游系统中抽取数据,对权限进行公开管理,增加了上游系统的数据安全风险。另外,数据提取操作也应该在业务系统正常运行之后的时间窗内进行,以避免数据提取过程中对正常运行过程的资源竞争。所以,数据提取的操作一般由上下游系统协商,上游系统根据接口规范卸载数据。或对较成熟的企业,建立统一的数据交换平台,实现企业内部统一数据提取/卸载。

对数据仓库平台而言,数据提取更多的是形成统一的接口规范。

2.2数据转化(Transform)

一般而言,数据转换包括数据清洗、数据关联处理、数据标准化处理、数据汇总聚合等操作。MPPDB数据库中的数据转换操作主要基于业务规则和数据模型,其实现效率要比ETL服务器高。这一转换操作通过SQL实现数据库T过程,比ETL工具实现T过程更规范、更开放,更适合于企业参与T过程的开发与验证。

2.3数据装载(Loading)

对数据仓库而言,不仅仅是数据的装载,更重要的是数据卸载,即存储与未装载过程。这种情况下,数据到达高峰时装载并存储了大量文件。在库中数据处理完毕,及时卸载数据,形成界面文件推送下游系统。对数仓ETL系统来说,最大的挑战之一就是对数据量的有效加载和卸载操作。由于用户对实时数据仓库的需求日益广泛,在构建ETL系统时,数据库与消息队列、数据流组件间的实时数据加载与卸载技术成为ETL系统建设的又一挑战。

三、ETL子系统的两个实现体系结构

ETL系统依赖于GaussDB(DWS)数据库rver方案和MPPDB方案。

如下图:

数仓etl,数据仓库,子系统

在图2中有两个架构。

3.1重ETLServer程序

在Informatica、DataStage、Kettle等专业ETL软件的帮助下,利用分布式/基于共享存储技术的ETL服务器集群部署ETL软件。当ETL任务执行时,从MPPDB读取数据,ETL服务器完成数据处理过程,再将处理结果发送给数据库服务器,其中的一部分可以通过SQLPushdown实现。

其特点是将图形操作与脚本操作相结合,实现了ETL开发部署过程中的全流程操作。ETL过程基于工具流程的开发,还可以基于元数据进行血缘分析和影响分析;ETL工具在操作自动调度和调度上的能力比专业的调度软件差。

ETL开发流程基于ETL工具方案,需要专业的开发者,对ETL工具本身有深刻的理解。对此,过高的专业工具门槛不利于企业内部业务专家和分析人员介入ETL开发流程。同时ETL中软、硬件的投入成本也是值得考虑的。

3.2MPPDB方案

在这种情况下,ETL服务器比较轻便,生产环境通常提供主服务器来避免单点故障。其主要特征是:

通过MPPDB并行处理引擎,大量的数据ETL处理效率得到提高。

ETL过程的SQL模板,快速的开发和迭代过程的费用低廉;

ETL处理逻辑通常与业务规则紧密相关,SQL标准对于业务人员的门槛较低。

使用工具封装解耦第三方ETL服务器,避免了对ETL工具的过分依赖;

ETL脚本模板需要自定义包装开发,为操作、优化、数据处理等过程提供基础数据。

3.3简略的对比

重新设计ETLServer程序适合在基于文件的数据清理ETL中工作:字符集的转换处理;根据接口规格说明预处理接口数据(判断文件大小)数据质量检查,如记录行数等信息和属性;文件分组、分割、压缩、解压等;还有文件监测与传输功能。

MPPDB方案实际上是一种基于SQL的实现方案,适合数据标准化处理:例如业务编码转换、业务逻辑主键生成、符合业务标准的数据转换处理;数据转换处理:汇总、聚合、筛选、关联、分割、转换等等。

四、GaussDB(DWS)ETL系统的实施要点

就GaussDB(DWS)而言,多数情况下推荐使用MPPDB方案。该方案实际需要实现ETLSQL模块封装,ETL开发流程和外部ETL调度系统相结合,对ETL进行分层处理。SQL实现业务的模块通过模板实现并调度软件与操作系统的接口封装,将SQL实现业务的模块包装到GSQL工具中,使业务人员和开发人员可以将重点放在业务实现本身上,而与外部环境无关。

4.1ETL基于MPPDB的环境逻辑视图

数仓etl,数据仓库,子系统

  • ETL调度

ETL操作系统是数据仓库平台后台进行非交互操作的批量数据处理系统。ETL作业计划是自动化数据仓库系统中各种后台作业,对作业进行监控和控制。利用调度软件完成作业计划。动作可以分布在多个服务器平台上,可以设置操作定义、依赖关系、工作组关系等,便于操作的自动调度、操作和管理。

调度监督平台采用图形方式对运行进行动态监控,并在运行过程中对错误/警告进行详细说明。

  • ETL脚本封装

GSQL是一种执行SQL的工具,但是它和调度软件结合在一起存在着一些功能缺陷,如参数分析、日志分析、异常处理等,因此需要对GSQL进行必要的封装,以提高与调度软件的一致性。

  • gsql模板

提取工艺过程,形成算法模板。

为随后的优化跟踪,指定必要的输入参数,设置会话启动的公共参数,并进行埋设。

  • 调用形式

Dispatch工具->Python或其他脚本工具模板->GSQL->{.gsql}