首页 > 其他分享 >MaxCompute 物化视图智能推荐最佳实践

MaxCompute 物化视图智能推荐最佳实践

时间:2023-05-31 16:04:20浏览次数:42  
标签:MaxCompute 用户 视图 物化 智能 计算

作者 夏俊伟  阿里云高级产品专家  /  郑君正 阿里云高级技术专家

什么是物化视图

MaxCompute物化视图是一种预先计算和存储结果数据的数据对象,也可以称之为“实体化视图”。物化视图可以作为一张虚拟表存在于MaxCompute项目中,它的内容是一个或多个表的聚合,过滤以及Join组合计算结果。物化视图可以大幅度减少查询处理时间以及节省作业计算资源,基于MaxCompute优化器强大的自动查询改写能力,当作业可以复用物化视图结果时,优化器自动把一些复杂的操作替换成读取物化视图操作,从而提升作业执行速度、节省作业计算资源。

什么是物化视图智能推荐

物化视图的使用,不但需要对物化视图的工作原理比较了解,同时需要了解业务数据行为与业务数据的使用场景,给普通用户使用物化视图带来一定困难。

MaxCompute 物化视图智能推荐实现了用户无感知的流程化使用物化视图能力。用户开启物化视图智能推荐后,MaxCompute 可以为用户自动分析业务数据使用场景,自动推荐物化视图,并且可以可视化展现物化视图的使用效果。为物化视图使用大大降低了门槛,同时也带来更多的物化视图使用场景。

物化视图智能推荐的特点

· 简单易用, 用户不需要了解物化视图各个底层工作细节,只需选择自己的Project开启自动智能分析。

· 智能, MaxCompute自动对用户历史作业进行分析,自动识别周期性作业,并智能提取作业集合中的公共计算逻辑作为物化视图计算逻辑,并最终转换成用户友好的SQL文本形式,按照推荐程度排序展示给用户。

· 便于管理, MaxCompute控制台提供一站式的功能开通、物化视图管理以及物化视图使用效果展示。

物化视图智能推荐的使用场景

数据治理

随着企业业务发展,公司的业务数据会越来越多,各部门对数据都存在各种数据分析需求,在日常使用过程中,各个部门对数据的使用会存在一定的交叉使用,难免会有大量的相同逻辑的重复计算。

日常用户或者大数据平台管理人员很难发现重复计算,因为重复计算部分可能只是整个计算逻辑中一部分。在发现有重复计算时想修改也比较困难,如果重新抽象一个重复计算的表,下游的依赖作业都需要更改,然后测试上线。会带来额外的工作量,从而导致数据治理很难推动。

使用物化视图智能推荐功能后,MaxCompute会自动分析Project中存在哪些公共的计算逻辑,并且推荐出来,让用户去创建物化视图,有了物化视图后,通过强大的优化器改写能力,能够让作业自动应用上物化视图的计算结果,不需要用户修改原来的逻辑。

示例,在没有物化视图,如下图,Tab4跟Tab5的计算中存在棱形跟圆形部分逻辑是重复计算的,在下图中计算了两遍。

MaxCompute 物化视图智能推荐最佳实践_物化视图

创建物化视图MV1后,菱形跟圆形部分逻辑只计算了一遍,可以节省计算资源的同时提高计算速度。

MaxCompute 物化视图智能推荐最佳实践_算力_02

智能数据建模

传统大数据处理,第一步就是既懂技术又懂业务的数据分析专家搭建数据仓库,对数据仓库进行分层,正常模型都分贴源层,明细层,汇总层,应用层等;传统建模方式有以下弊端:

1)模型建的好坏,直接影响到计算的有效性,严重依赖建模的专家;

2)同时随着业务发展,数据越来越多后,难免有模型建的不是很合适的情况,如果再改模型对整个现有任务都有影响;

3)资源浪费,部分模型建好后,但是使用的人很少或者没有使用,导致整个模型白白浪费计算资源和存储资源。

MaxCompute 物化视图智能推荐最佳实践_算力_03

