一般的業務開發,不會涉及到多種數據庫類型的操作。因為,無論是對于開發,還是運維,成本都是非常高的。如果是ORACLE數據庫到MYSQL的數據備份,目前我所了解的開源解決方案有2種:
A:基于linkedin的databus方案(低延時變化數據捕獲系統)https://github.com/linkedin/databus
B:使用阿里的yugong項目(數據庫遷移 (目前主要支持oracle -> mysql/DRDS))https://github.com/alibaba/yugong
由于時間關系,databus的我沒有花時間研究(道聽途說是目前性能最強的),主要學習了yuyong,總體來說,簡單易懂。
架構如下
說明:
1 一個Jvm Container對應多個instance,每個instance對應于一張表的遷移任務
2 instance分為三部分
a. extractor (從源數據庫上提取數據,可分為全量/增量實現)
b. translator (將源庫上的數據按照目標庫的需求進行自定義轉化)
c. applier (將數據更新到目標庫,可分為全量/增量/對比的實現)
以上,是它官網的說明。如果你還不明白,我來簡單用另外一個圖來解釋一下。
其實,你仔細看的話,實際上就是對我們真正要如何做數據遷移進行了抽象,所以,有了這個認識之后,你再去理解這個東西,就會上手快一些。實際上,真正需要寫代碼的地方就在translator這一塊。有且僅在你的源表與目標表字段,名稱,類型不一致的時候。比如像這樣。
1 字段名稱不一樣
2 類型不一樣
3 新增字段
小提示:
1 表名與類的映射定義
yugong.table.white=t_sync_ee_122jq
類名就是這樣:TSyncEe122jqDataTranslator
2 數據轉換的類得放在com.taobao.yugong.translator下面,源碼里面會讀這個包下面的類文件。
我的微信公眾號,歡迎溝通學習。
posted on 2016-12-15 13:33
alexcai 閱讀(1240)
評論(0) 編輯 收藏