物化视图是什么,物化视图和视图最大区别

实时数据仓库分享
2024/5/30
SelectDB

物化视图(Materialized View)是一种特殊的数据库对象,它包含了某个查询结果的预计算数据,并将其存储在数据库中,以提高查询性能。物化视图与普通的虚拟视图(View)在多个方面存在显著区别。

概念

物化视图是一个预先计算和存储的查询结果集,类似于一张物理表,但不同于物理表的是,它可以通过数据库的内部机制定期更新。物化视图可以看作是远程数据的本地副本,或者用于生成基于数据表求和的汇总表。

功能

物化视图的主要功能包括:

  1. 提高查询性能:物化视图预先计算并存储查询结果,当查询请求到达时,可以直接返回结果,而无需重新计算,从而提高查询性能。
  2. 减少查询开销:由于物化视图存储了查询结果,因此在查询时可以减少计算资源的消耗,降低查询开销。
  3. 支持离线查询:物化视图可以在离线模式下使用,即使数据库不可用,也可以使用物化视图作为备份进行查询。

技术原理

物化视图的工作原理可以概括为以下几个步骤:

  1. 定义物化视图:用户根据自己的需求,定义物化视图的查询语句和数据存储方式。
  2. 预先计算:系统根据物化视图的定义,预先计算出查询结果,并将结果存储在物化视图中。
  3. 数据更新:当基表数据发生变化时,物化视图也需要进行更新,以确保数据的准确性。这通常通过数据库的刷新机制实现。
  4. 查询优化:在查询过程中,系统会根据物化视图的存在和内容进行查询优化,提高查询效率。

应用场景

物化视图在以下场景中特别有用:

  1. 数据仓库:在数据仓库中,经常需要对大量数据进行复杂的查询和分析。使用物化视图可以预先计算和存储这些查询的结果,从而提高查询性能。

  2. 实时数据分析:对于需要实时获取数据分析结果的应用场景,物化视图可以确保数据的实时性和准确性,同时提供快速的查询响应。

  3. 大数据处理:在处理大数据时,物化视图可以作为一种缓存机制,将部分计算结果存储起来,以便在后续查询中重复使用,从而降低计算资源的消耗。

  4. 复杂的表连接和聚合操作:对于涉及多个表连接和聚合操作的查询,物化视图可以将这些耗时的操作预先计算并存储起来,从而避免在每次查询时都重新执行这些操作。

与普通视图的区别

物化视图与普通视图的主要区别在于:

  1. 存储方式:物化视图会存储实际的数据,而普通视图只是保存SQL定义,不会存储实际的数据。
  2. 更新机制:物化视图在基表数据发生变化时需要更新以保持数据的一致性,而普通视图在查询时只是执行其定义的SQL语句来获取数据。
  3. 性能差异:由于物化视图存储了实际的数据,因此在查询时可以直接返回结果而无需重新计算,从而提高了查询性能。而普通视图在查询时需要执行其定义的SQL语句来获取数据,性能相对较差。

物化视图作为 SelectDB EnterpriseSelectDB Cloud 的核心技术,其原理是通过空间换时间加速实时数仓的查询速度;用库内ETL简化数据流维护;通过 Streaming Data Warehouse 完成增量处理。

物化视图是什么,物化视图和视图最大区别1.PNG

在 Apache Doris( SelectDB Enterprise 和 SelectDB Cloud 是基于 Apache Doris 构建的) 2.1 版本中我们引入了基于多表的异步物化视图以提升查询性能,支持透明改写加速、自动刷新、外表到内表的物化视图以及物化视图直查,基于这一能力物化视图也可用于数据仓库分层建模、作业调度和数据加工。

1.透明改写加速: 支持常见算子的透明改写,如 Select、Where、Join、Group by、Aggregation 等,可以直接通过建立物化视图,对现有的查询进行加速。例如在 BI 报表场景,某些报表查询延时比较高,就可以通过建立合适的物化视图进行加速。

2.自动刷新: 物化视图支持不同刷新策略,如定时刷新和手动刷新,也支持不同的刷新粒度,如全量刷新、分区粒度的增量刷新等。

3.外表到内表的物化视图: 可以对存放在 Hive、Hudi、Iceberg 等数据湖系统上的数据建立物化视图,加速对数据湖的访问,也可以通过物化视图的方式将数据湖中的数据同步到 Apache Doris 内表中。

4.物化视图直查: 用户也可以将物化视图的构建看做 ETL 的过程,把物化视图看做是 ETL 加工后的结果数据,由于物化视图本身也是一个表,所以用户可以直接查询物化视图。

想要了解 SelectDB Enterprise、SelectDB Cloud 更多以及物化视图技术交流都可以来咨询我们!

物化视图数据分析数据仓库ETL