首頁(yè)技術(shù)文章正文

ETL數(shù)據(jù)加載:全量加載、增量加載和批量加載

更新時(shí)間:2021-06-08 來(lái)源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

數(shù)據(jù)的加載是ETL的最后一個(gè)階段,它的主要任務(wù)是將數(shù)據(jù)從臨時(shí)數(shù)據(jù)表或文件中加載到指定的數(shù)據(jù)倉(cāng)庫(kù)中。-般來(lái)說(shuō),可以通過(guò)編寫(xiě)sQL語(yǔ)句和利用加載工具將數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中。ETL的數(shù)據(jù)加載和數(shù)據(jù)抽取類似,將數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)表或者數(shù)據(jù)倉(cāng)庫(kù)的過(guò)程中可分為全量加載、增量加載以及批量加載。下面詳細(xì)介紹一下ETL的全量加載、增量加載以及批量加載。


1.全量加載

全量加載是指全表刪除后再進(jìn)行全部(全量)數(shù)據(jù)加載。從技術(shù)角度來(lái)說(shuō),全量加載和增量加載相比,全量加載更簡(jiǎn)單。一般只需要在數(shù)據(jù)加載之前將目標(biāo)表清空,再將源數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行導(dǎo)人。但是,由于數(shù)據(jù)量、系統(tǒng)資源和數(shù)據(jù)實(shí)時(shí)性的要求,很多情況下都需要使用增量加載機(jī)制。


2.增量加載

增量加載是指目標(biāo)表僅更新源數(shù)據(jù)表中變化的數(shù)據(jù)。增量加載的關(guān)鍵在于如何正確設(shè)計(jì)相應(yīng)的方法,用于從源數(shù)據(jù)表中抽取增量的數(shù)據(jù),以及變化“牽連”數(shù)據(jù)(雖沒(méi)有變化,但受到變化數(shù)據(jù)影響的數(shù)據(jù))。同時(shí),將這些變化的和未變化但受到影響的數(shù)據(jù),在完成相應(yīng)的邏輯轉(zhuǎn)換后更新到數(shù)據(jù)倉(cāng)庫(kù)中。

數(shù)據(jù)加載的性能和作業(yè)失敗后可進(jìn)行恢復(fù)重啟的易維護(hù)性,需要一個(gè)有效的增量抽取機(jī)制的支持。因?yàn)樵?一個(gè)有效的增量抽取機(jī)制,ETL能夠?qū)I(yè)務(wù)系統(tǒng)中變化的數(shù)據(jù)按一定的頻率準(zhǔn)確地進(jìn)行捕獲,并且不會(huì)對(duì)業(yè)務(wù)系統(tǒng)造成太大的壓力,也不會(huì)影響現(xiàn)有的業(yè)務(wù)。

ETL的增量加載類似于增量抽取,同樣有4種方式,分別是時(shí)間戳方式、日志表方式、全表對(duì)比方式、全表刪除插入方式,具體介紹如下所示。

(1)時(shí)間戳方式,即在業(yè)務(wù)表中統(tǒng)-添加-個(gè)字段作為時(shí)間戳,當(dāng)聯(lián)機(jī)分析處理(OLAP)系統(tǒng)更新修改業(yè)務(wù)數(shù)據(jù)時(shí),同時(shí)也會(huì)修改時(shí)間戳字段值,這時(shí)就將更新修改的數(shù)據(jù)加載到目標(biāo)表中。

(2)日志表方式,即在OLAP系統(tǒng)中添加日志表,業(yè)務(wù)數(shù)據(jù)發(fā)生變化時(shí),更新維護(hù)日志表內(nèi)容。

(3)全表對(duì)比方式,即抽取所有源數(shù)據(jù),在加載目標(biāo)表之前先根據(jù)主鍵和字段進(jìn)行數(shù)據(jù)比對(duì),有更新的數(shù)據(jù)就進(jìn)行更新或插入。

(4)全表刪除插入方式,刪除目標(biāo)表中的數(shù)據(jù),將源數(shù)據(jù)表中的數(shù)據(jù)全部加載到目標(biāo)表中。


3.批量加載

通常,對(duì)于幾十萬(wàn)條記錄的數(shù)據(jù)遷移而言,采取DML(數(shù)據(jù)操縱語(yǔ)言)的insert、update、delete等語(yǔ)句能夠較好地將數(shù)據(jù)遷移到目標(biāo)數(shù)據(jù)庫(kù)中。然而,當(dāng)數(shù)據(jù)遷移量過(guò)大時(shí),DML語(yǔ)句執(zhí)行時(shí)生成的事物日志(事務(wù)日志是一個(gè)與數(shù)據(jù)庫(kù)文件分開(kāi)的文件,用于存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的所有更改,并全部記錄插人、更新、刪除、提交、回退和數(shù)據(jù)庫(kù)模式變化)和約束條件將大大影響加載性能,故需要針對(duì)數(shù)據(jù)采取批量加載處理。



猜你喜歡:

Zookeeper是什么?有哪些顯著特點(diǎn)?

怎樣定義Scala數(shù)組?數(shù)組遍歷和數(shù)組轉(zhuǎn)換是怎樣操作的?

?maplotib API介紹

黑馬程序員python+大數(shù)據(jù)培訓(xùn)課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!