拉链表的原理及简单实现
数新网络官网已全新上线,欢迎点击访问
www.datacyber.com 数新网络_让每个人享受数据的价值
1 什么是拉链表
拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。比如下面的表:
编辑
上面就是一个简单的拉链表,记录了每个用户随着时间的变化其等级的变动情况。
2 拉链表的使用场景
在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:
有一些表的数据量很大,比如一张用户表,大约 10 亿条记录,50 个字段,这种表,即使使用 ORC 压缩,单张表的存储也会超过 100G,在 HDFS 使用双备份或者三备份的话就更大一些。
表中的部分字段会被 update 更新操作,如用户联系方式,产品的描述信息,订单的状态等等。
需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
表中的记录变化的比例和频率不是很大,比如,总共有 10 亿的用户,每天新增和发生变化的有 200 万左右,变化的比例占的很小。
3 拉链表的实现
创建 2020-5-1 的数据
复制代码
数据如下:
编辑
创建 2020-5-2 的数据
复制代码
数据如下:
编辑
创建历史表存储 5 月 1 日数据,并对格式进行整理
复制代码
数据如下:
编辑
创建变动表,找到 5 月 2 日表里面变动和新增的
复制代码
数据如下:
最终结果
level_his 为基础表
把变动表的数据插入到 level_his 里面,并修改时间
复制代码
然后就可以得到最终的结果了
数据如下:
最后就可以得到我们文章开头提到的表格了。
版权声明: 本文为 InfoQ 作者【数新网络官方账号】的原创文章。
原文链接:【http://xie.infoq.cn/article/d6f93f04fe9dfe658abc71147】。文章转载请联系作者。
评论