跟小D每日学口语

拉链表设计

 在企业中,由于有些流水表每日有几千万条记录,数据仓库保存5年数据的话很容易不堪重负,因此可以使用拉链表的算法来节省存储空间。

1.采集当日全量数据存储到 ND(当日) 表中。 
2.可从历史表中取出昨日全量数据存储到 OD(上日数据)表中。
3.用ND-OD为当日新增和变化的数据(即日增量数据)。

两个表进行全字段比较,将结果记录到tabel_I表中

4.用OD-ND为状态到此结束需要封链的数据。 (需要修改END_DATE)

两个表进行全字段比较,将结果记录到tabel_U表中 
5.历史表(HIS)比ND表和OD表多两个字段(START_DATE,END_DATE) 
6.将tabel_I表的内容全部insert插入到HIS表中。START_DATE='当日',END_DATE可设为'9999-12-31' 
7.更新封链记录的END_DATE

历史表(HIS)和tabel_U表比较,START_DATE,END_DATE除外,以tabel_U表为准,两者交集将其END_DATE改成当日,说明该记录失效。 
8。取数据时对日期进行条件选择即可,如:取20100101日的数据为 
(where START_DATE<='20100101' and END_DATE>'20100101' )

posted @ 2012-09-11 22:54  Danny Chen  阅读(19547)  评论(0编辑  收藏  举报