1. 程式人生 > >大資料量同步方案之全量同步改為增量同步解決方案

大資料量同步方案之全量同步改為增量同步解決方案

背景描述:

  在一些大資料運用場景中,由於上游資料每天都在變化著,在需要用這些資料的下游系統需要每天重新整理這些變化的資料,當資料量小時候,簡單粗暴的方式就是每次全量更新資料,但隨著業務的增長,資料量成幾何方式增長時(達到億級別甚至更多),每次的更新工作將是耗時耗力的,也是業務方無法忍受的。此時,就需要一種解決方案變全量同步為增量同步。

解決方案:

  考慮到資料量基數雖然大,但每天變化的資料量卻是有限的(包括:add和update),所以只需每天更新變化的記錄行即可。參考以下流程圖的方案:
這裡寫圖片描述
說明:
1、過程分兩步:首次全量更新,之後每天增量更新變化的資訊。
2、一定要注意步驟的執行順序,例如:先刪除失效資料再同步變化的資料(當然實際中很多資料庫中介軟體能夠支援覆蓋更新功能,此時此步驟可省略,皆大歡喜),而刪除超期資料則什麼時間執行都沒問題。
3、在上述基礎上,最好定時(例如每週一次或每月一次)全量刪除重新推送資料進行資料矯正,不失為一種好的補償方案。
4、流程圖中沒有考慮delete的資料,是由於在網際網路中一般資料只需邏輯刪除,不做邏輯刪除,因此,delete過程(udpate status=-1)實質是update過程,該記錄歸屬於update的資訊。

方案效果:

  經測試效果,1.5億的資料量,實際業務大部分的資料是不變化的,每天變化的資料只有幾百萬,由原來每天全量更新5個小時縮短為每天增量更新20分鐘左右,提高效果驚人,呵呵!