【大数据面试题】27 讲下Doris的物化视图

一步一个脚印,一天一道面试题。

物化视图概念

物化视图,顾名思义,是将一个查询的结果预先计算并存储为物理表的形式。这意味着,原本需要在运行时动态执行的复杂查询,现在变成了直接从已经计算好的结果表中读取数据,极大地提升了查询速度。它是一种典型的"空间换时间"的策略,牺牲一定的存储空间来换取查询性能的显著提升。

优点

  • 自动维护:Doris自动维护物化视图的数据,无论基础表有新的数据导入还是删除操作,都能确保物化视图与基础表的数据保持一致,无需人工干预。(方便,减少人工)
  • 查询优化 :查询时,Doris能够自动匹配最优的物化视图,并直接从该视图中读取数据,从而跳过不必要的计算步骤,加快查询速度
  • 资源优化 :通过物化视图,可以将计算密集型的操作在数据加载时完成,减少了计算资源消耗

建议使用场景

  • 存储占用小 :这不是必须的,但由于物化视图是需要占用存储空间的,是"空间换时间"的典型,所以尽量使用较少的列(少于10列)。
  • 复杂查询加速 :对于包含多表JOIN或复杂聚合函数的查询,通过预计算结果,物化视图可以提供即时的查询反馈。

物化视图举例

假设有一个大型电商公司的数据库中包含一张名为orders的表,记录了所有订单信息,包括order_id(订单ID)、user_id(用户ID)、product_id(商品ID)、order_date(订单日期)等字段。公司经常需要统计按天的用户购买次数(用户活跃度UV)和商品浏览次数(页面访问量PV)。

为了加速这类固定维度的聚合查询,可以创建一个物化视图。例如,创建一个物化视图daily_uv_pv,预先计算每天每个用户的购买次数和每个商品的浏览次数:

sql 复制代码
CREATE MATERIALIZED VIEW daily_uv_pv
AS
SELECT 
    user_id, 
    product_id, 
    DATE(order_date) AS order_day,
    COUNT(DISTINCT order_id) AS user_activity_count, -- UV计数
    COUNT(order_id) AS product_view_count       -- PV计数
FROM orders
GROUP BY user_id, product_id, DATE(order_date);

这样,当业务方需要查询特定日期的用户活跃度或商品浏览量时,可以直接从daily_uv_pv物化视图中快速获取结果,而不需要每次查询时都去扫描和汇总庞大的原始订单表,大大提高了查询效率。同时,Doris系统会自动管理物化视图的数据同步,确保数据的时效性和准确性。

我是近未来,祝你变得更强!

相关推荐
亚古数据11 分钟前
亚古数据:新西兰公司工商报告Company Extract全解析
大数据·人工智能
baopixiaoz1 小时前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
IT古董1 小时前
【WMS学习笔记系列】01-需求分析
大数据·数据库
成长之路5141 小时前
【数据集】MD&A管理层讨论与分析文本(2001-2025年)
大数据
浅念-3 小时前
MySQL 索引底层完整详解|磁盘Page|B+树推导|聚簇非聚簇索引|索引SQL操作
大数据·数据库·b树·sql·mysql·面试·职场和发展
小马过河R3 小时前
数据仓库入门:是什么、怎么做、和数据库有什么区别?
大数据·数据库·数据仓库·架构·驾驭工程·fde
leisoo80973 小时前
涨停板次日表现因子怎么挖掘本地化Python全流程实战
大数据·人工智能·python
用户3610588626123 小时前
SparkSQL 数据源与底层架构深度剖析
大数据·spark
用户3610588626124 小时前
SparkSQL 之 DataFrame 与 DataSet 及实操演练
大数据·spark
GEO_youxuan5 小时前
AI财务分析软件到底是“自动出表“还是“决策推演“?从自动出表到决策推演的能力分层与选型逻辑
大数据·人工智能