论文链接:Implementing data cubes efficiently
预计算基于空间换时间实现查询性能提升,物化视图是数据立方体(data cubes)的一种实现方式。如何有效选择数据立方体进行物化是一个NP难问题,对于n维数据集,有2^n种选择可能。本论文提出基于数据格框架(Lattice Framework),通过贪心算法高效选择物化视图。
本文创新性提出数据格框架 (Lattice Framework):一种用于表示和分析多维数据查询依赖关系的数学结构,该框架为工业界物化视图推荐实现提供理论基础,如Apache Calcite 物化视图推荐基于Lattice实现。
Lattice定义:一个格 ⟨L,⪯⟩ 由两个部分组成:
在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 的最大下界)。
偏序关系存在以下特性:
以单个时间维度的不同层级为例,有层级:Day(天)、week(周)、Month(月)、Year(年),可得到如下偏序关系: (Year) ⪯ (Month) ⪯ (Day)
多个维度可以表示为组合偏序关系。(a1, b1) ⪯ (a2, b2) 意味着 a1 ⪯ a2 和 b1 ⪯ b2,表示(a1, b1)的结果可通过(a2, b2)
计算。
示例如下:假设有时间维度和地域维度,每个维度有多个层次结构如下
组合后的二维层次结构可以表示为:(Year,Country)、(Year,City)、(Month,Country)、(Month,City)、(Day,Country)、(Day,City), 存在偏序关系:(Year,Country) ⪯ (Month, Country) ⪯ (Month, City)。
基于贪心算法在给定限制条件下,选择最优的视图集合进行物化。执行流程主要包括:
收益计算:最小化查询响应时间,即尽可能提升查询效率。
计算视图 v 的查询收益 B(v,S)的步骤如下: 其中v ⪯ u,u是已经选中过的视图
与维度的数据量级相关,视图成本 C(v)通常表示视图 v的行数,即视图 所包含的数据记录的数量。计算视图成本的具体方法取决于数据的分布和视图的复杂性。
各个维度组合的数据量级:groupby 维度,可估算物化视图所需存储空间和计算资源。计算步骤:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。