拉链表的实现过程通常如下:
- 采集当日全量数据:将当日的全量数据存储到
nd
(当日)表中。 - 获取昨日全量数据:从历史表中取出昨日全量数据,存储到
od
(上日数据)表中。 - 找出当日新增和变化的数据:通过对
nd
表和od
表进行全字段比较,将nd - od
的结果记录到table_i
表中,该表存储的是当日新增和变化的数据,即日增量数据。 - 找出状态到此结束需要封链的数据:同样通过对
nd
表和od
表进行全字段比较,将od - nd
的结果记录到table_u
表中。这些数据是状态到此结束需要封链的数据,即需要修改end_date
的数据。 - 准备历史表:历史表(
his
)比nd
表和od
表多两个字段,分别是start_date
(开始日期)和end_date
(结束日期)。 - 插入新增数据到历史表:将
table_i
表的内容全部插入到his
表中,插入时start_date
设为当日,end_date
可设为 '9999-12-31',表示当前数据有效。 - 更新封链记录的结束日期:将历史表(
his
)和table_u
表进行比较(start_date
和end_date
除外,以table_u
表为准),两者交集的数据将其end_date
改成当日,说明该记录失效。
通过以上步骤,就可以实现拉链表的维护,既能满足反映数据的历史状态,又可以最大程度地节省存储。在取数据时,对日期进行条件选择即可获取不同时间点的数据状态。