推广 热搜: 行业  机械  设备    系统  教师    参数  经纪  蒸汽 

mysql中做拉链表 数据库 拉链表

   日期:2025-01-03     移动:http://sjzytwl.xhstdz.com/mobile/quote/86757.html


拉链表是维护历史状态、以及最新状态的一种方式。

拉链表对快照表进行了优化,根据拉链粒度(一般为时间)的不同,去除了在粒度范围内不变的数据。

拉链表可以维护两个时间(start_time, end_time),来标识当前记录是否还有效,以及更好的定位历史数据

首先要有某一时刻的全量数据,作为起始表

其次要有流水表或者快照表两者其一,作为变化的依据

在数据仓库中,经常会用历史数据和时间维度做数据分析。而保存历史数据最常见的方案是使用拉链表进行存储。

创建测试表(以MySQL为例子)

插入数据

所以2020年5月7日的订单情况如下

第二天订单发生改变

2020年5月8日订单详情

到了2020年5月9日,部分订单再次发生了改变,并且有了新的订单:

5月9日状态:

对于上述表来说,由于没有保存历史数据,因此查询“100001”订单的状态历史就查询不到。如果使用历史拉链表来存储以上信息,则存储内容如下:

历史拉链表中,增加了记录的生命周期开始时间和结束时间,一条记录的生命周期为 [生命周期开始时间,生命周期结束时间)。

将原来的数据导入到历史拉链表,最终结果如下

此时的订单状态

如果需要查询2020年5月8日的历史快照,可以直接写出SQL:

该SQL的查询结果与之前2020-05-08的数据一致:

本文地址:http://sjzytwl.xhstdz.com/quote/86757.html    物流园资讯网 http://sjzytwl.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号