資料同步一般是指乙個資料來源的資料發生改變時,其他相關的資料來源的資料也發生相應變化。資料同步可以有五種實現方案,根據具體需求不同,可以採取不同方案。
1. 觸發器:在源資料庫建立增、刪、改觸發器,每當源資料庫有資料變化,相應觸發器就會啟用,觸發器會將變更的資料儲存在乙個臨時表裡。orcle 的 同步 cdc (synchronized cdc) 實際上就是使用的觸發器
優點:能做到實時同步
缺點:降低業務系統效能,orcle 的 synchronized cdc 大概降低10% 左右。
影響到業務系統,因為需要在業務系統建立觸發器。
2. 日誌:通過分析源資料庫日誌,來獲得源資料庫中的變化的資料。orcle 的 非同步 cdc (asynchronized cdc) 就是使用這種方式。
優點:基本不影響業務系統,如oracle asynchronized cdc 的 hotlog 方式對業務系統的效能大概降低 3% 左右,而 autolog 方式對業務系統幾乎沒有影響。
缺點:有一定的延時
對於沒有提供日誌分析介面的資料來源,開發的難度比較大。
3. 時間戳:在要同步的源表裡有時間戳字段,每當資料發生變化,時間戳會記錄發生變化的時間。
優點:基本不影響業務系統
缺點:要求源表必須有時間戳這一列。
在刪除資料時,還要做一些特殊處理。
4. 資料比較:通過比較兩邊資料來源資料,來完成資料同步。一般用於實時性要求不高的場景。
優點:基本不影響業務系統
缺點:效率低
5. 全表拷貝:定時清空目的資料來源,將源資料來源的資料全盤拷貝到目的資料來源。一般用於資料量不大,實時性要求不高的場景。
優點:基本不影響業務系統
開發、部署都很簡單
缺點:效率低
總結:1. 上面五種資料同步方式,除了第五種都需要業務表有主鍵。
2. 對於沒有觸發器和日誌的一些小型資料來源,如txt 文字,excel 檔案,aceess,則只能使用後三種方式。
3. 對於大型資料來源,一般優先選擇日誌方式,如 orcale asynchronized cdc, 對於不能通過日誌來實現的情況,可以考慮第1,3,4種方式。
ps.pdi 的官方版 3.1 可以提供第 3,4,5 種解決方案,在我們改進的 pdi 中文版中提供了 oracle cdc 的解決方案(使用 oracle cdc 輸入和 oracle cdc 輸出外掛程式完成)
目前我們正在開發 sqlserver 觸發器方式 和 sqlserver cdc 方式的同步外掛程式。
不同資料來源之間的LINQ查詢
業務假設 grade表在伺服器a的資料庫上,class表在伺服器b的資料庫上,要查詢grade和class表連線的資訊。方法 1.建立第乙個linq to sql的dbml,假設ds1,2.建立第二個linq to sql的dbml,假設ds2,3.將ds2繼承ds1,或者ds1繼承ds2,注意兩者...
不同activity之間資料的傳遞
不同activity之間的資料的傳遞有多種方式,這裡主要記錄兩種方式。第一種是通過bundle來傳遞資料,第二種方法就是直接通過intent來傳遞資料。通過bundle來傳遞資料,首先在主activity中將需要傳遞的資料封裝儲存到bundle中,該部分 如下 bundle bundle new b...
oracle資料庫之間資料同步
這段時間負責某個專案開發的資料庫管理工作,這個專案中開發庫與測試資料庫分離,其中某些系統表資料與基礎資料資料經常需要進行同步,為方便完成指定資料表的同步操作,可以採用dblink與merge結合的方法完成,簡單方便。操作環境 此資料庫伺服器ip為192.168.196.76,有center與bran...