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