作者:夏俊伟(阿里云高级产品专家)、郑君正(阿里云高级技术专家)
什么是物化视图
MaxCompute 物化视图是一种预先计算和存储结果数据的数据对象,也可以称之为“实体化视图”。物化视图可以作为一张虚拟表存在于 MaxCompute 项目中,它的内容是一个或多个表的聚合,过滤以及 Join 组合计算结果。物化视图可以大幅度减少查询处理时间以及节省作业计算资源,基于 MaxCompute 优化器强大的自动查询改写能力,当作业可以复用物化视图结果时,优化器自动把一些复杂的操作替换成读取物化视图操作,从而提升作业执行速度、节省作业计算资源。
什么是智能物化视图
物化视图的使用,不但需要对物化视图的工作原理比较了解,同时需要了解业务数据行为与业务数据的使用场景,给普通用户使用物化视图带来一定困难。
MaxCompute 智能物化视图实现了用户无感知的流程化使用物化视图能力。用户开启智能物化视图后,MaxCompute 可以为用户自动分析业务数据使用场景,自动推荐物化视图,并且可以可视化展现物化视图的使用效果。为物化视图使用大大降低了门槛,同时也带来更多的物化视图使用场景。
智能物化视图的特点
简单易用,用户不需要了解物化视图各个底层工作细节,只需选择自己的 Project 开启自动智能分析。
智能,MaxCompute 自动对用户历史作业进行分析,自动识别周期性作业,并智能提取作业集合中的公共计算逻辑作为物化视图计算逻辑,并最终转换成用户友好的 SQL 文本形式,按照推荐程度排序展示给用户。
便于管理,MaxCompute 控制台提供一站式的功能开通、物化视图管理以及物化视图使用效果展示。
智能物化视图的使用场景
数据治理
随着企业业务发展,公司的业务数据会越来越多,各部门对数据都存在各种数据分析需求,在日常使用过程中,各个部门对数据的使用会存在一定的交叉使用,难免会有大量的相同逻辑的重复计算。
日常用户或者大数据平台管理人员很难发现重复计算,因为重复计算部分可能只是整个计算逻辑中一部分。在发现有重复计算时想修改也比较困难,如果重新抽象一个重复计算的表,下游的依赖作业都需要更改,然后测试上线。会带来额外的工作量,从而导致数据治理很难推动。
使用智能物化视图功能后,MaxCompute 会自动分析 Project 中存在哪些公共的计算逻辑,并且推荐出来,让用户去创建物化视图,有了物化视图后,通过强大的优化器改写能力,能够让作业自动应用上物化视图的计算结果,不需要用户修改原来的逻辑。
示例,在没有物化视图的情况(如下图),Tab4 跟 Tab5 的计算中存在棱形跟圆形部分逻辑是重复计算的,在下图中计算了两遍。
创建物化视图 MV1 后,菱形跟圆形部分逻辑只计算了一遍,可以节省计算资源的同时提高计算速度。
智能数据建模
传统大数据处理,第一步就是既懂技术又懂业务的数据分析专家搭建数据仓库,对数据仓库进行分层,正常模型都分贴源层,明细层,汇总层,应用层等;传统建模方式有以下弊端:
1)模型建的好坏,直接影响到计算的有效性,严重依赖建模的专家;
2)同时随着业务发展,数据越来越多后,难免有模型建的不是很合适的情况,如果再改模型对整个现有任务都有影响;
3)资源浪费,部分模型建好后,但是使用的人很少或者没有使用,导致整个模型白白浪费计算资源和存储资源。
有了智能物化视图后,用户不需要依赖专家来预先建模。可以做到智能的自动化建模。当用户使用数据后,后端自动分析,分析出重复计算逻辑,MaxCompute 自动推荐创建物化视图,实现真正的灵活,快捷的自动化建模。让用户不用担心数据存储情况,计算资源使用效率等问题;用户可以把更多精力放在业务发展上。特别对中小型公司来说,不需要额外要招聘数据建模同学,全部交给 MaxCompute 智能物化视图即可。
数据报表/看板
智能物化视图也可以为用户的BI智能报表/看板提供加速能力。MaxCompute会为用户自动分析重复刷新的数据,推荐创建物化视图,有了物化视图后可以预先计算好报表/看板需要的数据,在报表/看板需要用的时候直接会自动改写路由去查物化视图,可以大大降低报表/看板的响应时间。
如何使用智能物化视图
智能物化视图使用非常简单,只需以下几个步骤:
1、登录 MaxCompute 控制台,点击左边菜单“物化视图”;
2、选择 Tab 页“设置”,开启智能分析,并且添加需要分析的项目名称;
3、T+1 天后,查看 Tab 页“物化视图推荐”,查看系统根据用户使用行为,推荐出来的公共子查询;
4、选择对应的子查询创建物化视图;
5、T+1 天后,查看 Tab 页“物化视图管理”,可以看到目前哪些查询计算调用了该物化视图以及调用物化视图前后效果对比。
智能物化视图示例
阿里集团数据中台团队负责建设整个阿里的数仓“公共层”,试图将重复计算的逻辑进行收敛,让多个下游业务访问同一个结果表,从而达到节省计算和存储的目的。随着数据量和业务复杂度的几何增长,传统的“公共层”已经很难达到原本设想的状态,主要原因有:
- 找数难
- 逻辑存在相似性但是结果表不完全可用
- 人工发现公共逻辑难度大
MaxCompute 推出的智能物化视图功能,恰好能很好的解决上述问题。数据中台团队通过将 MaxCompute 智能推荐结果转变为物化视图,大大降低了下游作业之间的重复计算,节省了大量计算资源。
一期智能物化视图功能覆盖了 4 个 BU 共 20 个 project,命中物化视图的作业,其平均计算资源节省率为 14%。后续我们会有更加详细的实际使用案例来展开介绍。
智能物化视图使用说明
物化视图并不能解决所有问题,在绝大部分情况下,总体上看都是可以为用户带来正向收益,包括可以减少计算资源,提高计算速度,并降低计算成本。但是针对某个查询计算,在小概率下会给用户带来负收益,用户需要关注以下几点:
1、公共子查询被物化成物化视图后的数据是否发生数据膨胀,如果发生几倍或者更高的膨胀时,不建议使用物化视图。
2、使用后付费的用户,需要注意目前物化视图节省的是计算资源和计算复杂度,但并不一定会减少数据扫描量,因为在数据物化过程中如果发生数据膨胀后,可能扫描量会增加。
【MaxCompute 已发布免费试用计划,为数仓建设提速】新用户可 0 元领取 5000CU*小时计算资源与 100GB 存储,有效期 3 个月。
点击“阅读原文”立即领取。
MaxCompute 发布智能物化视图,CU 算力节省 14%