数据变化记录---拉链表

拉链表是一种记录数据变化的存储模型。正如拉链一样,有开链和闭链两种形态。主要用来维护数据的历史版本信息。

一个场景🎬

在电商购物🛍️过程中,常常会展示物流状态,比如我在京东购买的Aptamil奶粉,显示的物流信息2023-07-30 09:27:15 订单打印完成

2023-07-30 09:57:54 捡货完成

2023-07-30 17:41:09 分捡完成

2023-07-30 17:57:31 准备发往西安

... ...

2023-07-31 21:41:15 订单已签收

再比如,想要知道某一时刻数据的历史状态。2008年我使用的QQ网名是什么?

一些思考🤔

数据库中存储的数据多种多样,什么样的数据需要历史记录这点非常重要,毫无疑问,要获取数据的历史记录无疑会增加存储开销。

和一般的表设计不同,拉链表需要一个start_time和end_time,用来表示在这个时间区间内表中数据的状态。并且对于同一个数据不同记录来说,后一条的start_time往往是上一条的end_time,他们就像拉链一样,一环接着一环。对于当前生效的记录,end_time往往是一个未来遥远的时间。

根据时间的颗粒度大小,也可以设计拉链的松紧,可以每一次变更都进行记录,也可以按找分钟,小时,天进行粗力度的记录。

拉链表可以和原始业务表在一个数据库中,也可以不在一个数据库中,在数据同步的过程中,可以监听数据变更的接口,通过AOP拦截请求去更新拉链表,也可以通过监听数据库日志异步的更新拉链表,如果数据库变更有对应的message事件,也可以通过监听消息队列进行更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值