6- 数据仓库-保存历史数据方法 ——拉链表

本文介绍了数据仓库中拉链表的相关知识。拉链表记录事物从开始到当前的所有变化信息,是保留数据历史版本的方法。阐述了其原理、使用场景和适用情况,还说明了实现步骤及查询性能的解决思路,同时提及了与流水表的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、拉链表定义:
  拉链表:记录一个事物从开始,一直到当前状态的所有变化的信息。拉链表中会定义数据的有效时间,有效的起始时间与有效的截止时间
  拉链表是数据仓库保留数据历史版本的一种方法

2、拉链表原理
参见网址:https://blog.csdn.net/SunWuKong_Hadoop/article/details/91810916
参见网址:https://blog.csdn.net/qq_36041534/article/details/80563364

3、拉链表使用场景
  当你需要设计数据量非常大的表,同时,表中的某些字段会被更新操作。表的数据更新变化不是很大,为了保持历史的一些状态,需要查看历史快照信息(注意参见缓慢变化维 SCD)

4、拉链表适用情况
  数据量很大,表中某些字段会被更新,但是变化的频率不是很高,业务需求又需要统计这种变化状态。每天全量一份数据,不仅浪费存储空间,有时可能业务统计也比较麻烦

5、拉链表实现步骤

6、查询性能
  拉链表当然也会遇到查询性能的问题,比如说我们存放了5年的拉链数据,那么这张表势必会比较大,当查询的时候性能就比较低了,两个思路来解决:
  1> 在一些查询引擎中,我们对start_date和end_date做索引,这样能提高不少性能
  2> 保留部分历史数据,例如一张表存放全量的拉链表数据,然后再对外暴露一张只提供近3个月数据的拉链表

流水表存放的是一个用户的变更记录,比如在一张流水表中,一天的数据中,存放一个用户的每条修改记录
但是在拉链表中只有一条记录。这是拉链表设计时需要注意的一个粒度问题。我们当然也可以设置的粒度更小一些,一般按天就足够

注意:拉链表和流水表的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值