Ch04 Physical Data warehouse design

11/16/2021 DataData warehouse

# Physical Data warehouse design

# Partitioning

Partitioning Methods(分表)可以水平切割也可以垂直切割

  • Range partitioning
  • Hash partitioning
  • 也可以结合上面两个,先用range partitioning再用hash partitioning

# Materialized summary data

  • explicit summary data(显式调用):有额外的一张表存放,没有和原先数据的连接,在查询的时候也分开查询img
    • 根据fact表中两个字段(region_dim, region_type)可以在dimension表中查询到唯一一行表示细节img
    • 查哪些表就把哪些表join起来,用两个and = 表示
  • implicit summary data(隐式调用):只有一张detailed表可以查询,当查询语句查询了这些聚合信息时,自动去Materialized view里找,materialized view refer to the detailed table

# Materialized Views

刷新策略:

  • deferred:只有当refresh table 语句执行的时候,才会刷新
  • immediate:源数据有更新的时候

Derivability:

imgimg

  • 需要考虑以下4点:
    • Predicates:谓词的限制要比summary table要高:如下图,query中有where子句,但是summary中没有,所以在查询的时候满足restiction高的条件,sales就直接从summary data中取,而不是从原始数据中拿img
    • Aggregate functions:img
      • 如求sum的话可以在两个union中分别求sum,再求总的sum
      • 如求max,也可以分别再多个union中求最大值,再求最终的最大值
      • additive aggregate function 存在逆函数,但是semi-的不存在
      • additive-computable是在求additive function之后再作一步操作
      • median是求中位数
      • 如在source中删除了最大值,不知道第二大值是什么,但是sum等是可以计算的img
      • 如果A表,B表 join成了m表:
        • 如果join丢失了数据(lossy),那么对A表的查询不能对M表执行
        • 如果join没有丢失数据(lose less),那么对A表的查询可以对M表执行
      • Groupings:imgimg
        • Grouping set 2 is derivable from Grouping set 1,因为Gs 2中每个group都至少被一个Gs1中的group产生
        • 以下两个条件满足一个就可以说明G1 directly derivable G2
          • G2 比G1少一个属性
          • G2 中有一个属性替代了G1中的一个属性,并且G1中的那个属性functionally determined G2的那个属性
        • 可以用G3作为materiliaze view来加速对G2的查询(直接使用G3的数据而不是从source中查)
        • 数据量会随着Grouping的数量快速增加img

# 计算materilize view的benefit

benefit per unit space: BPUS(u1,...,uk, M)=Benefit/unit sizeimg

算法:看ppt中例子,也可以直接根据大小来选择img

  • 新view: u
  • 已有的view:M
  • query: q
  • 选取没有被test过的u,让每个query对u+M进行计算u产生的benefit
    • 取最大的BPUS所对应的u,把u并入M中
  • 选取CMG时,分别计算其他组合,由于(),(C),(M),(CM)能derive from CM,所以Benefit是4个2250-450, BPUS就再除以450(size),把最大的BPUS并入总集合中img

# INDEXS

Table scan: 扫描整张表,看是否满足查询条件

Index scan:用index来标记一行是否和查询条件相关,查询就只用在相关的列中筛选

Indexes on dimension tables

  • 当某个维度只有三个值:low,medium,high的时候,就可以使用索引img

Indexes on fact tables

  • 通常查询对主键进行筛选,主键一般由多个属性共同组成,所以可以使用共同组成的index

  • 但是会有两个问题,属性组合的顺序,index过大

BitMap indexes: 查询结果一位一位竖着计算,比如第一行是O,第二行是O,所以O的前两位是1imgimg

Combining One-dimensional Indexes

  • MDB tree:does not treat all dimensions equally
  • UB tree
Last Updated: 11/19/2024, 1:54:38 PM