首頁技術文章正文

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

更新時間:2021-06-08 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

數(shù)據(jù)的加載是ETL的最后一個階段,它的主要任務是將數(shù)據(jù)從臨時數(shù)據(jù)表或文件中加載到指定的數(shù)據(jù)倉庫中。-般來說,可以通過編寫sQL語句和利用加載工具將數(shù)據(jù)加載到數(shù)據(jù)倉庫中。ETL的數(shù)據(jù)加載和數(shù)據(jù)抽取類似,將數(shù)據(jù)加載到目標數(shù)據(jù)表或者數(shù)據(jù)倉庫的過程中可分為全量加載、增量加載以及批量加載。下面詳細介紹一下ETL的全量加載、增量加載以及批量加載。


1.全量加載

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


2.增量加載

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

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

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

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

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

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

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


3.批量加載

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



猜你喜歡:

Zookeeper是什么?有哪些顯著特點?

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

?maplotib API介紹

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

分享到:
在線咨詢 我要報名
和我們在線交談!