实时数仓Hologres新功能介绍

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 产品新品发布会——丁烨(昆吾)阿里云产品专家

image.png

当前,越来越多的企业从实时数据分析中获得了更多的收益。根据 IDC 的报告,某头部股份制银行实时风控平台业务量数据量处理量庞大,业务渠道多达 20 余条各个渠道对于数据处理的实时性要求和数据复杂度指标要求极高,比如指标计算单点 TPS 要求 1 万以上,数据计算的集群吞吐量要求达 100 /秒以上平均时延要求在 100 毫秒以内。

基于以上数据处理需求,该行建立起一套统一高效的智能化交易风险管理架构,提升了集团网络金融业务的安全性。截 2018 9 月,该行智能风控平台监控的网络金融交易业务总笔数达到 11.5 亿笔,累计阻断各类高风险交易达到 36.8 万笔,为客户规避了 2.4 亿元的损失。

image.png

越来越多的大数据计算场景正在从规模化走向实时化。比如在各类直播大屏场景、城市大脑的交通检测场景、银行风控场景中,都逐步从过去的T+1 分析走向实时分析。

image.png

上图展示了常见的实时数仓应用场景,包括传统的 BI 报表实时大屏此类场景从过去基于离线数仓的 T+1 分析升级到实时的数据分析,供业务进行实时决策。同时实时数仓还能用人群运营,比如完成用户画像分析、人群圈选等场景。在推荐类场景下,还可以做智能化、个性化的推荐,甚至延伸到智能客服的场景。比如用户的问题经由 NLP分析生成向量,在实时数仓中查询得到近似的推进结果,以支撑智能客服的场景。实时数仓还能用实时监控的分析场景,比如做实时的订单分析、物流跟踪以及线上直播质量监控等。

image.png

阿里云根据大量用户案例总结了当前客户在实时数仓中典型的业务痛点,主要包括以下三个方面:

① 对于时效性、准确性、性价比有强烈的需求客户对于数据实时写入的要求极高,查询延时敏感,查询维度繁多,且维度并不固定,新增维度的频率极高,需要同时兼顾明细查询和聚合查询两种不同的负载。

② 由于手机应用、小程序等场景日益增多,客户对于半结构化数据的分析需求日益强烈,大量半结构化的日志数据转化为结构化的数据,清洗链路长。同时半结构化数据结构经常变更,结构化之后需要经常变更表结构,日志数据信息有限,需要动态补充满足个性化需求的变化。

③ 实时数仓上的业务需求实时任务变更频繁表结构和业务的频繁变更导致实时计算的任务需要频繁重启才能满足业务的需求。

image.png

根据以上痛点,阿里云推出了以下新功能,主要集中在数据写入、查询与分析以及企业级能力三个方面。

image.png

阿里云 Flink Hologres深度集成,助力企业快速构建一站式实时数仓。

首先,可以通过阿里云 Flink 实时写入 Hologres,实现高性能写入与更新数据写入即可见无延迟,满足实时数仓高性能低延迟的写入需求。其次可以通过阿里云 Flink 全量读取、Binlog读取、CDC读取、全增量一体化等多种方式读取 Hologres 源表中的数据,无需额外主键统一计算和存储,加速数据流转的效率。阿里云 Flink 读取Hologres维表,助力高性能维表关联数据打宽等多种应用场景。

阿里云 Flink Hologres元数据打通,通过 Hologres Catalog实现元数据自动发现,极大提升作业开发和正确性。

通过阿里云 Flink Hologres的实时数仓标准解决方案,能够支撑多种数仓应用,如实时推荐、实时风控等,满足企业的实时分析需求。

image.png

随着业务的迭代和发展,数据源的表结构变更频繁,用户需要及时修改数据同步作业,以适配最新的表结构,这也带来了高的运维成本,影响了同步管道的稳定性和数据的时效性。

阿里云 Flink Hologres 支持通过 Catalog 实现元数据的自动发现和管理。配置 CREATE TABLE AS 语法,用户可以通过一行 SQL 实现数据的同步和表结构的变更自动同步。CREATE TABLE AS语法会解析成 Flink 作业Flink 作业源头支持读取数据的变更和表结构的变更,并将变更同步到下游,且数据和表结构的变更都可保序

