当前位置:   article > 正文

什么是拉链表

拉链表

什么是拉链表

数据仓库的数据模型中,经常会遇到表中的信息被更新,如用户的地址、手机号等。如果我们希望在数据仓库中保留历史数据的话,就需要将被更新掉的值进行存储。以往的解决方式大致有三种:

1 每天在固定的时间抽取全量数据,将其压缩保存。优点:操作方法简单,只需要将数据压缩保存即可;缺点:抽取数据需要时间,且查看历史数据困难,大部分数据可能不是每天都做更改。

2 将数据表按时间分区,每天将全量数据存储在对应分区中。优点:数据非常全,有最新也有历史;缺点:对内存占用很大,第一种数据可以压缩存储,而第二中方法只能存储在数据表中。

3 拉链表:

如果既要能查当前阶段的数据,又能回溯到历史某一时刻的数据,同时,要能保证查询速度快,占用存储少,此时就需要拉链表来解决此类需求。

拉链表的定义

所谓拉链表,即为记录每条数据的生命周期历史,一旦这条数据生命周期结束,会重新开始一条新记录,拉链表记录着所有数据的从开始到当前所有变化的信息。如下图所示,左侧为快照表,右侧为拉链表:

在这里插入图片描述

可以很容易看到,快照表(即开头提到的切片表)是一种十分浪费存储的方案。

拉链表在使用的过程中与切片表比起来也相对简单,如下是查找同一时间点数据的等价写法:

#切片表
select * from table_history where date = '20150526'

#拉链表
select * from table_history where '20150526'>=start_date and '20150526'<=end_date;
  • 1
  • 2
  • 3
  • 4
  • 5

拉链表的使用范围

数仓通常有如下分层:

在这里插入图片描述

源数据层(ODS):此层数据通常无需任何更改,直接沿用外围系统数据结构和数据,不对外开放;作为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备,用来保管我们的原始数据的。

公共维度层(DIM):基于维度建模理论进行构建,存放维度模型中的维度表,保存一致性维度信息。

数据明细层(DWD):根据业务要求,将ODS数据和DIM层数据结合分析后抽取到DW层,形成一份最详细业务明细数据,同时该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

数据汇总层(DWS):DWD层的详细业务数据和DIM层的维度数据,按照数据域和数据主题,生成数据汇总表(例如:根据多张DWD层的业务数据表,生成最近1日汇总表,最近n(7/30)日汇总表,历史至今汇总表)

数据展示层(ADS层):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。数据的报表展示。

以上五层中那一层最适合使用拉链表?

答案是数据明细层(DWD)最适合

因为对于其他层而言,要么完全不需要进行数据汇总(例如ODS和DIM),要么因为更贴近业务而需要轻度汇总(DWS层)或深度汇总(ADS层)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/867999
推荐阅读
相关标签
  

闽ICP备14008679号