掘金 人工智能 07月16日 10:24
跨国数仓迁移背后的统一存储格式创新-Append Delta Table
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了东南亚头部科技集团GoTerra将数据仓库从BigQuery迁移至阿里云MaxCompute的复杂过程,重点介绍了MaxCompute在底层存储格式上的技术创新。面对全球化、本地化和PB级数据处理的挑战,MaxCompute推出了Append DeltaTable,这是一种统一的存储格式,集成了多种数据能力,降低了用户的使用门槛,提高了数据处理的实时性和智能化水平。通过动态Bucket分配、增量Reclustering等技术,Append DeltaTable显著提升了性能,并成功支持了GoTerra的PB级数据迁移。

💡 **存储格式统一化:** Append DeltaTable整合了MaxCompute原有多种表类型的优势,实现了统一的底层存储格式,支持动态Cluster分桶、ACID事务、数据append、流式写入、Timetravel等多种数据能力,简化了用户的数据管理。

⚙️ **动态Bucket分配:** 针对传统Bucket配置的局限性,Append DeltaTable支持动态Bucket分配,系统根据数据量自动创建Bucket,解决了大规模数据迁移和业务快速变化带来的Bucket数量配置问题,降低了用户的使用门槛。

🔄 **增量Reclustering:** 引入增量Reclustering技术,允许数据以流式方式写入,并在后台异步进行Clustering操作,实现了数据导入性能、数据实时性与查询性能的平衡,特别适用于ODS层的数据处理。

🚀 **性能优化与自治:** 通过Merge、Compaction、Reclustering等后台任务,Append DeltaTable实现了存储效率与查询性能的动态平衡,支持从TB到EB级数据的无缝扩展,并提升了数据处理的实时性。

✅ **实践成果与未来展望:** Append DeltaTable成功支撑了GoTerra的PB级数据迁移,并为未来与MaxCompute原生实时计算组件的深度集成以及多模态数据存储奠定了基础,推动了云原生数据平台在规模化、实时化、智能化方向的演进。

本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解BigQuery迁移至MaxCompute过程中的关键挑战与技术创新。本篇为第一篇,跨国数仓迁移背后MaxCompute的统一存储格式创新。

注:客户背景为东南亚头部科技集团,文中用GoTerra表示

背景

当东南亚头部科技集团GoTerra决定将其集团数据仓库从BigQuery迁移至阿里云MaxCompute时,这一决策背后折射出更深层的考量:全球化业务的区域合规性需求、亚太市场本地化部署的成本优化目标,以及对PB级数据处理能力的极致追求。

而BigQuery作为全球领先的云数据仓库产品,凭借其Serverless架构、弹性扩展能力与高并发处理性能,长期被视为全球范围内企业构建大规模分析型云数据仓库架构的标杆。其核心优势体现在:

此次迁移属于非常复杂的跨国异构技术迁移,而是面临多重技术突破与业务挑战:

本文将从底层存储格式差异与重构的技术角度,深入解析GoTerra在历时9个月的复杂迁移过程中,MaxCompute在底层存储格式上做出的一系列技术演进与创新改造。

动机源于用户场景痛点

BigQuery作为国际上先进的数据仓库服务商,依赖Google自身深厚的技术积累,以及长期以来客户场景的不断打磨,向用户提供了一套全面、灵活、免运维、高性能的数据仓库服务。特别值得注意的是,在同一套底层数据存储格式的基础上,BigQuery向用户提供了包括数据流式写入、ACID 事务、索引、Timetravel、Auto Clustering在内的多种底层存储数据管理能力。其支持用户根据实际业务需求来任意组合数据架构,极大降低了用户使用门槛,让用户在不需要理解底层存储原理的前提下就可便捷的应用数仓的各种数据功能。

相比之下,MaxCompute在过去的技术路线中提供了其中包括Standard Table标准表,Range/Hash Cluster Table,Transactional Table, Delta Table在内的4种不同的表类型,以满足多样的用户需求场景。然而多样化的表类型大大抬升了用户的使用门槛,用户需要深入每一种表类型各自的功能与限制,同时每一种表类型都有着自身较大的使用限制、表的能力没有办法随着用户场景的变化做动态适配,用户总是需要针对新的场景创建新类型表,学习、维护成本高。例如

在GoTerra技术迁移的项目过程中,我们面临巨大的技术挑战,由于GoTerra集团自身业务的复杂性高。用户本身在BigQuery中使用到的表数量非常大,不同的互联网业务场景,数据的实时/批量写入、数据消费方式截然不同,对性能的要求也存在巨大差异,但客户有期望提供统一的表格式能够同时支持以上四种不同表所拥有的优势与特性。用户能够使用同一种表类型完成了对所有业务场景的支持。但是在MC当前的产品形态下,用户一方面需要对MC的各种表类型进行深入的学习理解,同时还需要GoTerra对当前已有业务的数据使用方式进行深入分析与归纳,这里涉及到各个业务部门大量人员的培训和海量数据业务场景的深入分析梳理,整体的迁移因为大量的培训分析工作迟迟无法有效推进。

