大數(shù)據(jù)模式 etl如何實現(xiàn)業(yè)務(wù)原系統(tǒng)數(shù)據(jù)接入?數(shù)據(jù)增量全量抽取有幾種方案?
etl如何實現(xiàn)業(yè)務(wù)原系統(tǒng)數(shù)據(jù)接入?數(shù)據(jù)增量全量抽取有幾種方案?我們現(xiàn)在做的項目對ETL很有用。項目剛成立兩三個月。目前,我指揮著四個人。明年,我們計劃再增加四個人?,F(xiàn)在,兩個人在做ETL數(shù)據(jù)提取,兩個
etl如何實現(xiàn)業(yè)務(wù)原系統(tǒng)數(shù)據(jù)接入?數(shù)據(jù)增量全量抽取有幾種方案?
我們現(xiàn)在做的項目對ETL很有用。
項目剛成立兩三個月。目前,我指揮著四個人。明年,我們計劃再增加四個人?,F(xiàn)在,兩個人在做ETL數(shù)據(jù)提取,兩個人在做Java,我的戰(zhàn)斗力可以算作三個人在做Java。
為什么要單獨提取數(shù)據(jù)?
系統(tǒng)現(xiàn)在有大量的查詢,這些查詢是實時查詢。有些查詢涉及幾十個表的關(guān)聯(lián),這些表少了幾千萬,大了幾億,所以有些接口的返回速度非常慢。
我們整理出一些可以接受T1的接口,提取相關(guān)數(shù)據(jù),處理一次,把幾十個表的數(shù)據(jù)處理成一個完整的數(shù)據(jù),保存在mongodb中,然后提供接口服務(wù)。
以前,界面需要幾秒鐘才能返回,有些甚至需要十幾秒鐘?,F(xiàn)在,對于500個并發(fā)應(yīng)用程序,它基本上可以在100毫秒內(nèi)返回。
怎么實現(xiàn)數(shù)據(jù)的增量抽取,數(shù)據(jù)同步?
使用數(shù)據(jù)庫或系統(tǒng)變量的當前時間。Informatica中的$$sysdate是表示當前系統(tǒng)時間的系統(tǒng)變量。有了這個變量,我們可以使用以下表達式每天提取增量數(shù)據(jù):timestamp field>=true($$sysdate–1)。這種方法相對簡單,但缺乏靈活性。不僅需要開發(fā)相應(yīng)的程序來實現(xiàn)完全提取,還需要修改每個任務(wù)程序的代碼來改變提取時間范圍。例如,如果我們?nèi)烨靶枰崛?shù)據(jù),我們需要修改上面的表達式如下:timestamp字段>=true($$sysdate–3)?使用參數(shù)文件Informatica,我們可以從參數(shù)文件中讀取變量值,因此我們可以使用讀取參數(shù)文件中參數(shù)值的方法來實現(xiàn)增量提取。參數(shù)文件中至少應(yīng)有兩個參數(shù):開始時間參數(shù)和結(jié)束時間參數(shù)。我們需要以下表達式:start time parameter< timestamp field<=end time field。只要修改參數(shù)文件的參數(shù)值,就可以靈活控制增量提取的時間范圍,包括全提取。對于正常提取過程,此修改操作由程序自動完成。每次提取前,以上次提取的結(jié)束時間作為當前提取的開始時間,以當前系統(tǒng)時間作為提取的結(jié)束時間,修改參數(shù)文件。只有在某些例外情況下,例如上次提取失敗,才需要手動修改參數(shù)文件。由于參數(shù)文件是程序的外部文件,如果文件被錯誤刪除或修改,將導(dǎo)致任務(wù)失敗或數(shù)據(jù)提取錯誤。?use parameter table參數(shù)表的用法與參數(shù)文件的用法類似,只是我們在數(shù)據(jù)庫表中存儲了兩個時間參數(shù)。但由于參數(shù)表需要在數(shù)據(jù)源系統(tǒng)中構(gòu)建,因此可能不允許。如果有多個不同的數(shù)據(jù)源系統(tǒng),則需要為每個系統(tǒng)建立一個參數(shù)表。這樣,在目標數(shù)據(jù)庫中建立一個參數(shù)表來存儲時間范圍參數(shù)。在每次提取之前,通過讀取參數(shù)表中的數(shù)據(jù)生成一個參數(shù)文件。每個提取任務(wù)都從參數(shù)文件中讀取參數(shù)。因為每個參數(shù)文件都會被重新生成,減少了被錯誤刪除或修改的概率,同時也不需要修改數(shù)據(jù)源系統(tǒng),這是一種常用且應(yīng)用廣泛的方式