999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Kettle數(shù)據(jù)傳輸與同步方法的研究

2021-05-17 15:02:22郭德卿徐國強李娜
汽車實用技術(shù) 2021年8期
關(guān)鍵詞:數(shù)據(jù)庫作業(yè)方法

郭德卿,徐國強,李娜

(中國汽車技術(shù)研究中心有限公司 中汽數(shù)據(jù)(天津)有限公司,天津 300300)

引言

隨著數(shù)字時代的到來,數(shù)據(jù)科學(xué)技術(shù)不斷發(fā)展,社會各行各業(yè)都越發(fā)地重視數(shù)據(jù),數(shù)據(jù)使得行業(yè)間更加密切,企業(yè)對數(shù)據(jù)需求的及時性也相應(yīng)提高。基礎(chǔ)數(shù)據(jù)點對點傳輸、數(shù)據(jù)更新同步則尤為重要。

數(shù)據(jù)傳輸和同步的方法多種多樣,本文將介紹以Kettle作為工具的一些使用方法。

Kettle是一款開源的ETL工具,主要用來完成數(shù)據(jù)的抽取,清洗、轉(zhuǎn)換和加載等數(shù)據(jù)處理方面的工作。Kettle不僅提供了簡單明了的圖形界面,它的流程式設(shè)計也非常方便易用。功能特點方面,Kettle支持全面的數(shù)據(jù)訪問及多平臺部署,擁有優(yōu)秀的插件架構(gòu)擴展性,經(jīng)過長期的優(yōu)化升級,全面實現(xiàn)高效穩(wěn)定的數(shù)據(jù)處理[1]。

1 Kettle作業(yè)和轉(zhuǎn)換

Kettle的控件包含兩個部分,即作業(yè)(Job)和轉(zhuǎn)換(Trans-form)。

作業(yè)屬于步驟流,是將若干獨立的步驟,按照先后的執(zhí)行順序形成一個工作流。生活中大部分事務(wù)都可以形成工作流,比如我們沖咖啡這一舉動,需要經(jīng)過以下步驟:燒水、準備咖啡杯、倒入咖啡,開水沖泡。每個步驟有著先后順序,按照順序組合后,就完成了沖咖啡的舉動。Kettle作業(yè)原理也是如此,作業(yè)中的每一個步驟,都必須等前面的步驟執(zhí)行完畢,后面的步驟才會執(zhí)行,如此待完成全部步驟后就完成了此作業(yè)。

轉(zhuǎn)換屬于數(shù)據(jù)流,是指從輸入(Input)到輸出(Output)之間的數(shù)據(jù)流動,針對的是在數(shù)據(jù)流動過程中的每一條記錄的處理,比如通過一定邏輯的輸入,經(jīng)過轉(zhuǎn)換,再輸出為我們想要的數(shù)據(jù)。轉(zhuǎn)換通常作為作業(yè)中的一個步驟而存在。轉(zhuǎn)換是Kettle開發(fā)的基礎(chǔ),也是本文主要介紹的功能模塊[2]。

2 Kettle關(guān)鍵技術(shù)

Kettle作為ETL工具包含了三方面核心技術(shù)功能,即抽取(Extract)、轉(zhuǎn)換(Transform)、裝載(Load)。

數(shù)據(jù)抽取是所有工作的前提,是將各種生產(chǎn)環(huán)境中的數(shù)據(jù)提取到開發(fā)環(huán)境中,一般情況下,企業(yè)在生產(chǎn)制造過程中,會產(chǎn)生大量的相關(guān)生產(chǎn)數(shù)據(jù),而我們的生產(chǎn)環(huán)境通常包含多個不同的數(shù)據(jù)源。Kettle可以支持多種數(shù)據(jù)源輸入,通常我們用到的有兩種:數(shù)據(jù)庫輸入和文本文件輸入。

圖1 數(shù)據(jù)輸入

然后通過預(yù)設(shè)定的邏輯進行數(shù)據(jù)轉(zhuǎn)換處理,通常有:字段選擇、過濾、排序和字段處理等。

圖2 數(shù)據(jù)轉(zhuǎn)換

最后輸出結(jié)果數(shù)據(jù),主要包括表輸出、插入/更新、文本輸出等(圖3)。

