最近,利用一些時間對oracle資料庫實時同步工具做了一些調研分析,主要關註了linkedin的databus和阿裡的yugong兩個中間件,其中databus需要在每個待同步的表上增加額外的列和觸發器來實現,方案比較重,本文將著重分析一下阿裡的yugong實現方案及給出分析調研報告。 1.yugo ...
最近,利用一些時間對oracle資料庫實時同步工具做了一些調研分析,主要關註了linkedin的databus和阿裡的yugong兩個中間件,其中databus需要在每個待同步的表上增加額外的列和觸發器來實現,方案比較重,本文將著重分析一下阿裡的yugong實現方案及給出分析調研報告。
1.yugong實時同步原理
使用了oracle的物化視圖日誌功能,類似於一個內部的觸發器,原表的資料庫需要對用戶授權具有物化視圖日誌的創建和刪除許可權,關於物化視圖日誌的詳細描述,可以參考下麵的文章:
http://blog.csdn.net/tianlesoftware/article/details/7720580
2.性能測試
a.在測試環境1的原表(TEST_SOURCE)新生成300萬數據
b.為不影響開發環境的數據,修改yugong代碼,將目標表改為TEST_SOURCE_BAK
c.啟動yugong服務,開始同步數據
d.經過1.5小時,同步完所有增量數據
3.數據延時測試
a.分別手動對原表數據進行了增改刪操作,10秒鐘內可以實現數據同步
b.在目標庫中新增一列,類型為時間類型,預設值為當前時間
c.使用腳本反覆在原庫中生成一批數據(50條為一批)
d.所有數據的延遲時間都在30秒以內
4.數據完整性測試
a.手工隨機抽查數據,對比同一條記錄的各個列值,數據都是一致的
b.使用jdbc抽出特定的記錄集合,使用md5函數,md5結果一致
5.其它測試用例
a.原表增加欄位,而目標表不增加,數據正常同步
b.目標表先增加欄位,原表不增加欄位,數據正常同步
c.原表和目標表同時增加欄位,服務需要重新啟動後才可以進行數據同步
d.無主鍵測試,yugong不支持無主鍵同步
e.主鍵為多列測試,可以正常同步
f.yugong服務連續運行72個小時,中間出現過一次同步中斷,原因不明
g.物化視圖日誌在事務中rollback時,會同步rollback
h.目標表將某條記錄刪除,原表將此記錄更新,此記錄會重新同步到目標表
6.yugong分析
a.代碼簡潔,分為extractor(提取)、translator(翻譯)、applier(更新到目標庫)三個部分
b.只有一個服務,無其它第三方依賴
c.原理簡單,可以按照我們的意圖來更改代碼