Kettle 實現(xiàn)增量同步的一個關鍵,出現(xiàn)了異常,已經(jīng)解決
問題:獲取到同步源和同步目標數(shù)據(jù)后驱敲,對比兩者差異热凹,用到了“合并記錄”模塊鹿霸,通過簡單的設置排吴,包括--新舊數(shù)據(jù)源、標志字段懦鼠、關鍵字段钻哩、數(shù)據(jù)字段,即可獲得數(shù)據(jù)差異肛冶,其中包括deleted街氢、new、changed睦袖、identical珊肃,看似已經(jīng)獲取所有想要的數(shù)據(jù)。
但是根據(jù)標志字段進行下面同步操作時,(大數(shù)據(jù)量時近范,1-10萬)數(shù)據(jù)總是不對嘶摊。
發(fā)現(xiàn):新舊數(shù)據(jù)源都有的修改數(shù)據(jù),有可能被“合并記錄”模塊標記成?
A new
A deleted
這樣评矩,當操作db后叶堆,可能是先insert A,后delete A斥杜,結果表中就少了A虱颗。
解決:根據(jù)發(fā)現(xiàn)的內(nèi)容,有兩種方案
1.在操作db時蔗喂,控制順序忘渔,先delete,后insert缰儿,這樣數(shù)據(jù)不會少
2.我猜測畦粮,一個修改的數(shù)據(jù)可能在判斷是新增、修改乖阵、刪除時宣赔,在舊數(shù)據(jù)源沒有最快找到記錄,就標記成new瞪浸,后面在舊數(shù)據(jù)源找到一條數(shù)據(jù)儒将,在新數(shù)據(jù)源中(已經(jīng)過去的數(shù)據(jù)不考慮)沒有找到,就標記成deleted
所以解決方法很簡單对蒲,將新舊數(shù)據(jù)源都排序钩蚊,這樣得到了我想要的結果。