综上所述,在较短的时间内完成海量数据和极端复杂业务场景的迁移,给我们提出了如下挑战:

存储技术方案解析

结合MaxCompute当前已有存储技术能力以及未来存储格式演进的规划,通过对系统工程实现和存储格式的梳理重构,我们推出了Append DeltaTable,通过新的表格式,我们达成了以下几个技术核心功能:

Append DeltaTable的推出,一方面是对存量表格式已有功能场景的整合,支持了包括ACID 事务、数据append,数据流式写入、Timetravel等能力,让用户能够在同一种表类型内部不受限制对多种能力进行组合,按需对业务场景进行适配。

专业用词:

Storage Service - 数据自治服务

Storage Service是MaxCompute自研的分布式存储引擎核心组件,其负责海量数据在高可靠存储、高吞吐读写的情况下智能数据治理服务。随着云数仓场景从大数据规模向 AI 原生智能架构的不断演进,Storage Service 需解决以下关键挑战:

Storage Service 通过支持以下后台数据作业任务实现数据的自运维、自优化、自愈合的能力,显著降低人工干预成本。系统的支持数据自动治理服务,其包括不限于以下工作任务:

Storage Service在支持以上后台自动数据治理的任务,通过数据重排/重分布/复制等多种方式持续优化数据计算/存储效率。Storage Service数据自治服务系统分为两大部分,Service Control和Service Runtime,前者负责接收外部请求,排队,路由,并将请求转发到计算集群。后者则将一个请求转换成具体的执行计划,并提交Service Job Plan执行请求。以Service Control控制服务来收集后台数据任务需求,分发到计算集群,再在Service Runtime环境中转换成具体执行计划,提交Service Job,完成后台工作任务。

Dynamic Bucketing - 动态Bucket数据优化

在创建Range/Hash Cluster表时,用户需要提前评估对应业务的数据规模,以此为依据设置合适的Bucket数量和cluster key。在完成Cluster表创建后,MaxCompute通过clustering算法将数据按照cluster key路由到各自对应的Bucket中。正因为此产品设置,当数据量太多但是Bucket数量太少,会导致单个Bucket数据量过大,那么查询时数据裁剪效果不佳。但是反过来,如果设置的Bucket数量远远大于业务数据量所需要的范围,会导致每个Bucket内数据量太少而产生大量碎片文件,对查询性能也会造成不良的影响。因此,在创建表时,根据业务的数据量设定合适Bucket数量无形中抬升了用户的使用门槛,用户需要同时对业务本身对使用模式和MaxCompute底层表格式都有一定的理解,才能够正确使用clustering的相关能力,发挥出clustering带来的查询性能收益。

这种用户在建表时显示指定Bucket数量的表固定设置方式带来了几个问题:

综上所述,静态的Bucket数量配置无论是在大规模数据迁移场景,还是在业务快速变化的日常使用环境中,都难以做出有效的支撑,更合理的方式,是平台根据用户实际数据量大小,动态地设置所需要的bucket数量,用户不需要对底层的bucket数量进行感知,一方面大大降低了用户的学习和使用门槛,另一方面对于不断变化的数据规模,也能够更好地做出适应。

因此,Append DeltaTable表格式在设计之初就支持了Bucket的动态分配,所有存储在表中的数据都被自动划分为Bucket,每一个Bucket都是一个逻辑是连续的存储单元,包含了500MB左右的数据。用户在创建和写入数据之前,并不需要在表层面指定Bucket的数量,随着用户数据的持续写入,新的Bucket会不断被按需创建出来,用于承载用户的数据。用户并不需要担心随着数据量的增加或者减少,会导致Bucket内数据量过大或者过小导致的数据倾斜和数据碎片问题。

Incremental Reclustering - 增量重聚合

Clustering是数据领域最常见的数据优化手段之一,cluster key是用户指定的表属性,通过将用户指定的数据字段进行排序并且进行连续的存储,当用户对cluster key进行查询时,我们可以通过下推裁剪等优化,大大缩小数据扫描的范围,从而达到提升查询效率的目的。

如上图所述,MaxCompute之前提供了Range/Hash Clustering两种Clustering能力,支持用户通过Range分桶或者Hash分桶对数据进行分桶,并对单个桶内的数据进行排序,通过对查询过程中Bucket裁剪和单个桶内数据的裁剪,达到查询加速的效果。然而,Range/Hash Clustering的表能力存在的一个限制是,数据必须在写入过程中就完成数据的分桶与排序,从而达到一个全局有序的状态,不支持。因此对数据写入的方式进行了限制,要求数据必须以insert overwrite的形式一次性写入,数据写入完成后,如果需要再进一步追加数据,则需要将表中原有的数据全部读取,与新增数据union之后再次写入,数据追加代价非常大,效率很低。