3 Kettel數(shù)據(jù)傳輸與同步的方法

Kettle以工作流的方式定義數(shù)據(jù)傳輸與同步的規(guī)則,通過執(zhí)行任務(wù)實現(xiàn)對數(shù)據(jù)的更新加載。此過程有多種方案可以采納,如:

(1)通過觸發(fā)器進行數(shù)據(jù)同步,此方法實現(xiàn)了實時數(shù)據(jù)同步,但由于要在生產(chǎn)環(huán)境建立觸發(fā)器,可能會對生產(chǎn)環(huán)境產(chǎn)生一定影響。

圖3 數(shù)據(jù)輸出

(2)通過時間戳進行數(shù)據(jù)同步,此方法原理是數(shù)據(jù)發(fā)生變化時,時間戳?xí)涗洈?shù)據(jù)發(fā)生變化的時間,根據(jù)時間比較進行數(shù)據(jù)傳輸同步。

(3)通過數(shù)據(jù)比較進行同步,此方法原理是兩邊數(shù)據(jù)比對進行數(shù)據(jù)傳輸同步,相對時間戳法效率較低,一般用于實時性較低的需求場景。

(4)通過全表拷貝進行同步,此方法是定期清空目標數(shù)據(jù)源,并將源數(shù)據(jù)整體導(dǎo)入目標數(shù)據(jù)源,此方案開發(fā)簡單,但只適用于體積較小的數(shù)據(jù)[3]。

以上四種方法,我們會根據(jù)不同的業(yè)務(wù)場景,酌情進行使用。在數(shù)據(jù)同步過程中,包含以下幾點核心處理環(huán)節(jié):

(1)數(shù)據(jù)庫連接:Kettle提供了多種數(shù)據(jù)庫連接方式,打開Kettle的DB連接中,可以配置所有數(shù)據(jù)庫的連接,包括JDBC、ODBC和JNDI,多數(shù)情況下,我們使用JDBC和ODBC兩種方式。值得注意的是在成功配置數(shù)據(jù)源之后,該數(shù)據(jù)源默認為局部數(shù)據(jù)源,可將此數(shù)據(jù)源共享為全局數(shù)據(jù)源,在創(chuàng)建其他新轉(zhuǎn)換時可直接使用。

(2)抽取數(shù)據(jù):Kettle數(shù)據(jù)抽取主要使用輸入模塊的表輸入來實現(xiàn),通過SELECT語句,從數(shù)據(jù)庫抽取輸入數(shù)據(jù)。提取表中數(shù)據(jù)后,選擇、比對、修改需要同步的數(shù)據(jù),根據(jù)業(yè)務(wù)邏輯進行相應(yīng)的新增、修改、刪除目標表的數(shù)據(jù),需要注意的是前后數(shù)據(jù)表需要同步數(shù)據(jù)的字段必須一一對應(yīng)。

(3)數(shù)據(jù)轉(zhuǎn)換:Kettle里面沒有單一的數(shù)據(jù)轉(zhuǎn)換步驟,是有許多步驟組合起來完成數(shù)據(jù)轉(zhuǎn)換的功能。由于各業(yè)務(wù)系統(tǒng)數(shù)據(jù)格式不統(tǒng)一、數(shù)據(jù)不規(guī)范,需要使用大量的數(shù)據(jù)清洗轉(zhuǎn)換工作來實現(xiàn)數(shù)據(jù)規(guī)范化,針對具體數(shù)據(jù)內(nèi)容,通過建立數(shù)據(jù)標準化邏輯,完成對基礎(chǔ)數(shù)據(jù)的規(guī)范化處理。Kettle一整套的數(shù)據(jù)處理轉(zhuǎn)換組件功能十分強大,下面就我們經(jīng)常用到的功能進行介紹:

增加常量,經(jīng)常用到ID作為主鍵,我們可以在Kettle中增加序列,并且能夠自定義序列步長;

計算器功能,做一些簡單的數(shù)學(xué)運算及日期相關(guān)計算;

字符串處理,替換指定字符,大小寫轉(zhuǎn)換和特殊字符轉(zhuǎn)換等;

行列轉(zhuǎn)換,先進行數(shù)據(jù)聚合排序,然后進行列轉(zhuǎn)換;

