前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Calcite系列(十一):物化视图

Calcite系列(十一):物化视图

原创
作者头像
Yiwenwu
发布2024-04-24 10:05:33
2880
发布2024-04-24 10:05:33
举报
文章被收录于专栏:Calcite剖析Calcite剖析

背景

物化视图(Materialized View):是一种特殊的物理表,本质是预计算,是多个计算过程之间的联系建立。从数据组织层面优化数据访问效率,即把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)仅是简化用户的查询定义,不存储实际结果数据。

物化视图使用存在一定门槛,提高查询性能的同时也引入了相应的成本:

  • 存储成本:物化表存储空间;
  • 计算成本:若源表(base表)数据变更,物化视图自动失效,需计算更新后才可用;

因此,物化视图并不适合所有场景,使用物化视图条件:提速收益 > 存储成本 + 计算成本。

物化视图适合场景:

  • 源表变更不频繁:降低计算成本;
  • 相比于源表,物化表的字段和结果数量有明显的减少:降低存储成本;
  • 物化表查询子句的执行是高成本的,(1).计算频繁,(2).计算复杂(消除Join和聚合的计算开销),(3).读取扫描量大:提高加速收益;

使用场景示例:

  • 查询存储在外部(冷存储),相比于内部存储(热存储),外部存储性能较低;
  • 对于数据仓库,物化视图可物化查看结果,屏蔽多个数据源差异,实现本地副本;

视图改写

视图改写常用的方式:

  1. 基于语法改写:最简单的改写方式,将查询的文本与物化视图的文本或语法树进行比较,完全匹配则可以进行改写;
  2. 基于规则改写:针对不同规则,穷举所有可能变换关系来寻找等价替代关系树;
  3. 基于结构改写提取查询特征并使用一套规则进行匹配改写,将查询表示为SPJG标准形式,提取查询中Join、Projects、Filters、Grouping、Aggregation五种表达式,分别与物化视图对应的表达式进行匹配改写;

Calcite 物化视图查询改写支持两种方式:

  1. 基于规则改写:?由?MaterializedViewSubstitutionVisitor实现,基于规则和等价类自底向上匹配
  2. 基于结构改写:由 MaterializedViewRule 规则集构成,基于查询优化器实现改写

Calcite物化视图的结构改写逻辑主要基于Goldstein 和 Larson 的“Optimizing Queries Using Materialized Views: A Practical, Scalable Solution”实现(Microsoft SQL Server的改写方案),是一种SPJG(join-select-project-groupBy)重写算法。

SPJ(join-select-project)视图改写条件:

  • The view contains all rows needed by the query expression:视图行数据可覆盖包含查询表达式的所有行;
  • All required rows can be selected from the view:查询结果可通过视图查询到;
  • All output expressions can be computed from the output of the view:查询结果表达式可通过视图计算查询到;
  • All output rows occur with the correct duplication factor:对于重复语义的算子,有相同一致的行为,如distinct算子在相同的字段;

Calcite MaterializedViewRule 实现结构改写规则,可参考单测 MaterializedViewRelOptRulesTest

Lattice

Lattice(格):是一个数学概念,表示数学上的一种集合,非空有限子集都有一个上确界(并)和一个下确界(交)的偏序结合。Calcite针对物化视图对Lattice进行扩展,根据用户定义的关联和聚合要求,划分出多个物化视图来适应不同类别的查询,支持自动划分物化视图。 Calcite中Lattice定义功能:

  • 可声明主键和外键约束;
  • 辅助优化器将用户查询映射到物化视图;
  • 提供框架,用于采集数据量和用户查询统计信息;
  • 允许Calcite自动产生物化视图

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 视图改写
  • Lattice
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、Presto、Iceberg、Elasticsearch、StarRocks 等,以快速构建企业级数据湖仓。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com