1.什么是拉链表
拉链表就像衣服的拉链一样重要,实用性非常强,使用频率非常高。
所谓的拉链,就是历史记录,记录一个事物的开始到结束所变化的所有信息。
“拉链表是一种针对数据仓库设计中表存储数据的方式而定义的数据模型,它有点类似于快照,它通过记录每个数据项的生效日期和失效日期,来实现对数据变化的历史追踪,从而避免了按每一天存储所有记录造成的海量存储问题。拉链表的设计旨在优化数据仓库的性能,同时保留数据的历史变化信息。
拉链表的核心原理在于,每条数据记录都有一个生效日期和一个失效日期。当数据发生变化时,不是简单地更新原始记录,而是在原始记录失效的基础上,生成一个新的记录,新记录的生效日期为变化时间,而失效日期则设置为一个远未来的日期,表示该记录在当前和未来一直有效。当需要查询某个时间点的数据状态时,可以通过筛选生效日期和失效日期来获取。
2.拉链表的使用-实现
拉链表的设计考虑了数据仓库中常见的一些需求,如:
- 需要处理大量数据。
- 表中的部分字段需要更新,如用户地址、产品描述信息、订单状态等。
- 需要查看某个时间点或时间段的历史快照信息。
- 查看某个用户在过去某段时间内更新了多少次等。
获取当日数据
比较当日数据和昨日数据,找出新增(删除)数据和变化后数据
删除历史数据表中的删除数据和变化前数据
将新增数据和变化后数据插入历史数据表中,把开始日期置为当前日期,结束日期置为最大日期
将删除数据和变化前数据插入历史数据表中,把结束日期置为当前日期。
拉链表还适用于处理缓慢变化的数据(缓慢变化维)
3.拉链表的优缺点
数仓拉链表的优点主要:
- 历史数据追踪与快照查询
- 节省存储空间
- 查询性能优化
- 支持复杂的数据分析需求
- 易于维护和管理
数仓拉链表的缺点主要:
- 增加存储空间
- 降低系统检索和处理数据的效率
- 缺乏历史数