字段篩選,常用作數(shù)據(jù)轉(zhuǎn)換條件,當(dāng)滿足條件時可執(zhí)行其他轉(zhuǎn)換。

(4)數(shù)據(jù)校驗:基于各業(yè)務(wù)場景的數(shù)據(jù)質(zhì)量問題,實現(xiàn)數(shù)據(jù)項的基礎(chǔ)邏輯關(guān)系校驗,剔除不符合校驗規(guī)則的數(shù)據(jù),完成數(shù)據(jù)質(zhì)量檢查,解決業(yè)務(wù)數(shù)據(jù)排查困難的問題。

(5)數(shù)據(jù)輸出:Kettle數(shù)據(jù)輸出主要使用輸出模塊的表輸出來實現(xiàn),但根據(jù)業(yè)務(wù)需求不同,我們可以選擇需要的插件,比如插入/更新插件具備更新、插入等功能,但此插件相對于表輸出來說效率相對較低[4]。

4 Kettel數(shù)據(jù)傳輸與同步的應(yīng)用

對于數(shù)據(jù)及時性有較高要求的業(yè)務(wù)場景中,比如我們汽車產(chǎn)業(yè)中的生產(chǎn)制造數(shù)據(jù),每時每刻都會有汽車下線,這就是說汽車生產(chǎn)數(shù)據(jù)是實時變化的,要求我們數(shù)據(jù)同步相應(yīng)迅速快捷,此業(yè)務(wù)場景需要使用觸發(fā)器來實現(xiàn)數(shù)據(jù)的同步傳輸。以insert為例,我們在生產(chǎn)環(huán)境的源表中建立一個insert觸發(fā)器和一個表結(jié)構(gòu)與源表相同的臨時表,每當(dāng)有新數(shù)據(jù)插入時,都會將新插入的數(shù)據(jù)自動的導(dǎo)入臨時表,然后使用全表拷貝的方法將臨時表同步到開發(fā)環(huán)境中,并將臨時表插入目標表中,這樣就完成了數(shù)據(jù)庫之間增量數(shù)據(jù)的更新。除了insert可以建立觸發(fā)器,還可以在update和delete時建立觸發(fā)器,原理是一樣的。

在日常工作中,我們用到最多的數(shù)據(jù)同步方法是時間戳法。相較于觸發(fā)器的使用,時間戳開發(fā)和使用上更加簡單,不足之處就是時間戳必須在兩邊增加一個時間字段,會占用存儲空間,并且此方法不能進行delete的同步操作。時間戳法使用上,我們首先要創(chuàng)建一個時間戳表,記錄每一次抽取數(shù)據(jù)的時間。然后,每次獲取時間戳中最后一次抽取數(shù)據(jù)的時間,我們采用大于max(取數(shù)時間)作為同步條件,取到上次抽取以后的數(shù)據(jù),再將其插入到目標表中。最后將本次取數(shù)時間插入時間戳表,完成時間戳的更新,為下一次數(shù)據(jù)同步做準備。具體工作流程如下:

圖4 數(shù)據(jù)轉(zhuǎn)換

圖5 表輸入

數(shù)據(jù)比較的同步方法,多數(shù)情況在需要將新老數(shù)據(jù)對比,做相應(yīng)操作轉(zhuǎn)換中進行數(shù)據(jù)同步,可根據(jù)數(shù)據(jù)比對變化做相應(yīng)的刪除,插入和更新操作。相對時間戳法,數(shù)據(jù)比較法是一個更加完善的數(shù)據(jù)同步方法,但由于同步效率較低,我們一般用于數(shù)據(jù)體量相對較小的數(shù)據(jù)庫中。它的核心思想是將新老數(shù)據(jù)合并處理,根據(jù)主鍵判斷兩表對應(yīng)數(shù)據(jù)是否一致,合并記錄后會形成標識位,用于判斷每一條數(shù)據(jù)的狀態(tài),即更新、刪除、新增和不變。最后根據(jù)數(shù)據(jù)狀態(tài)標識來對目標表進行刪除、插入和更新等相對應(yīng)的操作。

圖6 表輸出

圖7 數(shù)據(jù)同步

全表拷貝法,顧名思義,就是清空目標表,將源表整體插入到目標表中,此種方法多數(shù)用于維度表同步方案中,要求更新頻次較低,數(shù)據(jù)量較少,同時開發(fā)維護也最為簡單便捷。

