对于企业级地理数据库中的复本,地理数据库复制在同步过程中使用版本化。版本化用于确定要发送和接收的变更。使用存档追踪单向复制中的变更是个例外。
下面分别介绍在上述每个同步过程中如何使用版本化:
发送变更
当复本发送变更时,将分析复本版本(在复本创建期间定义)和系统版本。此分析可以过滤出在早期同步中已经预先发送的编辑内容或确定需要重新发送的一些变更。对于文件地理数据库中的检出/检入复本,将分析包含所有编辑内容的内部表。对于使用存档的单向复制,将分析存档类以确定要发送的变更。
接收变更
复本接收变更时,会发生以下情况:
首先,变更将作用于同步版本。同步版本是复本版本的子版本,用于临时保存已同步的更改,直到对其进行协调并提交到复本版本。对于双向和单向复本,可能不会在同步之前创建版本,而对于检出/检入复本,将在创建复本时创建版本。下图中,复本版本可能是默认版本或指定版本。
接下来,将针对复本版本协调同步版本。此步骤中的行为取决于复本类型:
- 双向复本 - 对于双向复本,协调过程中可能存在冲突。如果检测到冲突,则可使用协调策略确定如何处理这些冲突。如果没有冲突,或冲突已被自动协调策略解决,则复本版本将以同步版本提交。
- 检出/检入复本 - 对于检出/检入复本,协调和提交过程可选,且默认不执行。如果选择不执行协调和提交,则变更将保留在同步版本中。以后可以手动协调和提交。如果决定执行协调和提交,则行为将与双向复本相同。
- 单向复本 - 对于单向复本,将始终覆盖复本版本中的变更,且不会产生未解决的冲突。使用简单模型类型时,不必版本化子复本中的数据。如果未对子复本进行版本化,则变更将直接作用于基表。对于子复本托管在文件地理数据库中的情况,也会直接覆盖变更。
将变更提交到复本版本后,同步版本随即删除。对于双向复本,只要存在同步版本,就认为复本存在冲突。存在冲突时,复本可以接收变更但不会发送变更。
注:
建议以复本所有者身份登录时执行协调和提交。默认情况下,同步版本是私有版本,只有复本所有者才能访问。如果将其设为公共版本,则不是复本所有者也可以协调和保存更改。但是,必须以复本版本所有者身份登录时,才能提交更改。