有了物化视图智能推荐后,用户不需要依赖专家来预先建模。可以做到智能的自动化建模。当用户使用数据后,后端自动分析,分析出重复计算逻辑,MaxCompute自动推荐创建物化视图,实现真正的灵活,快捷的自动化建模。让用户不用担心数据存储情况,计算资源使用效率等问题;用户可以把更多精力放在业务发展上。特别对中小型公司来说,不需要额外要招聘数据建模同学,全部交给MaxCompute物化视图智能推荐即可。

MaxCompute 物化视图智能推荐最佳实践_数据_04

数据报表/看板

物化视图智能推荐也可以为用户的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 社区, <https://developer.aliyun.com/group/maxcompute>

标签:MaxCompute,用户,视图,物化,智能,计算
From: https://blog.51cto.com/u_15316473/6387699

相关文章

  • 在Code first中使用数据库里的视图
    一、使用Database.SqlQuery<T>("查询语句"),如:varquery=db.Database.SqlQuery<ReplyStatusViewModel>("SELECT*FROMdbo.vReplyStatus")然后在vReplyStatus视图的基础上进行各种查询:varqqo=query.Where(p=>p.PrdOrd.Contains("袁"));v......
  • 定义视图
    select*fromemp;selectempno,ename,job,mgr,salfromemp;效率更高,但复用时输入时比较麻烦  select*fromempjoindeptonemp.deptno=dept.deptno解决方案:定义一个视图(建一个新表(虚拟))createorreplaceviewmyview1     --orreplace:创建或替换,针对以及......
  • 3D轻量化引擎工具助力Canvas GFX开发插图新产品,可视化视图更精准!
    增材制造和3D打印不乏创新技术,无论是硬件变得更加高效和准确,还是材料科学的巨大进步,都拓宽了3D打印部件的使用范围。然而,Techsoft3D作为软件组件供应商,关注点更多的是在将这两个元素结合在一起的效果,即驱动现代打印机发展并支持使用先进材料的软件平台。凭借超过26年开发工程专......
  • Doris(三) -- Rollup和物化视图
    RollupROLLUP在多维分析中是“上卷”的意思,即将数据按某种指定的粒度进行进一步聚合。通过建表语句创建出来的表称为Base表(BaseTable,基表)在Base表之上,我们可以创建任意多个ROLLUP表。这些ROLLUP的数据是基于Base表产生的,并且在物理上是独立存储的。Rollup表的好......
  • 10)索引、视图
    一个数据库可以创建多个索引;为了提升效率,索引需排序;索引会占用额外空间;(索引可以看作字典的检索目录)索引和约束:系统会自动为主键、唯一和外键字段创建索引;索引选取原则:  创建数据库测试; 1、创建索引:两种方法;1)创建表的同时创建索引:createtable表名(字段......
  • super()在 Django 模板视图中使用
    Django模板视图用于呈现HTML模板并将数据传递给它们以供显示。super()您可以在Django模板视图中使用,轻松地从父模板视图继承属性和方法,并根据需要自定义或扩展它们。Django模板视图的一种常见用法super()是在get_context_data方法中,该方法用于将数据传递给模板以进行渲染。......
  • 高级视图 (日历视图)
    树视图tree视图表现出来是列表视图,列表中一行一纪录。可以根据每行纪录的某字段值不同而把每行以不同样式显示。decoration-{样式}="条件"样式主要有:bf(font-weight:bold):字体加粗it(font-style:italic):斜体字danger:红色字体info:蓝色字体muted:灰色字体primary:紫色字体su......
  • DRF之通过GenericAPIView的视图子类实现数据的增删改查接口
    1、安装DRFpipinstalldjangorestframework2、将DRF注册到APP中INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','djan......
  • 数据库 视图、触发器、存储过程
    数据库视图、触发器、存储过程一直以来总是CRUD,只会操作数据库表了,其他的视图、触发器、存储过程忘完了,但因为生产事故被迫研究了一下,简单回顾一下概念吧。视图在看系统的权限管理部分时,发现它是从视图中查询数据的,通过将多个权限表的数据关联为视图,大大减少了查询时的SQL......
  • mysql表类型和存储引擎和视图
    1. mysql表类型和存储引擎  8031.1 基本介绍1. MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。2. MySQL数据表主要支持六种类型,分别是: CSV、 Memory、ARCHIVE、MRG_MYISAM、MYISAM、 InnoBDB.3.这六种又分为两类,一类是”事务安全型”......