在進行數(shù)據(jù)同步之前,我們需要根據(jù)業(yè)務(wù)需求,制訂一套專業(yè)的數(shù)據(jù)傳輸與同步方案,編譯為Kettle可識別的流程和規(guī)則,從而持續(xù)高效地實現(xiàn)數(shù)據(jù)的自動同步[5]。

5 結(jié)束語

本文通過對Kettle工具在數(shù)據(jù)傳輸與同步的應(yīng)用研究,針對四種數(shù)據(jù)傳輸與同步方法,進行了詳細的解析說明。實現(xiàn)了數(shù)據(jù)庫中新老數(shù)據(jù)表的同步更新,構(gòu)建了業(yè)務(wù)數(shù)據(jù)庫的正常維護流程。Kettle允許用戶管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的開發(fā)環(huán)境,實現(xiàn)數(shù)據(jù)傳輸與同步。Kettle支持絕大部分數(shù)據(jù)庫,可以做到不同類型的多個數(shù)據(jù)庫之間數(shù)據(jù)的同步更新,既滿足了業(yè)務(wù)場景需求,降低了運維管理人員成本,提高了數(shù)據(jù)庫使用效率,解決了不同數(shù)據(jù)庫之間的共享問題。

猜你喜歡
數(shù)據(jù)庫作業(yè)方法
快來寫作業(yè)
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
作業(yè)
故事大王(2016年7期)2016-09-22 17:30:08
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
我想要自由
主站蜘蛛池模板: 美女一级毛片无遮挡内谢| 亚洲综合色区在线播放2019 | 在线观看的黄网| 日韩精品一区二区深田咏美| 亚洲精品第五页| 秘书高跟黑色丝袜国产91在线| 1024你懂的国产精品| 成人噜噜噜视频在线观看| 亚洲精品福利视频| 国产人碰人摸人爱免费视频| 欧美h在线观看| 伊人精品成人久久综合| 精品国产乱码久久久久久一区二区| 日韩成人在线网站| 直接黄91麻豆网站| 国产噜噜噜| 亚洲欧美h| 妇女自拍偷自拍亚洲精品| 久久精品一品道久久精品| 香蕉在线视频网站| 亚洲av片在线免费观看| 国产亚洲精久久久久久久91| 激情在线网| 毛片网站观看| 玖玖精品视频在线观看| 精品99在线观看| 亚洲另类国产欧美一区二区| 国产福利小视频在线播放观看| 国产成人啪视频一区二区三区| 综合色天天| h网址在线观看| 试看120秒男女啪啪免费| 国产又爽又黄无遮挡免费观看| 91精品情国产情侣高潮对白蜜| 国产剧情国内精品原创| 婷婷色中文| 国产精品毛片一区视频播| 欧美一级黄色影院| 欧美成一级| 在线亚洲精品自拍| 亚洲日韩AV无码精品| 亚洲AV无码乱码在线观看裸奔 | 丰满少妇αⅴ无码区| 18禁不卡免费网站| 四虎永久免费在线| 国模沟沟一区二区三区| 中文字幕1区2区| 亚洲高清无码精品| 波多野结衣一区二区三区四区视频 | 欧美精品v| 亚洲精品片911| 亚洲成人高清无码| 午夜福利亚洲精品| 五月婷婷伊人网| 欧美精品高清| 伊人AV天堂| 丁香婷婷激情网| 亚洲乱码精品久久久久..| 在线亚洲精品自拍| 亚洲区第一页| 亚洲午夜国产精品无卡| 超清无码熟妇人妻AV在线绿巨人| 亚洲中文在线视频| 国禁国产you女视频网站| 国产国模一区二区三区四区| 国产在线观看精品| 日韩无码一二三区| 欧美亚洲欧美区| A级毛片无码久久精品免费| 波多野结衣国产精品| 久久中文电影| 国产精品污污在线观看网站| 亚洲第一视频网站| 国产另类乱子伦精品免费女| 国产精品露脸视频| 情侣午夜国产在线一区无码| 亚洲天堂在线免费| 国产乱子伦无码精品小说| 国产成人精品18| 日韩第八页| 毛片久久久| 日韩a在线观看免费观看|