最近,利用一些時間對oracle數據庫實時同步工具作了一些調研分析,主要關注了linkedin的databus和阿里的yugong兩個中間件,其中databus須要在每一個待同步的表上增長額外的列和觸發器來實現,方案比較重,本文將着重分析一下阿里的yugong實現方案及給出分析調研報告。數據庫
1.yugong實時同步原理oracle
使用了oracle的物化視圖日誌功能,相似於一個內部的觸發器,原表的數據庫須要對用戶受權具備物化視圖日誌的建立和刪除權限,關於物化視圖日誌的詳細描述,能夠參考下面的文章:app
http://blog.csdn.net/tianlesoftware/article/details/7720580函數
2.性能測試工具
a.在測試環境1的原表(TEST_SOURCE)新生成300萬數據性能
b.爲不影響開發環境的數據,修改yugong代碼,將目標表改成TEST_SOURCE_BAK測試
c.啓動yugong服務,開始同步數據.net
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.原理簡單,能夠按照咱們的意圖來更改代碼