以下是個人對於oracle Actiive DataGuard和 GoldenGate的一些理解,限於使用場景和經驗的不同,可能不會非常的全面,如有其它不同的想法,歡迎討論調整補充。
首先從容災方向來看,個人認為ADG產品更加傾向於結構和數據層面的容災,是為了保證整個數據庫(實例)系統的完整性而設計的,主要目的是為了高可用性(HA);可以說,dataguard是一套數據庫系統體系內的容災解決方案,ADG是在容災的基礎上,加入了可查詢的功能,從而能夠將一些報表類的業務壓力從主庫上分離出去,其根本上,還是在一套數據庫范圍內變相的增加該數據庫系統的處理能力。OGG產品,對數據同步的能力支持的更多,它的同步是表級的,不支持在源或目標端的數據聚合操作,如sum,average,count等的數據復制,另外OGG對於DDL復制支持的限制較大,作為容災,在穩定性和配置上都不如ADG。
從使用場景角度來看,ADG支持一對多的同步,但僅限於一套數據庫系統內,無法滿足多套數據庫之間的有效關聯。而OGG產品因為其同步方式的靈活性,可以完美的實在多個數據庫之間的互動,OGG支持單向復制、雙向復制、點對點復制、數據分發、數據集中、多級復制等多種使用場景,針對表的復制還支持單表到單表、單表到多表、多表到多表、多表到單表、表過濾等多種復制方式,而且OGG可以最大限度的支持異構(操作系統,數據庫版本,數據庫產品),從而滿足復雜業務系統的要求。
從維護和穩定性角度來看,ADG產品維護起來簡單,極少出現錯誤;OGG產品在維護起來操作較為復雜;而且,ADG產品的debug屬於oracle體系,在問題處理上,oracle的支持的更好,OGG產品是被oracle收購的,所以在debug方面,對於問題定位和分析都不同於oracle。
下面是一個簡單的對比表格
|
Oracle DataGuard |
Oracle GoldenGate |
原理 |
復制歸檔日志或在線日志 |
抽取在線日志中的數據變化,轉換為GGS自定義的數據格式存放在本地隊列或遠端隊列中 |
穩定性 |
作為災備的穩定性極高 |
穩定性不如DataGuard |
維護 |
維護簡單,極少出現問題 |
命令行方式,維護較復雜 |
對象支持 |
完全支持 |
部分對象需手工創建於維護 |
備份端可用性 |
備份端處於恢復或只讀狀態 |
兩端數據庫是活動的,備份端可以提供實時的數據查詢及報表業務等,從而提高系統整體的業務處理能力,充分利用備份端的計算能力,提升系統整體業務處理性能。可以實現兩端數據的同時寫入 |
接管時間 |
接管時間很短 |
可實現立即接管 |
復制方式 |
可以實現實時復制 |
GoldenGate可以提供秒一級的大量數據實時捕捉和投遞,異步復制方式,無法實現同步復制 |
資源占用 |
復制通過數據庫的LGWR進程或ARCN進程完成,占用數據庫少量資源 |
業務高峰時在數據抽取轉換時消耗系統資源較多,低峰時占用較小 |
異構數據庫支持 |
單一數據庫解決方案,僅運行在Oracle數據庫上,源端和目標端操作系統要求較嚴格,版本號可以不同 |
可以在不同類型和版本的數據庫之間進行數據復制。如ORACLE,DB2,SYBASE,SQLSERVER,INFORMIX、Teradata等。適用於不同操作系統如windows、linux、unix、aix等 |
帶寬占用 |
使用OracleNet傳輸日志,可通過高級壓縮選項進行壓縮,壓縮比在2-3倍 |
利用TCP/IP傳輸數據變化,集成數據壓縮,提供理論可達到9:1壓縮比的數據壓縮特性 |
拓撲結構 |
可以實現一對多模式 |
可以實現一對一、一對多、多對一、雙向復制等多種拓撲結構 |