微信基于 StarRocks 的湖仓一体实践
小编导读:
微信作为国内活跃用户最多的社交软件,其数据平台建设经历了从 Hadoop 到 ClickHouse 亚秒级实时数仓的阶段,但仍旧面临着数据体验割裂、存储冗余的问题。通过 StarRocks 的湖仓一体方案,以及和社区密切配合开发的实时增量物化视图,微信解决了“实时、极速”背后的“统一”诉求。在直播业务场景中,通过湖上建仓的方案改造,使得数据开发同学需要运维的任务数减半,同时存储成本降低65%以上,离线任务产出时间缩短两小时。
背景
海量数据:在我们的业务场景下,数据规模很大,单表日增万亿,单次查询扫描数据量在10亿以上,同时需要计算的指标和维度可能会非常多(50+维度,100+指标);
极速:微信业务场景对查询耗时要求极高,查询耗时 TP 90 需要在5秒以内,同时要求数据低时效(秒/分钟);
统一:我们希望能够实现计算侧和存储侧的统一。
湖仓一体
两份存储
口径不一致
额外的数据导入导出步骤
数据分析流程难以标准化
01
技术路线一:湖上建仓
01
秒级:中大表,秒级返回,StarRocks
分钟级:大表查询,分钟级,Spark
02
技术路线二:仓湖融合
02
03
湖仓一体架构
03
实时增量物化视图
不支持复杂表达式,仅能够对基础表中的列进行简单的聚合操作,无论是维度列还是指标列中,都不能包含复杂表达式;
不支持输出列别名;
基础表中的列不能在物化视图中被多次引用;
仅支持少量聚合函数,不支持通用聚合函数;
物化视图数据与基础表强绑定,无法直接查询物化视图数据。
大规模,单表数据量大,因此物化视图只能增量更新,不能全量刷新
实时性要求高:需要同步刷新,不能异步刷新
多表指标拼接:多个基础表的物化视图计算指标拼接到同一个物化视图目标表中
在物化视图写入时进行高性能维表关联
...
01
多流同步物化视图
01
在数仓体系中,基础表通常属于 ODS 层,需要保留3~7天,而存储物化视图结果的目标表属于 DWS 层,通常需要保留半年到一年,将这两者解耦之后,我们才能够分别为其定义不同的存储周期。
将物化视图的计算逻辑和计算结果完全解耦,业务不需要关心具体的计算逻辑,直接查询物化视图目标表中存储的指标结果即可,能够极大提高易用性,同时能够将上下游业务逻辑解耦,上游计算逻辑发生变化不会影响下游使用。
最后,只有将两者解耦,我们才能够实现多个基础表的协议关联,通过让多个基础表的物化视图计算结果写同一个目标表,从而完成指标拼接。
02
基于全局字典的维表关联
02
03
未来
03
总结与展望
面向 SQL,用户不再感知底层架构;
接入/查询体验统一,存储统一;
秒级/分钟级延迟架构体验统一,亚秒/分钟级分析统一;
SQL 交互标准统一。
致谢
感谢“腾讯大数据团队”提供稳定内部集群和各类技术支持,帮助业务落地;感谢" StarRocks 社区"在功能开发,问题定位解决上的诸多帮忙,祝愿社区发展的越来越好!
关于 StarRocks
Linux 基金会项目 StarRocks 是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks 一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业构建极速统一的湖仓分析新范式,是实现数字化转型和降本增效的关键基础设施。StarRocks 持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过 300 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。拥抱开源,StarRocks 全球开源社区飞速成长。目前,已有超过 300 位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参与共建。项目在 GitHub 星数已超 6800 个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。互联网:芒果TV|微信|小红书|网易邮箱|滴滴|美团餐饮SaaS|得物 |贝壳|马蜂窝|汽车之家|B站|58同城|同程旅行|360
新经济:蔚来汽车|理想汽车|顺丰|京东物流|大润发|华润万家|TCL |万物新生
StarRocks 技术内幕:极速湖仓神器:物化视图|存算分离,兼顾降本与增效 |实时更新与极速查询如何兼得|Query Cache,一招搞定高并发|资源隔离|大数据自动管理|查询原理浅析