使用地理数据库复制
此主题仅适用于 ArcEditor 和 ArcInfo。
地理数据库复制设计用于支持在多个不同系统中分布数据。以下内容将帮助您确定如何在系统中充分利用该功能。
首先请查看了解分布式数据主题,该主题介绍了数据库复制以及分发数据的其他方法。情景主题还列出了多个可以使用地理数据库复制的常见使用案例。如果地理数据库复制看起来是最适合您系统的方法,则下一步是开始创建复本。
创建复本
以下内容将帮您确定为系统创建复本的最佳方法。
- 确定所需复本 - 在某些情况下,您可能只需要创建一个或两个复本,而有时则需要创建多个复本。例如,如果要为现场团队创建用于现场便携式计算机的复本,则需要创建多个复本。如果要保持两个企业地理数据库同步,可能只需要一个复本。要了解什么是复本以及它在地理数据库中的工作原理,请阅读复本和地理数据库主题。
- 决定复制的类型 - 复制类型主题逐个介绍了三种可用的复制类型。您的系统可能需要在一种情况下使用一种类型的复本,而在另一种情况下使用另一种类型的复本。例如,您可能想使用双向复制来与另一个办公室进行同步,而使用单向复制来更新地图发布地理数据库。
- 选择用来创建复本的工具集 - ArcGIS 提供了多个可以使用地理数据库复制的环境。每个环境都具有不同的优点。下面介绍各个环境提供的工具。
- “创建复本”向导 - 创建复本向导位于 ArcMap 中的“分布式地理数据库”工具条中。该向导具有多个选项,以及一个与 ArcMap 紧密集成且介绍详尽的用户界面。建议在第一次尝试创建复本或计划只创建少量复本时使用“创建复本”向导。
- “创建复本”地理处理工具 - “创建复本”地理处理工具也可用于创建复本。该工具具有多个选项,但是不提供“创建复本”向导中某些更高级的选项。
“创建复本”地理处理工具适用于需要定期创建复本的情况。在地理处理环境中可以轻松构建可重复运行的模型和脚本。例如,可以构建一个每天为现场团队各个成员创建检出复本的模型。有关详细信息,请参阅“创建复本”地理处理工具的帮助。
- ArcObjects API - ArcObjects API 支持使用多种语言来编写创建复本的代码。当您想要自定义复本创建过程或者需要定期使用复杂选项创建复本时,此 API 很有用。
- 将复制集成到版本化工作流中 - 地理数据库复制在版本化的基础上执行。创建复本时,在父复本和子复本中均定义复本版本。这是您在同步期间发送和接收更改所使用的版本。有关详细信息,请参阅主题复本创建与版本化。
由于复本版本是同步更改的通道,因此在创建复本前请计划复本版本的使用方式。例如,您可能计划对同步期间收到的更改执行某些验证,然后再集成到主工作流中。这可以通过在同步后分析复本版本的内容,然后进行协调并提交到常规工作版本来实现。此外,默认版本也可以用作复本版本。这对于在同步时想将更改直接提交到默认版本的情况非常有用。
- 定义要复制的数据 - 通过地理数据库复制可复制 ArcSDE 地理数据库中的某些或全部数据集。还允许您使用过滤器和关系类来定义要复制的要素或行。在创建期间,始终会先应用过滤器,然后使用关系类来追加更多要素和行。有关详细信息,请参阅准备复制。
定义要复制的数据时应考虑您的未来需求。例如,双向和单向复本创建一次即可同步多次。您在创建复本时定义的过滤器也会在同步时应用。随着时间的推移,您可能会需要更大的复本区域。此外,考虑要复制的数据类型也很重要。为了保持数据完整性,在复制复杂数据类型(例如几何网络和拓扑)时将应用附加规则。以下几个帮助主题介绍了这些规则并展示了示例:几何网络、拓扑、关系类、栅格数据和地形与网络数据集。
- 考虑复本创建选项 - 新增了一些使复本创建过程尽量高效的选项。这些选项专为特殊情况设计,可能适用于您的工作流,也可能不适用。请查看以下列表以了解您是否能利用这些选项:
- 重用架构 - 通过“重用架构”可以指定目标地理数据库,该地理数据库已经含有您要复制的数据的架构。这样可以节省时间,因为在创建复本时可跳过架构创建。此选项只适用于检出复本,但应尽量使用。
- 仅架构 - “仅架构”选项允许您创建不复制任何行的复本。这样在复本创建期间仅复制架构。此选项仅适用于检出复本。例如,为计划仅输入新信息的现场团队创建复本时,可使用此选项。使用此选项可节省时间,无需在向导中将每个数据集设置为“仅架构”。
- 注册现有数据 - 如果要复制大量的数据,最好考虑使用“注册现有数据”选项。该选项允许您绕过复本创建过程的数据复制步骤,仅注册新复本。要成功使用此选项,必须在复本创建过程前执行一组特定步骤。请注意,当使用地理处理工具时,此选项不可用。
- 复制相关数据 - 在复本创建期间,将首先应用过滤器,然后处理关系类以确定要复制的数据。您可以选择关闭关系类处理来节省时间。如果选择关闭关系类处理,在创建和同步期间仍会包括关系类,但不会进行处理。在“创建复本”向导和地理处理工具的高级部分中提供了一个可关闭所有关系类处理的选项。“创建复本”向导还允许您关闭特定关系类的处理。
- 使用存档追踪更改 - 使用存档而不是与版本化关联的增量表追踪更改时,不会创建任何系统版本。这样,协调过程、提交过程以及压缩过程就不会受到影响,从而使版本管理和复制管理成为独立的过程。这还可以提高同步计划的灵活性。
- 考虑使用在线环境还是离线环境 - 在线离线和离线环境下均可创建复本。对于在线环境,创建和同步会在连接后在同一个网络上完成。而在离线环境下不使用网络。通过将文件(如 XML 文档)导出,发送,然后导入到目标来完成创建和同步。有关详细信息,请参阅在线和离线复制。
如果网络可用但不可靠,最好还是考虑使用离线复制。在慢速网络上运行复本创建过程可能比较耗时且不可靠。而使用离线复制,可导出到文件并继续工作,无需等待网络发送信息。但在这种情况下,最好为这些文件创建备份,以防它们在导入目标前丢失。
同步复本
创建复本后,可以立即开始在复本地理数据库之间同步更改。有关详细信息,请参阅关于同步。为了使系统高效工作,制定同步更改的策略很重要。当确定适用于系统的最佳策略时,应考虑以下因素。
- 同步方法 - 首先确定可满足需求的最佳同步方法。下面列出了一些选项:
- 手动同步 - 如果仅使用少量复本并且仅计划偶尔同步更改,应考虑使用 ArcGIS 提供的工具。分布式地理数据库工具栏和目录树中的分布式地理数据库快捷菜单提供了执行同步的向导。这些向导可用于地理数据库连接以及在目录树中通过 ArcGIS Server 公开的地理数据服务器对象。这样便可同步本地连接并通过 Internet 同步远程连接。分布式地理数据库地理处理工具也可以提供相同功能。
- 使用代理自动同步 - 在存在多个复本和/或需要频繁同步的系统中,应该考虑构建复制代理。复制代理可以自动连接到复制的地理数据库并执行同步。这样,最终用户无需显式同步其数据库,因为同步会自动进行。在在线环境下,可使用以下技术构建同步代理:
- 使用地理处理工具进行同步 - 通过地理处理工具,可以轻松构建使用本地地理数据库连接或运行在 Internet 上的地理数据服务器对象的连接来同步复本的模型。这些模型可以导出到 Python 脚本并通过 Python 执行。可以将执行这些脚本的命令添加到计划软件(如 Windows Scheduler)中,以便定期运行这些命令。例如,最好计划在每周非高峰时间在两个企业地理数据库之间进行同步。
- 使用 ArcObjects 进行同步 - 通过 ArcObjects API 可完全支持同步。相比地理处理工具,使用 API 可构建更复杂的同步代理。例如,您可以添加以下功能:当操作系统检测到现场便携式计算机连接上网络时,即同步该便携式计算机。
- 同步和冲突 - 如果对复本数据进行的编辑与从相关复本同步的编辑内容冲突,则需要确定如何解决冲突。可以应用协调策略自动解决冲突或稍后启用手动冲突解决。请参阅同步和版本化以了解您的系统是否存在此问题。另一种处理冲突的方法是使用 ArcObjects API 构建一个可处理冲突的系统。在此系统中,同步使用手动协调策略,但稍后会自动运行次级过程来解决可能出现的任何冲突。
- 要同步的数据 - 对于检出复本,子复本中进行的所有数据更改均会同步。对于双向和单向复本,只有满足过滤器和关系类要求的更改会被应用。可以使用复本管理器来确定已应用到每个复制数据集的过滤器和关系类规则。还可以创建复本足迹来本地存储此信息并显示每个复本的空间过滤器。
为了保持数据完整性,在同步复杂数据类型(例如几何网络和拓扑)时将应用附加规则。关系类处理也可能增加要同步的数据。您应该查看以下主题以熟悉如何同步不同类型的数据:同步拓扑、同步相关数据和同步几何网络。
- 数据量 - 进行同步时,只有自上次同步以来所做的更改会被应用。ArcGIS 会过滤出已发送并确认的任何更改。而且更改一旦发送便不会再返回到原始复本。这样,数据量会减少到所需的数量。
计划同步的频率,以便与数据应用更改的频率一致。如果同步频率不能满足更改量的要求,该过程可能比较耗时。此外,建议在非高峰时段进行同步。在离线环境下,导出数据更改时应始终使用 ZIP 文件而不使用未压缩格式(如 XML 文件)。此外,还建议采用定期发送确认消息的做法。
- 同步复本的顺序 - 如果要处理多个复本,则它们的同步顺序可能很重要。例如,应考虑从单个 ArcSDE 地理数据库创建多个双向复本的情况。同步这些复本的一个策略是使每个子复本都与父复本进行双向同步。这样子复本将更改发送到父复本,然后父复本将更改发送到子复本。另一个策略是各个子复本先将其更改发送到父复本。父复本合并所有更改,然后将更改发送回各个子复本。在第一种情况下,父复本只会发送其更改,而在第二种情况下,会增加发送从其他复本合并的更改。根据系统要求,其中一个策略可能会比另一个策略更适合。
- 架构更改 - 地理数据库复制支持架构更改。这意味着即使对复制的数据进行架构更改,同步仍可继续进行。在某种程度上,还可以跨复本应用架构更改。有关详细信息,请参阅处理架构更改。
一般来说,最好将架构更改保持在最低限度。如果要跨复本应用架构更改,最好使用结构化的方法进行此操作。例如,要跨复本添加字段,首先将字段添加到顶层父复本的要素类中。然后开始将架构更改向下应用到所有复本。有关详细信息,请参阅架构更改和复本。
- 排除错误 - 在同步过程中有很多原因会导致发生错误。在在线系统中,计算机网络可能发生故障或者您可能尝试同步有冲突的复本。在离线系统中,可能会丢失消息或者您可能错误地尝试以不正确的顺序导入消息。在所有这些情况下,系统均设计为保持一致的状态。系统将回滚更改,并拒绝不正确的消息。可以使用复本活动日志来查找出现的任何错误,并确定进行恢复的措施(如果有的话)。大多数情况下,如果只是继续同步更改,系统将自动从错误中恢复。复本还包含生成信息,指示已发送和接收的更改集数目。有关详细信息,请参阅管理复本。