一、增量加載的分類
- 更新、插入:Overwrite
- 刪除、更新、插入:Delete and Overwrite
二、刪除情況下的更新策略
- 在數(shù)據(jù)塊中包含需要刪除的數(shù)據(jù)。
- 指定刪除條件,獨立處理,需要考慮參數(shù)如何計算、存儲。
2.1. 比較符:>= > = < <= in like 等。
2.2 值類型:數(shù)組、基礎(chǔ)類型。
三、一些心得和經(jīng)驗
最早的時候,初步接觸增量加載是通過SSIS接觸的,使用過一個方案,流程如下:
- 將本次執(zhí)行時間定義為時間戳,從數(shù)據(jù)庫讀入上次時間戳
- 加載上次時間戳到本次時間戳的數(shù)據(jù),使用merge into語句來處理insert、update、delete
- 本次時間戳改為上次時間戳,存入數(shù)據(jù)庫
這個方案其實是存在問題的,主要有兩種情況:
- 異常管控比較低級,出現(xiàn)問題只能自己手動去處理失敗的ETL,無法保證異常情況下的數(shù)據(jù)一致性,異常發(fā)生下一次執(zhí)行數(shù)據(jù)不出問題才是重要的。
- ETL對生產(chǎn)的影響。
一個好的增量方案,應(yīng)該能夠做數(shù)據(jù)處理時保證不影響生產(chǎn),且能有異常發(fā)生下較好的數(shù)據(jù)一致性保證策略,這才是重要的事情。
- 盡量使用備表替換的策略。
- 增量盡量不要使用數(shù)據(jù)庫存儲的時間戳,而要依靠入庫的數(shù)據(jù)進行開始節(jié)點判斷的策略。
- 在前兩者的基礎(chǔ)上對最終進行生產(chǎn)替換的異常做詳細分類,并做相應(yīng)的處理方案。
- 所有的目標都是數(shù)據(jù)一致性、增量加載方法化。