在具體的實現方式上,Oracle Simple、Oracle Consistent是採用同步方式進行增量資料抽取的,說白了就是在源系統相關表上新增觸發器,如下圖所示: 當源資料庫中的交易需要修改相關表時,會呼叫觸發器,將變化資料插入到增量表中,觸發器的呼叫是包含在交易中的,這就決定了變化資料的實時性高,在需要實時變化的場景,非常適用,而且這種方式在資料庫非歸檔狀態下也照常執行,其缺點是由於觸發器包含在對資料修改的事務中,當系統併發量比較大時,會對原有系統的效率產生一定影響。很多同事一聽說觸發器就覺得對源系統影響非常大,其實並不是這樣。這裡需要澄清的一點概念是觸發器往變化資料表中寫的並不是所有變化的資料,而可能只是一個主鍵或者再加一點額外的資訊,其對系統的影響比我們想象的要小得多。 Oracle 9i/10g/11g Consistent (LOGMINER)方式可以配置成非同步方式,基於Oracle資料庫的online redo log進行變化資料的捕捉(這裡要特別提醒的是目前ODI只支援Hotlog方式),說的更白一點就是oracle stream技術,變化的資料透過logminer技術從線上日誌中獲取。如下圖所示: 這種方式基於非同步的策略,一般變化資料的獲取會有1秒到幾分鐘的資料延遲,當然對資料倉庫系統來講,這點時間也不算啥。但是由於其從日誌中抽取變化資料,對原有的生產系統影響很小,而且該方式在使用者原來的schema上除了一個讀許可權外,不需要額外的許可權要求,因此大多數使用者都願意採用這種方式。但該方式需要對使用者有一定的許可權要求,而且資料庫必須執行在歸檔模式下。
在具體的實現方式上,Oracle Simple、Oracle Consistent是採用同步方式進行增量資料抽取的,說白了就是在源系統相關表上新增觸發器,如下圖所示: 當源資料庫中的交易需要修改相關表時,會呼叫觸發器,將變化資料插入到增量表中,觸發器的呼叫是包含在交易中的,這就決定了變化資料的實時性高,在需要實時變化的場景,非常適用,而且這種方式在資料庫非歸檔狀態下也照常執行,其缺點是由於觸發器包含在對資料修改的事務中,當系統併發量比較大時,會對原有系統的效率產生一定影響。很多同事一聽說觸發器就覺得對源系統影響非常大,其實並不是這樣。這裡需要澄清的一點概念是觸發器往變化資料表中寫的並不是所有變化的資料,而可能只是一個主鍵或者再加一點額外的資訊,其對系統的影響比我們想象的要小得多。 Oracle 9i/10g/11g Consistent (LOGMINER)方式可以配置成非同步方式,基於Oracle資料庫的online redo log進行變化資料的捕捉(這裡要特別提醒的是目前ODI只支援Hotlog方式),說的更白一點就是oracle stream技術,變化的資料透過logminer技術從線上日誌中獲取。如下圖所示: 這種方式基於非同步的策略,一般變化資料的獲取會有1秒到幾分鐘的資料延遲,當然對資料倉庫系統來講,這點時間也不算啥。但是由於其從日誌中抽取變化資料,對原有的生產系統影響很小,而且該方式在使用者原來的schema上除了一個讀許可權外,不需要額外的許可權要求,因此大多數使用者都願意採用這種方式。但該方式需要對使用者有一定的許可權要求,而且資料庫必須執行在歸檔模式下。