比如CREATE TABLE AS语句运行时,可以根据 MySQL 中的表结构变更和数据变更自动生成相应的 SQL 将元数据的变更以及数据的变更同步到Hologres中。整个过程无需启停任务和修改 Flink SQL

如上图所示,如果上游 MySQL 中的 user 表新增了一列 age 并且插入一条 ID 27年龄为 30 的记录user 表上的数据和表结构都能实时同步到下游的 Hologresuser 表中ID1216 19 的历史数据,新增的列都会自动补上NULL值。

image.png

第二个场景,在实时数仓构建中,用户经常需要将整个数据库同步到数仓中做进一步分析。每张表一次写同步任务的方式不但浪费资源,也会上游数据库产生较大压力。

针对类用户的痛点,阿里云提供了整库同步的特性整库同步通过 CREATE DATABASE AS 的语法配合 Catalog实现。比如图中的 MySQL Catalog Hologres Catalog 互相配合搭配 CDS 的语法,即可完成 MySQL Hologres的全增量数据同步。

CDS 的语句会解析成 Flink 任务来执行 Flink 作业,自动解析源表的表结构和相应的参数,并将指定的多个数据库同步到下游的Hologres数仓中过程中用户无需手写任何表的 DDL用户也无需Hologres中创建表,可快速实现数据的整库同步。

CDS 作业默认具有表结构变更的同步能力,所有表结构的同步变更都会按照顺序同步至下游 Hologres实时数仓中。 CDS 语法也支持过滤不同的需要同步的表上图,仅需两条 SQL即可将MySQL order_db 中的所有表同步到 Hologres

image.png

分库分表是高并发业务系统中采用的经典数据库设计也是实际业务中常见的一种架构。通常需要将分库分表的业务数据汇总到一张数仓中的大表,方便后续数据分析,即分库分表合并同步的场景。

针对以上这种场景,阿里云提供了分库分表同步的功能。通过在CTS语法中支持源库和源库的正则表达式,源库的分表可以高效合并同步到下游 Hologres 数仓中。如上图所示 SQL 中的源库名 order_db.*一个正则表达式,可以匹配当前 MySQL 实例下的 order_db01order_db02order_db03 个库。

针对分库分表的场景,用户只需提供分库分表的正则表达式,即可将分库分表合并同步到下游的 Hologres数仓中的 order 表中与其 CDS 语句一样,分库分表默认提供表结构变更自动同步的特性下游 Hologres表的 schema 为所有分表合并后的最宽 schema 分库。

分表同步时,每一行记录所属的库名和表名会作为两个额外的字段同步到 user 表中。库名、表名和原主键会一起作为下游 Hologres user 表中的联合主键,保证Hologres user 表上的逐渐唯一性。

image.png

数据写入的实时性是实时数仓的重要能力之一。对于 BI 等延迟不敏感的业务场景,写入延迟几秒甚至几分钟都是接受的。对于很多生产系统,比如实时风控、实时大屏等场景,要求数据写入即可见,如果写入出现延迟,严重影响线上的业务决策。

在实时数仓处理链路中,Hologres 作为一站式实时数仓,提供海量数据高性能的实时写入,数据写入即可查,无延迟。

数仓场景数据来源复杂,涉及到多种数据源的更新、修正场景。 Hologres可以通过主键提供高性能的 upsert能力,写入和更新过程保证exactly-once 语义,满足对数据的合并更新等需求。通过独特的FixedPlan 优化技术,在整个写入场景中有别传统数据库,写入过程无需经过优化器、协调器、查询引擎、存储引擎等多个主键数据直接写入,极大提升了写入和更新的吞吐量。

右下柱状图Hologres 128 CU实例10个并发写入 20 的列测试结果。其中数轴表示每次写入的记录数,横轴表示4个不同的写入场景,分别为:

l  Append Only:写入表无主键,写入能力230+RPS

l  INSERT:写入表有主键,如果主键冲突就丢弃新行,写入能力200RPS

