作为复制的基本需求,我们需要惟一地标识将要复制的每个数据单元。对于双向复制,还需要一个能够标识数据库之间对应数据单元的映射方案。根据复制的需求,可以采用各种各样的方案。对于单向复制,主数据库可以要求为数据单元生成 ID。对于双向复制,必须根据应用程序的 ID 生成方案定义映射方案。ID 生成方案与映射方案可以是每个数据库使用的 ID 编号的相互排斥范围,在这个范围内,ID 编号是正好匹配的。更复杂的示例中可能包括 ID 生成服务或者特定于数据库的方案,在这种情况下,必须在数据库之间维护 ID 的映射。
示例实现 本文将介绍一个简单的数据复制示例。这个示例将演示两个异构数据库之间的双向客户数据记录复制,每个数据库都包含一个结构类似的客户表。使用惟一的客户 ID 来标识被复制的每条记录。我们在表中添加了两列,以记录每条记录的状态和最后状态变化时间戳。对于这个示例,状态与时间戳这两列必须通过应用程序或手工进行填充。正如前面说过的,触发器是一种在变更记录表中自动填充更改数据的适当解决方案。但是,在这个例子中使用的数据库目前拥有的触发器能力还很有限,因此我们选择不用触发器来实现这项任务。而且,这个实例不包括双向复制的冲突解决策略。所以冲突会导致复制过程失败。