Live Transfer允許從多個生產或歷史(ODS)數據庫加載數據存儲到單個目標數據庫(其他ODS或報告數據庫)。延遲的潛在因素取決於源數據庫的數量以及所涉及的服務器和網絡的處理能力。
可以將數據從SQL Server數據庫傳輸到Oracle數據庫,生產到ODS和基礎ODS到集線器ODS配置。 你不能將數據從Oracle數據庫傳輸到SQL Server數據庫。 因此,曾經您將數據從SQL Server數據庫傳輸到Oracle數據庫,所有數據庫此後必須是Oracle數據庫。
一、版本兼容性
在配置實時傳輸之前,請注意以下版本控制限制:
- 源數據庫的Live Transfer架構版本必須與Site Extract Manager's(SEM)的預期Live Transfer架構版本相同。
- 目標數據庫的Live Transfer架構版本必須與Table Loader Manager's(TEM)的預期Live Transfer架構版本相同。
例如,如果源數據庫的Live Transfer架構版本爲2,則Site Extract Manager的預期Live Transfer架構版本也必須爲2。
另一個示例,包括目標數據庫的Live Transfer架構版本是3,Table Loader Manager's(TEM)的預期實時傳輸模式版本也必須是3。
架構版本記錄在數據庫的SCHEMA_VERSION表中在以下行中:
- SCHEMA_VERSION:Plant Operations主要架構版本
- SCHEMA_MINOR_VERSION:Plant Operations次要架構版本
- LIVE_TRANSFER_VERSION:Live Transfer架構版本
二、Live Transfer設置
下圖顯示瞭如何設置實時傳輸:
- 單個Extractor Service實例只能從一個源數據庫中提取。 在示例圖中,Extract Service Instance 1僅提取來自生產站點A,而Extract Service Instance 2僅從生產站點B中提取。這些Extract Service Instance都不能再提取來自其他數據庫的數據。
- JMS代理可以是Apache ActiveMQ的單個實例(以下稱爲ActiveMQ)代理,或在一個高可用網絡的負載均衡環境。有關ActiveMQ的更多信息,請訪問http://activemq.apache.org/。
-
任何給定的Load Service Instance只能加載到單個目標中數據庫,但多個Load Service實例可以加載到同一個目標數據庫中。 在示例圖中,Load Services Instances 1和2都加載到同一個目標數據庫。 它們不能再加載到任何其他數據庫中。
-
一個基礎ODS從生產數據庫接收數據,也能傳輸它的數據到集線ODS或者報表數據庫。
三、Live Tansfer組件
Live Transfer由以下組件組成
Live Transfer Extractor(LTE),包括:
Site Extract Manager(SEM)
Table Extract Manager(TEM)
Table Loader Manager(TLM)
Live Transfer使用JBossCache作爲全局內存空間,用於跟蹤發送到加載器的消息,以及指示加載器成功加載了哪些內容的消息。TEM使用這些信息來避免向加載器發送重複的數據,並且SEM使用此信息來確定是否需要重新提取表以及控制何時發送下一個表提取請求。
JBossCache存儲Receipt對象,SEM使用它來監視提取的進展。 SEM監控receipts並確定是否所有提取物請求已完成或其中任何一個需要重新發送。
1、Site Extract Manager(SEM)
Site Extract Manager(SEM)是Live Transfer Extractor的一部分用於確定源數據庫和連接信息的組件。通過派發消息來控制從源數據庫中提取數據到提取隊列列出哪些表具有準備好的數據轉移。 SEM還記錄了提取過程的進度和日誌,傳輸完成後,在源數據庫會存儲一條提取日誌記錄。
爲了支持這一基本功能,SEM使用ActiveMQ和JBossCache傳遞並與Live Transfer中的其他組件共享數據。 SEM是保持所有Live Transfer之間通信的主線程組件打開,以及識別新組件何時加入網絡或重新啓動提取或加載器實例時。
2、Table Extract Manager(TEM)
Table Extract Manager(TEM)是Live Transfer提取器的一部分組件,它負責從源數據庫中提取數據。 它是由以下部分組成:
Manager:該組件執行以下任務
- 在啓動時與SEM建立連接,檢查兼容性問題。
- 啓動表提取器(Table Extractor) 實例。
- 處理來自Load服務的加載消息receipts。
- 在數據加載成功後更新JbossCache。
Table Extractor Instances:該組件執行以下任務
- 查詢指示數據已準備好提取的消息。
- 從源數據庫中提取數據。
- 在數據提取併發送到加載程序後更新全局緩存隊列中。
- 將提取的數據發送到加載器隊列,加載器正在隊列中等待接收消息。
3、Table Loader Manager(TLM)
Table Loader Manager(TLM)是負責將數據加載到目標數據庫中的組件。它是由以下部件組成:
Manager:該組件執行以下任務:
- 在啓動時與SEM建立連接,檢查兼容性問題。
- 啓動表加載器(Table Loader)實例。
- 在加載數據後更新日誌時,將消息receipts發送到SEM。
Table Loader Instances:該組件執行以下任務:
- 將提取的數據加載到目標數據庫中。
- 加載數據後,向TEM管理器發送加載確認。
四、Live Transfer工作原理
下圖顯示了在Live Transfer中如何使用上面這些組件。這兩臺Java虛擬機(JVM)可以運行在一臺物理機器上,也可以運行在兩臺不同的機器上。
步驟1:
啓動SEM,TEM,和TLM。SEM連接TLM和TEM並確保沒有兼容性問題。如果沒有問題,然後,TEM管理器啓動表提取器(Table Extractor)實例,TLM啓動表加載器(Table Loader)實例。
步驟2:
//To Do