l  UPDATE-1: 写入表有主键,表中原始数据量为2亿,按照主键Upsert,写入能力80万的RPS

l  UPDATE-2写入表有主键,表中数据量为20亿,按照主键做Upsert,写入能力70万的RPS

按照主键做 upsert写入能力 70 RPS可以发现,随着数据量增加, RPS 没有明显降低写入的吞吐量都处于极高水平。

image.png

Hologres具备基于共享存储的多实例高可用部署模式。在方案中,用户可以创建多个实例实例代表了不同的计算资源,但所有实例共享一份存储。其中一个实例作为主实例,支持数据的读写操作,其他实例作为只读从实例不同实例之间的数据内存储状态毫秒级实时同步物理上数据存储只有一份。

方案中,数据统一,权限配置统一。但是计算负载通过物理资源的分隔实现了百分百的计算资源隔离读写请求不会争抢资源,也体现了更好的故障隔离能力。主实例目前最多支持挂载四个子实例。如果是同一个 region 部署,则共享存储如果是不同的 region 部署,则数据需要复制多份存储

方案在大促场景下被多个核心业务反复验证,可靠性高。通常建议一个个主实例负责数据写入和加工,一个子实例负责内部 OLAP 经营分析另外一个子实例用于对外的数据服务,可以根据不同的场景、不同的算力需求分配不同的计算资源规格。

image.png

BinlogHologres特色新功能,它让 Hologres不再是数据的终点,也可以起点。 Hologres Binlog 类似传统数据库的 Binlog 支持对每次数据更新的详细记录,包括 insertdeletebefore updateafter update 四种事件类型。

通过 Binlog 可以驱动事件的实时加工有多种使用场景,包括数仓内分层的实时加工,通过 binlog 实现数据在各个层次之间的连续加工比如从 ODS DWD DWS最终到 ADS 支持数据在实例之间实时同步比如公共层实例到业务层实例进行实时的加工和同步,从Shared InstanceApplication Instance同时也可以用于数据的行列转换目前有了新的行列共存结构,场景需求略有减少;还可以用监控数据的变化,通过 Flink Hologres binglog 的组合关系,支持了有状态的全链路实时事件驱动的开发场景。

image.png

JSONHologres近期重点发力领域,因为数据采集越来越灵活,数据加工也越来越敏捷。过去需要打宽的JSON数据往往保留了原始的不规范结构,如何处理这种 schemaless的场景尤为重要。

传统 JSON作为数据格式,提供了存储的灵活性,但是限制了分析的效率。为了访问 JSON中部分节点,往往不得不读取 JSON整个数据结构效率非常低下,存储也难以压缩。 Hologres 创新了 JSON数据的存储方式,采用类似列存的存储格式,将JSON中不同的路径映射为虚拟的列提供原生的存压缩索引能力。

在查询层自动下推 JSON访问算子,极大加速了 JSON数据过滤统计的效率。在协议层完全兼容了PostgreSQL的规范,支持了 JSONJSONB 等数据类型,支持 PostgreSQL 原生的各种改造访问可以认为 JSONHologres推荐的数据类型,适用于日志分析的场景。

image.png

JSON列式存储指使用列式存储 JSON 的数据,由于列存的压缩效率更高,可以有效提高数据的存储效率,节省存储空间。

常见场景比如某视频网站的厂商希望查询男性用户的数量和平均年龄,数据按照上图左边的 JSON 类型去进行存储,以此对应的 SQL 如图所示。此时需要查询结果时,需要扫描并读取所有 JSON 数据,再做汇总,才能得到最终的结果。但是如果使用了列式存储,整个数据存储结构如图所示。按照列讲 Key value 的数值展开,然后使用列存的方式进行存储压缩。此时如果需要查询男性用户的用户数量和平均年龄,只需要扫描两列数据,可以明显的提升查询效率。

image.png

新版本支持了实时物化视图。物化视图是一个通用的概念,一般数据库需要定期刷新物化视图,存在一定的数据滞后性。而 Hologres的物化视图无需手动刷新数据在写入时即进行预计算,记录视图。

