实时数仓概述

本文为您介绍关于业务处理从传统数仓到实时数仓的技术框架转变,以及实时数仓的核心优势等,为您在数仓的选择方面提供良好的参考。

背景信息

随着信息技术的发展和互联网的普及,企业越来越看重业务的时效性。特别是在数据分析领域,企业对数据的时效性要求也越来越高。在数仓领域,大量的业务开始从传统批量处理的离线模式,转向基于增量流式的实时处理模式。所以实时数仓的建设,成为当前很多数据分析业务的一项重要任务。

实时数仓搭建的主要痛点如下:

  • 传统离线模式下,实时数仓存在两套架构,代码难以复用,开发和运维成本高。

  • 在数仓内批量处理数据,调度方式复杂,通常需搭配调度系统来实现调度。此外由于批处理模式往往需要对全量数据做处理,因此实现数据实时性的性价比较低。

  • 单纯流计算场景对复杂的业务实现支持有限。例如,与较大的离线维度表关联、表的多层嵌套、历史数据的回溯等。

  • 由于大部分业务实现需要多系统关联并搭建环境提取数据等,往往导致后期运维复杂。当出现问题时,不仅需要排查的组件多,而且需要对多种新知识进行学习和深度理解,才能找到根本原因。这样导致排查问题成本较高。

云原生数据仓库 AnalyticDB PostgreSQL 版基于实时物化视图搭建流批一体的一站式实时数仓解决方案,可以很好消除以上痛点,实现一份数据、一次写入、一套系统,即可在数仓内完成实时数据源从导入到实时分析全流程。

技术架构说明

实时数仓的搭建通常包含数据实时写入、实时处理、实时分析三个步骤。在数据量较小、业务较简单的情况下,例如统计累计订单总数,该流程比较简单,采用流处理引擎即可实现。但当存在数据规模较大、数据格式不规范、计算逻辑复杂、下游对中间表的依赖度高等情况时,需要参考数据仓库分层架构设计即ODS、DWD、DWS、ADS。云原生数据仓库 AnalyticDB PostgreSQL 版基于实时物化视图可以完美地融合离线数仓的分层架构,实现实时数仓,满足数据的时效性要求。

通用的业务流程为:首先,将多源数据(实时、离线)并行实时且高性能地写入实时数仓。其次,在仓内使用实时物化视图对数据进行增量实时处理和加工,完成字段清洗转换、JOIN加维、多维度GROUP BY聚合、多链路UNION ALL汇总等数据处理,按照实际需求生成基于实时物化视图的ETL实时处理数据结果集。最后,支持在实时物化视图上进行数据分析,例如实时AD-HOC查询,报表展示,实时看板,实时大盘等业务分析。

  1. 实时写入。支持丰富的数据格式和完备的事务处理,高性能、低延迟。写入立即可见。

  2. 实时处理。基于实时物化视图,实时数仓增量流式地对数据进行实时ETL处理。相较于普通(非实时)物化视图,实时物化视图无需手动调用刷新命令,即可实现数据更新时自动增量地刷新物化视图。当基础表的数据发生变化时,由基础表生成的实时物化视图将进行自动增量更新。此外,在实时物化视图基础上再构建实时物化视图,相关级联的实时物化视图也会随着基础表数据变化而自动更新。基于此特性可以方便地构建分析数据的实时ETL处理链路。

  3. 实时分析。基于SIMD指令集的向量化执行引擎、CBO的查询优化器、列式的存储引擎,实现高效实时数据分析。

image

核心优势

架构简洁且成本优势明显

云原生数据仓库 AnalyticDB PostgreSQL 版支持完整的数据实时写入、实时处理和实时分析,只需维护一套数仓系统即可一站式的构建实时数仓全流程。此外,云原生数据仓库 AnalyticDB PostgreSQL 版一站式实时数仓的开发和数据流转都在仓内完成,无需多套系统间流转。系统购买和搭建成本低,且依赖的组件少,稳定性好,运维简单。优势如下:

  • 成本低。仅存储一份数据,数据一次写入,部署一套系统,整体资源成本最优。

  • 开发流程简单。通常一套SQL开发即可,无需多系统适配关联等。

  • 性能高。简洁的链路流转及增量的数据处理模式,占用资源少,且数据延迟低。

  • 便于运维。只需维护一套系统。数据异常排查和订正容易完成。

免调度ETL链实时数据处理

通过构建基于实时物化视图的ETL处理链,可以在数仓中处理链路的依赖关系。只需将数据一次写入到数仓中的基础表,相关的实时物化视图会自动处理数据的依赖关系,实现增量数据的实时更新。使用云原生数据仓库 AnalyticDB PostgreSQL 版数仓中的实时物化视图链,无需额外运维其他的调度系统,即可实现ETL的实时数据处理,节省实时数仓的搭建和维护成本。

支持复杂SQL的实时处理任务

实时数仓搭建过程中的一大难点就是将原有的批量处理的复杂任务,转化为实时处理任务。通常批量处理任务可以用复杂的SQL语句轻松实现,包括多重嵌套或多表JOIN等复杂SQL,而流式处理对SQL的语句的使用限制较多。

云原生数据仓库 AnalyticDB PostgreSQL 版的实时物化视图技术实现是基于传统数仓的,所以对复杂SQL的支持方面有一定的优势。基于实时物化视图的数仓可以轻松支持数十张表的复杂关联,且没有计算窗口限制。相比流计算引擎,复杂批量处理任务转化为实时处理任务的改造成本更小。甚至在实际应用中,相当一部分原有批量处理任务可以直接通过实时物化视图转为实时化任务处理。

无数据窗口限制

实时物化视图技术原理上是基于数据库引擎的,数据库引擎通常都是面向磁盘存储设计的。相比于基于内存设计的流计算引擎,实时物化视图可以更好地实现大表的实时JOIN,尤其是数据量超大的表进行复杂的实时JOIN。此外,实时物化视图支持任意历史数据的回溯,不受窗口限制。对于历史数据的订正和回溯,使用实时物化视图十分便捷。只需对原始数据做更新即可自动反映到实时链路中。在实际场景中,云原生数据仓库 AnalyticDB PostgreSQL 版的实时物化视图支持数十张表JOIN,实现秒级延时的无窗口限制的实时增量更新。

轻松支持流批一体

基于实时物化视图构建的实时处理链路,仅需一份SQL脚本,即可同时支持流式和批量数据处理。在实时物化视图首次创建时,是基于批量处理的方式执行SQL,完成全量结果集的计算,之后在实时写入的过程中增量地流式维护SQL的结果集。此外,实时物化视图支持针对只有部分数据需要实时更新,其余数据只需定时更新的场景。可以设置定时更新的表不参与实时更新,在需要的时候,通过Refresh的方式,批量刷新定时更新的结果集。下图为流批一体的流程图。

image

兼容Zero-ETL功能

云原生数据仓库 AnalyticDB PostgreSQL 版兼容无感集成(Zero-ETL)功能。只需购买云原生数据仓库 AnalyticDB PostgreSQL 版数仓,即可实现数据实时并行入仓,实时ETL处理,及实时AD-HOC查询和数据分析等。