前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解读 Implementing data cubes efficiently

解读 Implementing data cubes efficiently

原创
作者头像
Yiwenwu
修改于 2025-02-20 02:23:41
修改于 2025-02-20 02:23:41
1880
举报
文章被收录于专栏:论文解读论文解读

概述

论文链接:Implementing data cubes efficiently

预计算基于空间换时间实现查询性能提升,物化视图是数据立方体(data cubes)的一种实现方式。如何有效选择数据立方体进行物化是一个NP难问题,对于n维数据集,有2^n种选择可能。本论文提出基于数据格框架(Lattice Framework),通过贪心算法高效选择物化视图。

数据格框架

定义

本文创新性提出数据格框架 (Lattice Framework):一种用于表示和分析多维数据查询依赖关系的数学结构,该框架为工业界物化视图推荐实现提供理论基础,例如,Apache Calcite 物化视图推荐基于Lattice实现。

Lattice定义:一个格 ⟨L,⪯⟩ 由两个部分组成:

  • 元素集合 L:代表Lattice中所有元素的集合,是数据立方体中所有可能的查询Q的集合,每个元素可代表一个特定的视图或查询。
  • 偏序关系⪯:定义在元素集合 L上的偏序关系,用于表示元素之间的依赖关系。如果查询 Q1可通过查询 Q2的结果表示,则 Q1⪯Q2,即Q1偏序于Q2。针对多维查询示例,查询(part) 可以通过查询(part, customer)表示,则(part)偏序于(part, customer),表示为:(part) ⪯ (part, customer)

在Lattice中,任意两个元素 a 和 b都有一个最小上界(上确界),记作 sup(a,b),和一个最大下界(下确界),记作 inf(a,b)。这意味着对于任意 a,b∈L,都存在 u∈L使得 a⪯u且 b⪯u(即 u 是 a 和 b的最小上界),并且存在 l∈L使得 l⪯a且 l⪯b(即 l是 a 和 b 的最大下界)。

偏序关系

偏序关系存在以下特性:

  • 反对称性:对于任意元素 ab,如果 abba a=b
  • 可传递性:对于任意元素 a、b c,如果 a⪯b b⪯c, a⪯c

以单个时间维度的不同层级为例,有层级:Day(天)、week(周)、Month(月)、Year(年),可得到如下偏序关系: (Year) ⪯ (Month) ⪯ (Day)

多个维度可以表示为组合偏序关系(a1, b1) ⪯ (a2, b2) 意味着 a1 ⪯ a2 b1 ⪯ b2,表示(a1, b1)的结果可通过(a2, b2) 计算。

示例如下:假设有时间维度和地域维度,每个维度有多个层次结构如下

  • 时间维度的层次结构:年(Year)、月(Month)、天(Day)
  • 地域维度的层次结构:国家(Country)、城市(City)

组合后的二维层次结构可以表示为:(Year,Country)、(Year,City)、(Month,Country)、(Month,City)、(Day,Country)、(Day,City),

存在偏序关系:(Year,Country) ⪯ (Month, Country) ⪯ (Month, City)

贪心算法

执行流程