简单的业务场景,比如某客户有 100 多家门店,需要实时查看各家门店的营收情况,以便实时调整经营策略。用户明细如,其中存储了订单的明细数据,有订单号、客户号、门店 ID订单日期、订单金额等。创建物化视图后,在数据写入明细表后,Hologres会进行实时物化。用户写 SQL 时,系统可自动改写 SQL 直接查询物化视图,以提升整体的查询性能。

image.png

除了以上能力以外,我们还提供了更多企业级安全能力,比如数据加密和脱敏不仅包括 Hologres 自身的数据落盘加密能力,还可直接加速 max compute 中的加密数据同时也提供了数据脱敏能力,并完成与数据保护伞的对接。设置脱敏规则上可以使用数据保护伞一体化的设置Hologres max compute 的脱敏规则。其次在访问控制上提供了 IP 白名单、定向 VPC 访问和行为审计的能力。容灾备份上,提供了同城容灾、异地容灾以及多版本备份恢复控制的能力。

image.png

以某知名全球 top 20 的游戏公司业务为例,通过阿里云 Flink+Hologres实时数仓方案,替换开源的 Flink+Presto+HBase+ClickHouse 架构极大简化了数据处理链路,统一数据数仓架构,统一存储查询性能得到 100% 甚至更多的提升完美支撑了数据分析业务广告投放、实时决策等多个场景,助力业务快速增长。

客户原有数仓全套使用开源架构架构图如图所示。其中开源 Flink ETL 处理,处理后写入 ClickhouseStarRocks 等多种OLAP引擎中。架构主要存在痛点如下几个痛点:

第一,ETL链路复杂。为了解决数据实时ETL 客户通过 Flink CDC +Hudi做流批一体。但由于上游业务数据经常变更表结构,且开源的 Flink schema evolution 每次表结构变更都需要重新启动任务,操作繁索,浪费大量的开发时间。同时,Hudi的查询性能无法满足业务需求,还需使用 Presto做查询加速,造成链路冗余。

第二,OLAP架构冗余,查询慢,用户主要靠买量发行作为游戏推广的重要手段。为了解决广告归因的实时决策场景对于查询加速的需求,部署了开源的 Presto+Clickhouse+HBase 等多套集群搭建混合的OLAP平台带来许多问题

(1) 平台需要维护多套集群,导致运维变得非常复杂

(2) 开发需要在各种 SQL 切换,比如 ClickHouse SQL PrestoSQL以及Phoenix SQL等,为开发团队带来了诸多困扰和更高的学习门槛使用成本。

(3) 由于 ClickHouse 缺乏主键,在归因分析中使用 Last Click 模型带来了大量额外工作。

(4) OLAP引擎的查询性能无法很好满足业务需求,无法根据数据进行实时决策

(5) 数据需要在多个 OLAP 系统中存储,造成存储冗余,导致成本压力剧增。

image.png

基于以上痛点,客户决定重新进行技术选型,使用阿里云的 Flink+ Hologres来替换现有的开源架构。通过阿里云 Flink+Hologres替换后的数据链路如下

数据通过 Flink CDC 写入 Kafka 做前置清洗,清洗后通过 Flink 进行 ETL 操作,Flink ETL 后的数据实时写入 Hologres通过 Hologres替换了Kafka作为数仓的中间数据层,统一了批存储Hologres根据 ODSDWDDWS 层汇总加工 ODS Flink订阅 Hologres Binlog计算写入 Hologres DWD 层, DWD层的 Hologres进行汇总成为 DWS最后DWS 对接上层的报表和数据服务等业务。

为了存储统一,将原有的离线 Hive 数据替换阿里云的 max compute max compute 作为离线的主要链路。得益于Hologres max compute 高效的互通互访能力,Hologres 通过外表离线加速查询 max computer 数据,并将历史数据定期归档到 max compute 中。

架构升级后,客户业务得到了显著收益依托阿里云 Flink+Hologres数据可以实时写入 Hologres写入即可见,并且 Hologres 有主键能够支撑高性能的写入更新能力,提供了百万级更新毫秒级延迟。阿里云 Flink 提供 schema evolution 的能力,能够自动感知上游表结构变更并同步到Hologres 中。改造后的实时 ETL 链路通过 Binlog 日志完成,降低整个链路的维护成本。

