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

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

物化视图概念

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

优点

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

建议使用场景

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

物化视图举例

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

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

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系统会自动管理物化视图的数据同步,确保数据的时效性和准确性。

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

相关推荐

  1. 数据面试27 Doris物化视图

    2024-05-15 13:12:13       34 阅读
  2. 【Flutter 面试 Dart 中 ?? 与 ??= 区别

    2024-05-15 13:12:13       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-15 13:12:13       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-15 13:12:13       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-15 13:12:13       82 阅读
  4. Python语言-面向对象

    2024-05-15 13:12:13       91 阅读

热门阅读

  1. CentOS常用命令速览:把握Linux服务器的脉动

    2024-05-15 13:12:13       25 阅读
  2. Milvus 基本概念

    2024-05-15 13:12:13       28 阅读
  3. ListView[new]

    2024-05-15 13:12:13       32 阅读
  4. Linux监控apache脚本

    2024-05-15 13:12:13       30 阅读
  5. php8编译报错

    2024-05-15 13:12:13       36 阅读
  6. 自己设计扩散模型进行图生图

    2024-05-15 13:12:13       32 阅读
  7. WLAN技术

    2024-05-15 13:12:13       34 阅读
  8. 第一天:Docker入门与基础安装

    2024-05-15 13:12:13       33 阅读
  9. 升级openssl

    2024-05-15 13:12:13       32 阅读
  10. 48V磁吸灯智能调光照明驱动方案无频闪12V24V36V48V

    2024-05-15 13:12:13       25 阅读
  11. 面试 JVM 八股文十问十答第六期

    2024-05-15 13:12:13       35 阅读
  12. C# 不用lock写一个多线程程序

    2024-05-15 13:12:13       35 阅读
  13. 韵搜坊 -- 前端整合Axios(联调后端)

    2024-05-15 13:12:13       35 阅读
  14. uniapp vu3 scroll-view 滚动到指定位置

    2024-05-15 13:12:13       39 阅读
  15. 华为OD笔试题:API 集群负载统计

    2024-05-15 13:12:13       29 阅读