如上图所示,一般来说,业务通常不会对ODS层的数据表使用clustering,原因在于ODS层的数据比较接近原始的业务数据,通常是通过外部的采集链路持续导入的,对数据导入的性能有很高的要求,原有clustering表代价巨大的写入模式无法满足低延迟高吞吐的写入要求。因此业务侧往往倾向于在DW层的表中设置ClusterKey,对在前一个业务日期完成数据导入的ODS表进行数据清晰后导入到新的数据相对稳定的DW层,进而加速后续的查询业务性能。

但是这种方案带来的问题在于DW层数据的新鲜度上会存在一定的延迟,为了避免反复更新DW层带来的读写放大,DW层的更新通常在ODS层数据稳定后才进行,这导致通过DW层查询到的数据在业务日期上是存在滞后的。然而在GoTerra迁移的过程中,业务方对查询性能和数据新鲜度都有着非常极致的要求,希望能够在ODS层之间实现Clustering,通过对ODS表的数据查询加速,获取实时信息。

因此,原本MaxCompute提供的在写入数据时同步执行Clustering的方案无法在数据的实时性上满足用户诉求。Append DeltaTable 的增量Clustering能力,通过后台数据服务异步执行增量Clustering的方式,在数据导入性能,数据实时性,以及数据查询性能上做到了最大限度的平衡。

如上图所示,用户数据通过Streaming 写入的方式导入MaxCompute,写入阶段为了最大限度保障写入延迟与吞吐,数据直接以未排序的方式落盘,被分配到新分配到Bucket中。此时由于新写入到Bucket数据没有执行Clustering操作,新增Bucket在数据范围上会和其他已经完成Clustering的bucket产生重叠。在执行查询任务时,SQL引擎对Clustered Bucket执行Bucket裁剪,对增量Bucket则执行扫描。

如上图所示,MaxCompute后台数据服务持续对Bucket Overlap Depth进行监控,当Overlap达到特定阈值后触发增量Reclustering,对新写入的Bucket执行Reclustering操作,确保用户数据的主题部分始终维持在一个有序状态,从而确保了整体查询性能的稳定。

Performance Improvement - 显著性能效果

Append DeltaTable创新表格式在复杂业务场景上优秀表现从侧面反映出数据存储格式的技术优化对大数据分析场景下的核心价值。其技术价值&性能优化总结如下:

1. 数据自治

2. 弹性扩展

3. 实时 Clustering

实践总结

Append DeltaTable 的推出一方面结束了MaxCompute一直以来存在的功能割裂状态,大大降低了用户对于底层存储格式的理解和使用成本,在继承MaxCompute一如即往优秀性能的同时,灵活性,时效性,场景的多样性上都有了巨大的提升。在GoTerra迁移项目中,Append DeltaTable的推出极大提升了GoTerra项目总体的迁移效率。Append DeltaTable作为Maxcompute用于迁移BigQuery数据的唯一表格式,承接了包括55w张表,60+PB数据的全量迁移工作。也证明了Append DeltaTable在自身整体的架构设计和整体实现上能够支持和BigQuery等国际一流厂商的全方位能力对标。

Append DeltaTable的成功落地不仅标志着MaxCompute在存储架构上的重大突破,更预示着云原生数据平台在规模化、实时化、智能化方向的演进趋势。在兼顾MaxCompute原有的高吞吐批处理能力的同时,填补了传统数据仓库在时效性上的短板。这种设计使GoTerra得以在迁移后无缝衔接历史批处理作业与新兴的实时分析需求,例如将用户行为日志的分钟级处理延迟压缩至秒级,为东南亚市场的动态定价、风控模型迭代等场景提供实时决策支持。

未来技术规划

从更宏观的未来视角看,Append DeltaTable创新表格式的推出体现了阿里云对Data + AI融合架构的前瞻性布局。其底层的列式存储与向量化引擎为AI机器学习特征工程提供了天然数据加速路径。而未来技术规划趋势在于近实时数据处理与多模态数据存储能力。其中多模态数据(如文本、图像、时序)的统一存储能力,则为企业构建跨模态分析流水线奠定了基础。GoTerra的海量数据迁移是国内企业迈向全球数据治理标准的关键一步——中国自主研发的数据基础设施已具备支撑跨国企业级复杂业务的完整能力。未来,随着Append DeltaTable与MaxCompute原生实时计算组件的深度集成以及Delta Live MV能力的进一步推出,MaxCompute将进一步释放数据资产的全生命周期价值,为云原生时代的数据革命提供中国方案。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MaxCompute Append DeltaTable 数据仓库迁移 存储格式 GoTerra
相关文章