拉鍊表:維護歷史狀態,以及最新狀態數據的一種表,拉鍊表根據拉鏈粒度的不同,實際上相當於快照,只不過做了最佳化,去除了一部分不變的記錄,通過拉鍊表可以很方便的還原出拉鏈時點的客戶記錄。
基本介紹
- 中文名:拉鍊表
- 作用:數據倉庫的最佳化方案
拉鍊表設計:,拉鍊表的作用:,
拉鍊表設計:
在企業中,由於有些流水錶每日有幾千萬條記錄,數據倉庫保存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' )。
拉鍊表的作用:
1. 數據量比較大。
2. 表中的部分欄位會被更新,比如用戶的地址,銀行利率,訂單的狀態等。
3. 需要查看某一個時間點或者時間段的歷史快照信息,比如,查看利率在歷史某一個時間點的狀態。
4. 變化的比例和頻率不是很大,比如,總共有1000萬的會員,每天新增和發生變化的有10萬左右。
5. 如果對這邊表每天都保留一份全量,那么每次全量中會保存很多不變的信息,對存儲是極大的浪費;
拉鏈歷史表,既能滿足反應數據的歷史狀態,又可以最大程度的節省存儲。