基于贪心算法在给定限制条件下,选择最优的视图集合进行物化。执行流程主要包括:

  1. 初始化:选择顶层视图(即包含所有维度的视图)作为初始物化集合S
  2. 迭代选择
    1. 对于每个未加入集合的视图 v,计算将其加入集合S后的效益 B(v,S)
    2. 选择效益 B(v,S最大的视图 v 加入集合 S。
  3. 终止条件:重复上述迭代选择过程,直到达到预定的视图数量k或没有更多合适的视图可选。

收益公式

收益计算:最小化查询响应时间,即尽可能提升查询效率。

计算视图 v 的查询收益 B(v,S)的步骤如下: 其中v ⪯ u,u是已经选中过的视图

  1. 定义子视图的查询成本:
    1. 对于每个视图 w,如果 w⪯v,则 w是 v的子视图。
    2. 设 C(v) 表示视图 v 的查询成本(通常为视图v的行数)
  2. 计算成本差异:
    1. 对于每个子视图 w,找到集合S中成本最小的视图v,使得 w⪯v
    2. 如果C(v)<C(u),则v可以减少 w的查询成本,成本差异为 C(u)−C(v);否则,成本差异为0
  3. 计算总收益:视图 v的总收益 B(v,S) 是所有子视图 w的成本差异之和

成本计算

与维度的数据量级相关,视图成本 C(v)通常表示视图 v的行数,即视图 所包含的数据记录的数量。计算视图成本的具体方法取决于数据的分布和视图的复杂性。

  1. 直接计算:如果数据量不大,可以直接计算视图 v的行数。
  2. 统计抽样:随机抽样、计算样本视图成本、推算总体视图成本
  3. 分析方法:维度量级均匀的话,使用维度组合

各个维度组合的数据量级:groupby 维度,可估算物化视图所需存储空间和计算资源。计算步骤:

  • 确定维度层次:确定每个维度的层级结果,如时间维度中,层次可能是天、月、年
  • 确定每个层次的基数:即维度的NDV值,如时间维度中月份基数为12
  • 计算组合的基数:组合的基数是各个维度基数的乘积,例如,如果零件维度有1000个不同的零件,供应商维度有500个不同的供应商,则组合 (part,supplier)的基数为1000×500=500,000
  • 考虑数据的稀疏性:数据立方体通常是稀疏的,即并非所有可能的维度组合都有数据。因此,实际的组合基数通常会小于理论上计算的基数。需要根据实际数据的稀疏性进行调整
  • 使用统计方法或采样:如果数据量非常大,无法直接计算所有维度组合的基数,可以使用统计方法或采样技术来估算
  • 考虑聚合函数:视图通常会涉及聚合函数,需要考虑聚合后的数据量级,会极大的压缩的数据量级

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Calcite Lattice物化视图选择
物化视图(Materialized View,简称MV):是一种特殊的物理表,本质是预计算。通过多个计算过程之间的联系建立,从数据组织层面优化数据访问效率,把某些长耗时的操作结果(例如JOIN、AGGREGATE) 直接保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终实现加速查询的目标,即空间换时间。与之相对的,普通视图(View) 仅是对用户查询定义的一种简化,并不存储结果数据,无法加速查询。
Yiwenwu
2025/02/09
4300
【数据仓库与联机分析处理】多维数据模型
数据仓库和OLAP工具是基于多维数据模型的,该模型以数据立方体(Cube)的形式来观察和分析数据。
Francek Chen
2025/01/22
1490
【数据仓库与联机分析处理】多维数据模型
解读 Optimizing Queries Using Materialized Views: A Practical, Scalable Solution
原文链接:Optimizing Queries Using Materialized Views:A Practical, Scalable Solution
Yiwenwu
2025/02/11
4070
【转】多维数据查询OLAP及MDX语言笔记整理
为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。 但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业提出实时企业的要求,传统的ERP等信息系统和报表系统无法满足这些需求。实时业务监控解决方案旨在更好支撑客户此类需求。 http://www.tuicool.com/articl... 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
ZhangXianSheng
2019/06/02
3.9K0
Calcite系列(十一):物化视图
物化视图(Materialized View):是一种特殊的物理表,本质是预计算,是多个计算过程之间的联系建立。从数据组织层面优化数据访问效率,即把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)仅是简化用户的查询定义,不存储实际结果数据。
Yiwenwu
2024/04/24
9180
大数据架构系列:从索引到预计算
大数据发展至今,各大公司的数据量已经是非常庞大了,虽然通用计算框架Spark/Presto等已经能满足用户的很多查询需求,但是更快的查询还是大家向往的。OLAP框架Doris/StarRocks/Clickhouse等在业界已经很火了,虽然有着非常强的计算层,但是在存储层的优化也是非常多的,不仅有特殊的编码、压缩还有一大堆的可配置索引,例如BitMap/HLL维度类型可以快速的计算去重的场景等,ZSTD算法等极致压缩,倒排索引点查等等。
jhonye
2022/12/14
1.4K1
Greenplum 实时数据仓库实践(7)——维度表技术
前面章节中,我们实现了实时多维数据仓库的基本功能,如使用Canal和Kafka实现实时数据同步,定义Greenplum rule执行实时数据装载逻辑等。本篇将继续讨论常见的维度表技术。
用户1148526
2022/01/06
2.6K0
Greenplum 实时数据仓库实践(7)——维度表技术
【天穹OS】虚拟表:支持极速查询的下一代湖仓一体新范式
湖仓一体(Lakehouse)是近年来比较火的大数据概念,它将数据湖(Data Lake)和数据仓库(Data Warehouse)的优势结合起来,为企业提供了更强大、更灵活的数据管理解决方案。Gartner 技术曲线的描绘中,Lakehouse是一项非常重要技术,预计还有2~5年进入平台期,国内是5~10年。
jhonye
2023/10/31
1.9K0
多角度带你认清Kylin的工作原理
在之前的博客中,博主已经为大家带来了Kylin的简单介绍,环境搭建以及简单入门使用。本篇博客,博主为大家带来的是关于Kylin工作原理的介绍!
大数据梦想家
2021/01/27
5140
多角度带你认清Kylin的工作原理
HAWQ取代传统数仓实践(十九)——OLAP
本文介绍了 Zeppelin 是什么、能做什么,以及 Zeppelin 的特性、组件和扩展。主要内容包括:Zeppelin 是基于 Apache Spark 的开源大数据可视化分析平台,支持交互式查询、实时数据可视化和机器学习等功能。Zeppelin 的特性包括支持多种数据源、提供交互式查询、支持实时数据可视化、提供机器学习接口等。Zeppelin 的组件包括: Notebook:交互式查询工具,支持多种编程语言; Interpreter:解释器,支持多种编程语言; Notebook Server:服务端,支持交互式查询; Shell:命令行工具,支持交互式查询; Spark:基于 Spark 的数据科学平台,支持交互式查询; ML:机器学习平台,支持交互式查询; Gallery:数据可视化模块,支持数据可视化; Extensions:扩展模块,支持自定义功能。
用户1148526
2018/01/03
1.9K0
HAWQ取代传统数仓实践(十九)——OLAP
简单谈谈OLTP,OLAP和列存储的概念
在商业数据处理的早期阶段,写入数据库通常对应于商业的交易场景,如: 销售,订单等涉及金钱交易的场景,交易的英文为transaction,也就是事务一词的来源,在计算机领域代表一个逻辑单元的一组读写操作。
大忽悠爱学习
2023/05/02
4.3K0
简单谈谈OLTP,OLAP和列存储的概念
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
在现代化的数据分析场景中,数据量以指数级速度快速膨胀,分析维度在不断扩展,查询逻辑的复杂度也在日益增加。从性能角度考虑,在承担高并发查询的压力下,秒级别甚至更快的响应速度已成为基本需求。同时,面对有限的计算资源,成本及性能如何平衡,严格的资源管控也显得尤为重要。
SelectDB技术团队
2024/11/20
3580
【硬刚Kylin】Kylin入门/原理/调优/OLAP解决方案和行业典型应用
现今,大数据行业发展得如火如荼,新技术层出不穷,整个生态欣欣向荣。作为大数据领域最重要的技术的 Apache Hadoop 最初致力于简单的分布式存储,然后在此基础之上实现大规模并行计算,到如今在实时分析、多维分析、交互式分析、机器学习甚至人工智能等方面有了长足的发展。
王知无-import_bigdata
2021/07/12
1.4K0
【硬刚Kylin】Kylin入门/原理/调优/OLAP解决方案和行业典型应用
Apache Kylin 概览
Apche Kylin 是 Hadoop 大数据平台上的一个开源 OLAP 引擎。它采用多维立方体(Cube)预计算技术,可以将某些场景下的大数据 SQL 查询速度提升到亚秒级别。相对于之前的分钟乃至小时级别的查询速度。
codingforfun
2019/05/15
1.8K0
Apache Kylin 概览
Apache Kylin 历险记
Apache Kylin(麒麟)是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
sowhat1412
2022/09/20
6380
Apache Kylin 历险记
ClickHouse物化视图在微信的实战经验
ClickHouse广泛用于用户和系统日志查询场景中,借助腾讯云提供基础设施,微信也在分阶段逐步推进clickhouse的建设和应用,目前作为基础建设的一部分,主要针对于OLAP场景,为业务方提供稳定高效的查询服务。
Vitamin_C
2021/06/08
5K1
ClickHouse物化视图在微信的实战经验
快速学习-Kylin概述
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
cwl_java
2020/03/24
6250
StarRocks存算分离在得物的降本增效实践
OLAP引擎在得物的客服、风控、供应链、投放、运营、ab实验等大量业务场景发挥重要作用,在报表、日志、实时数仓等应用场景都有广泛的应用。
得物技术
2024/12/02
4180
悄悄学习Doris,偷偷惊艳所有人 | Apache Doris四万字小总结
DorisDB是由Apache Doris核心研发团队打造的新一代企业级MPP数据库。它继承了Apache Doris项目十多年研发成果,累积了线上数千台服务器稳定运行经验,并在此基础上,对传统MPP数据库进行了开创性的革新。
王知无-import_bigdata
2021/09/22
8K1
「硬刚Doris系列」Doris高级用法
Rollup 可以理解为 Table 的一个物化索引结构。物化 是因为其数据在物理上独立存储,而 索引 的意思是,Rollup可以调整列顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度。
王知无-import_bigdata
2022/06/05
2.1K0
推荐阅读
相关推荐
Calcite Lattice物化视图选择
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档