對於大型企業,業務分布在世界各地,為了改善當地業務服務能力,不得不在當地部署數據庫以提高性能,而各個區域之間的數據交互或者同步,成為不可不面對的問題。其間要解決的技術問題主要有:
1、同步數據的提取。從數據庫裡提取出需要同步的數據,這包括增、刪、改三類動作對數據造成的改變。在數據表安裝觸發器是提取同步數據的簡單有效的手段,而且觸發器對應用層而言是透明的,應用程序感覺不到觸發器的存在。
2、同步數據的可靠傳輸。數據傳輸可以用隊列來實現,例如有MSMQ、IBM MQ Series等。
3、數據沖突與操作沖突的規避、發現和解決。數據沖突是指兩個節點合並數據時,出現約束沖突的情況;而操作沖突是指兩個節點同時發生對同一條記錄發生操作,導致在雙向同步時難以決定兩個操作執行的先後順序。
觸發器安裝在各個要同步的數據表上,記錄對表的增刪改操作。所有操作共同記錄在一張操作日志表上,以便保證操作發生的順序。數據發送服務提取操作日志表上的數據,通過消息隊列傳輸到遠程服務器,遠程服務器接收隊列數據後,寫入到遠程數據表裡,從而完成數據同步。
在方案中,本地和遠程節點在結構上是對等的,是發送方同時也是接收方,由以下幾個部分組成:
1、 數據庫服務器:Oracle / SQL Server / DB2 等
2、 操作日志:記錄數據表的增刪改操作
3、 消息隊列:消息隊列服務,負責通訊,例如發送和接收消息
4、 抽取發送服務:從操作日志表提取數據,寫入消息隊列
5、 接收寫入服務:從消息隊列讀取數據,寫入到數據庫
6、 配置管理服務:配置同步任務、管理監控系統執行情況
7、 配置管理工具:管理配置工具的客戶端
8、 適配器:消息隊列適配器,減少隊列依賴
9、 異常信息庫:存放一些無法處理的沖突和意外錯誤,供管理員處理