作為復制的基本需求,我們需要惟一地標識將要復制的每個數據單元。對于雙向復制,還需要一個能夠標識數據庫之間對應數據單元的映射方案。根據復制的需求,可以采用各種各樣的方案。對于單向復制,主數據庫可以要求為數據單元生成 ID。對于雙向復制,必須根據應用程序的 ID 生成方案定義映射方案。ID 生成方案與映射方案可以是每個數據庫使用的 ID 編號的相互排斥范圍,在這個范圍內,ID 編號是正好匹配的。更復雜的示例中可能包括 ID 生成服務或者特定于數據庫的方案,在這種情況下,必須在數據庫之間維護 ID 的映射。
示例實現 本文將介紹一個簡單的數據復制示例。這個示例將演示兩個異構數據庫之間的雙向客戶數據記錄復制,每個數據庫都包含一個結構類似的客戶表。使用惟一的客戶 ID 來標識被復制的每條記錄。我們在表中添加了兩列,以記錄每條記錄的狀態和最后狀態變化時間戳。對于這個示例,狀態與時間戳這兩列必須通過應用程序或手工進行填充。正如前面說過的,觸發器是一種在變更記錄表中自動填充更改數據的適當解決方案。但是,在這個例子中使用的數據庫目前擁有的觸發器能力還很有限,因此我們選擇不用觸發器來實現這項任務。而且,這個實例不包括雙向復制的沖突解決策略。所以沖突會導致復制過程失敗。