Hologres相比开源的 ClickHouse 能够达到秒级延迟,性能提高100%甚至更多 join 的查询性能相比原有的链路 10 倍以上提升。通过 Hologres提供了统一的数据查询出口,升级后数仓架构变得更加灵活简洁统一。存储只需要一套系统即可以满足业务的需求,降低运维压力和维护成本。好的,谢谢各位,今天分享到此为止。

相关实践学习
基于Hologres+PAI+计算巢,5分钟搭建企业级AI问答知识库
本场景采用阿里云人工智能平台PAI、Hologres向量计算和计算巢,搭建企业级AI问答知识库。通过本教程的操作,5分钟即可拉起大模型(PAI)、向量计算(Hologres)与WebUI资源,可直接进行对话问答。
相关文章
|
2月前
|
存储 监控 物联网
Doris实时数仓
Doris实时数仓
81 11
|
3月前
|
存储 运维 监控
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
通过对各个业务线实时需求的调研了解到,当前实时数据处理场景是各个业务线基于Java服务独自处理的。各个业务线实时能力不能复用且存在计算资源的扩展性问题,而且实时处理的时效已不能满足业务需求。鉴于当前大数据团队数据架构主要解决离线场景,无法承接更多实时业务,因此我们需要重新设计整合,从架构合理性,复用性以及开发运维成本出发,建设一套通用的大数据实时数仓链路。本次实时数仓建设将以游戏运营业务为典型场景进行方案设计,综合业务时效性、资源成本和数仓开发运维成本等考虑,我们最终决定基于Flink + Hudi + Hologres来构建阿里云云原生实时湖仓,并在此文中探讨实时数据架构的具体落地实践。
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
|
4月前
|
SQL 关系型数据库 MySQL
基于 Flink CDC 打造企业级实时数据集成方案
基于 Flink CDC 打造企业级实时数据集成方案
|
4月前
|
存储 消息中间件 Kafka
流式湖仓增强,Hologres + Flink 构建企业级实时数仓
2023 年 12 月,由阿里云主办的实时计算闭门会在北京举行,阿里云实时数仓 Hologres 研发负责人姜伟华现场分享 Hologres+Flink 构建的企业级实时数仓,实现全链路的数据实时计算、实时写入、实时更新、实时查询。
120792 107
流式湖仓增强,Hologres + Flink 构建企业级实时数仓
|
9月前
|
SQL 关系型数据库 MySQL
基于阿里云 Flink+Hologres 搭建实时数仓
本文为您介绍如何通过实时计算 Flink 版和实时数仓 Hologres 搭建实时数仓。
2114 0
基于阿里云 Flink+Hologres 搭建实时数仓
|
4月前
|
存储 消息中间件 Kafka
实时湖仓增强,Hologres + Flink构建企业级实时数仓
本文主要介绍Hologres+Flink构建的企业级实时数仓,实现全链路的数据实时计算、实时写入、实时更新、实时查询。
|
11月前
|
存储 SQL 分布式计算
MaxCompute湖仓一体近实时增量处理技术架构揭秘
本文将介绍阿里云云原生大数据计算服务MaxCompute湖仓一体近实时增量处理技术架构的核心设计和应用场景。
9682 6
|
12月前
《阿里云产品手册2022-2023 版》——实时数仓Hologres
《阿里云产品手册2022-2023 版》——实时数仓Hologres
119 0
|
存储 分布式计算 OLAP
Flink+Hologres实时数仓在Lazada的建设及应用
本文介绍Flink+Hologres实时数仓在Lazada的建设及应用。
848 1
Flink+Hologres实时数仓在Lazada的建设及应用
|
消息中间件 存储 SQL
阿里云Flink x Hologres:构建企业级一站式实时数仓
阿里云Flink x Hologres:构建企业级一站式实时数仓
3352 0
阿里云Flink x Hologres:构建企业级一站式实时数仓