1、增量更新的幾種方式
增量更新的本質(zhì),其實是獲取源表中數(shù)據(jù)變化的情況(增、刪、改),然后將源表中發(fā)生的變化同步至目標(biāo)表中。
不同的方式,獲取源表中數(shù)據(jù)變化的情況不一樣,受技術(shù)的限制、表結(jié)構(gòu)的限制,某些方式可能無法獲取到完整的數(shù)據(jù)變化情況,因此只能適用于特定的場景。
方式 | 簡述 | 適用場景 | 詳述 | 優(yōu)點 | 缺點 | |
---|---|---|---|---|---|---|
時間戳增量1 | 記錄每次讀數(shù)完成時的最大時間戳,后續(xù)讀數(shù)時只獲取源頭表中新增的數(shù)據(jù),將其增量寫入到目標(biāo)表。 |
|
|
性能好 |
|
|
時間戳增量2 | 通過時間戳獲取源頭表新增和修改的數(shù)據(jù),然后將其寫入到目標(biāo)表。 |
|
|
性能尚可,能夠獲取改動的源頭數(shù)據(jù) |
|
|
觸發(fā)器 | 為抽取的表建立觸發(fā)器,一般要建立插入、修改、刪除三個觸發(fā)器,源頭表的數(shù)據(jù)發(fā)生變化時,觸發(fā)器將變化的數(shù)據(jù)寫入臨時表,抽取線程再從臨時表中抽取數(shù)據(jù)。 | 所有場景 |
|
性能好 覆蓋場景全面 |
成本高,需要建觸發(fā)器 | |
全表對比(MD5) | 為源頭表建立一個結(jié)構(gòu)類似的MD5臨時表,每次抽數(shù)時對源頭表和MD5臨時表進(jìn)行MD5校驗碼比對,從而決定源頭表中的數(shù)據(jù)是新增、修改還是刪除,同時更新MD5校驗碼。 | 所有場景 |
|
覆蓋場景全面 | 需要全表對比,性能差 | |
全表對比(指定字段) | 對比目標(biāo)表和源頭表的幾個關(guān)鍵字段,獲取源頭表和目標(biāo)表不一致的數(shù)據(jù),然后增量寫入到目標(biāo)庫。 | 所有場景 |
|
覆蓋場景全面 | 需要對比大量字段,性能差 | |
分析日志 | 通過分析數(shù)據(jù)庫自身的日志來判斷變化的數(shù)據(jù)。 | 所有場景 | 該方式通過分析數(shù)據(jù)庫自身的日志來判斷變化的數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫系統(tǒng)都會將所有的DML操作存儲在日志文件中,以實現(xiàn)數(shù)據(jù)庫的備份和還原功能。ETL增量抽取進(jìn)程通過對數(shù)據(jù)庫的日志進(jìn)行分析,提取對相關(guān)源表在特定時間后發(fā)生的DML操作信息,就可以得知自上次抽取時刻以來該表的數(shù)據(jù)變化情況,從而指導(dǎo)增量抽取動作。 有些數(shù)據(jù)庫系統(tǒng)提供了訪問日志的專用的程序包(例如Oracle的LogMiner),使數(shù)據(jù)庫日志的分析工作得到大大簡化。 |
性能好 | 數(shù)據(jù)庫權(quán)限問題,未必能夠提供日志分析權(quán)限 |
2、各種方式的差異排序
按同步性能由高到低排序依次為: 時間戳 > 日志解析 > 觸發(fā)器 > 全表比對
按配置復(fù)雜由低到高排序依次為: 全表比對 <日志解析 < 觸發(fā)器 < 時間戳
按易維護(hù)性由高到低排序依次為: 觸發(fā)器 > 日志解析 > 時間戳 > 全表比對
按系統(tǒng)影響由低到高排序依次為:日志解析 < 時間戳 < 全表比對 < 觸發(fā)器
備注:基于目前研究的結(jié)果,增量更新僅適用于明細(xì)數(shù)據(jù)的讀寫場景,不適用于包含單表計算、多表關(guān)聯(lián)的場景,原因是獲取的數(shù)據(jù)并不是全量數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-462441.html
參考:文章來源地址http://www.zghlxwxcb.cn/news/detail-462441.html
- ETL實現(xiàn)增量抽取的幾種方式 - ligfoo - 博客園 (cnblogs.com)
- 數(shù)據(jù)庫增量數(shù)據(jù)的幾種方式_shylhd的專欄-CSDN博客
- 一般數(shù)據(jù)庫增量數(shù)據(jù)處理和數(shù)據(jù)倉庫增量數(shù)據(jù)處理的幾種策略 - BIWORK - 博客園 (cnblogs.com)
到了這里,關(guān)于數(shù)倉知識07:數(shù)據(jù)增量更新的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!