分支历史记录

自数据集注册为分支版本化后,分支历史详细记录了添加到业务表中的所有更改,这些更改用于存储和管理默认版本的编辑内容。

对于分支版本化,由于数据模型得以简化,管理工作流也因此更加高效。分支版本化基于时间相关的仅插入模型运作,所有编辑操作都记录在单一表中。 仅插入模型意味着每次编辑操作都会生成一条包含相应时间戳的插入记录,从而形成所有修改(包括删除)的完整历史记录。 此方法支持对数据随时间演变的过程进行可视化和分析。

与依赖增量表并将其与系统表连接以呈现特定版本数据的传统版本化不同,分支版本化要素类采用单表模型设计,原生支持存档功能。 数据集注册为分支版本化后,存档功能便自动启用,并在业务表中添加额外字段,用于存储和管理不同版本之间的编辑。

为了管理所有编辑(插入、更新和删除),分支版本化要素类或表的业务表中会增加六个特定的系统字段。

  • GDB_BRANCH_ID- 标识编辑操作发生的版本。
  • GDB_FROM_DATE- 记录编辑操作发生的精确日期和时间。
  • GDB_IS_DELETE- 使用二进制值指示要素是否已被删除(0 表示未删除,1 或 2 表示已删除)。
  • GDB_DELETED_AT- 记录要素被删除的日期和时间。
  • GDB_DELETED_BY- 记录删除要素的用户。
  • GDB_ARCHIVE_OID- 唯一标识表中的每一行,通过不同的 ID 追踪每次编辑。
分支版本化存档历史字段
注:

GDB_DELETED_ATGDB_DELETED_BY 字段被添加到要素类或表中,用于追踪删除操作;这些字段与标准的编辑者追踪字段协同工作。

了解有关将数据集注册为分支版本的要求和过程

存档数据具有多种用途,包括以下:

  • 进行历史数据分析和报告
  • 通过审计确保合规性要求
  • 导出数据集在特定时间点的状态

修剪分支历史记录

随着时间的推移,由于分支版本化模型通过为每次编辑插入新记录来追踪所有更改,业务表中的数据量会不断增长,这可能导致显著的数据累积。 修剪分支版本化数据集的历史记录涉及移除不再需要的历史记录,从而优化存储空间并提升系统性能。

修剪对于控制历史数据的增长至关重要,因为历史数据会随着时间的推移消耗大量存储资源。 建议在以下情况下修剪数据集中的存档记录,例如:

  • 当历史数据不再用于支持当前业务运营时
  • 通过删除不必要的历史记录来释放存储空间
  • 降低数据存储成本

ArcGIS Pro 3.5 起,您可以使用修剪分支历史化地理处理工具来管理和优化分支版本化数据集的存储。 修剪分支历史工具提供更精细的控制,您能够基于既定标准(例如设置此日期前修剪)确定要保留的具体记录。

“修剪分支历史记录”工具工作原理

修剪分支历史记录工具旨在高效管理历史数据。 以下是其主要功能:

  • 历史数据删除 - 此工具允许用户根据指定的日期删除类中的历史数据。 所有早于该日期的已停用数据都将从历史记录中移除。 已停用行是指存档中存在更新版本的行,或者该行的最后表示是要素被删除的状态。 这意味着该行不再是数据的最新版本,已被后续更新取代或标记为删除。 此功能对于通过清除过时和不必要的信息来管理数据库大小尤其有用。
  • 保留当前活动行 - 修剪分支历史记录工具的关键特性之一是确保不删除任何活动行。 活动行是指尚未被删除的要素的最新状态表示。 此行代表数据的当前状态,并且未被标记为已删除。 如果某个要素在指定日期之前存在且当前仍然活动,则该要素将被保留。 该工具专注于仅移除不再相关的历史数据。
  • 引用数据保护 - 该工具避免修剪任何仍被活动版本引用的数据。 如果某个版本指向包含较旧数据的时间点,则在不再引用该数据之前,不会对其进行修剪。
  • 协调 - 对于长期存在的版本,可能需要执行协调操作,确保数据可以被修剪。 当该工具用于管理在系统中存在较长时间的数据时,这一点尤为重要。 如果公共祖先和上一个祖先都早于修剪时间点,则必须对该版本执行两次协调操作。
  • 可自定义历史保留 - 组织可以决定保留多少历史数据。 例如,他们可以选择保留最近两到五年的历史记录,并修剪超出此期限的所有数据。 这种灵活性允许在保留有价值的历史数据和管理整体数据库大小之间实现平衡。

修剪分支历史记录工具类似于在非版本化存档数据集上使用的修剪存档历史记录工具。 但修剪分支历史记录工具是专门为注册为分支版本化的数据集创建的 修剪分支历史记录工具提供了一个仅报表参数,该选项会提供符合条件的存档记录总数,而不会实际执行任何修剪操作。 此外,可以选择仅修剪系统表。 选中此选项后,将仅修剪或记录控制器数据集中符合条件的内部系统表。

修剪分支历史记录的关键概念和注意事项

理解一些与分支历史和修剪分支历史记录工具相关的概念至关重要。 以下部分将进一步探讨这些概念,包括:

此日期前修剪

此日期前修剪是用户定义的一个日期/时间参数,它标志着修剪操作中数据考虑的时间界限。 设置此日期前修剪后,此时间点之前的所有记录都将成为修剪操作的潜在对象,前提是它们不与任何被引用的时刻冲突。

在使用修剪分支历史记录工具之前,明确操作目的并选择一个能反映您特定需求(例如法律要求)的合适“此日期前修剪”值至关重要。

例如,如果将此日期前修剪设置为 2022 年 1 月 1 日,则所有早于此日期的已停用数据都将可能被修剪。

被引用的时刻

被引用的时刻是指阻止某些记录被修剪的时间点。 这些时刻对于维护数据完整性并确保不会删除必要的历史记录至关重要。

修剪分支历史记录工具会检查数据库中要素的历史记录。 如果该工具报告了被引用的时刻,则表示某个版本或要素服务副本正在使用早于请求修剪日期的被引用时刻。 此被引用的时刻可能会阻止数据集中的记录被修剪。 输出日志将报告可使用的最早时刻,包括阻止该工具运行的被引用时刻、要素服务副本和版本信息。

要解决此问题,您可以将此日期前修剪调整为更早的时间,协调相关版本或同步要素服务副本。 此步骤确保保留所有必要的记录并避开被引用的时刻。

例如,一年前,一个新宗地被添加到注册为分支版本化的宗地数据集中。 然后,该宗地在六个月前进行了更新,并在今天再次更新。 如果您将此日期前修剪设置为三个月前,该工具将根据其更新时间识别哪些行是修剪的候选对象。 任何早于此日期前修剪且不是宗地数据集当前状态的表示都可以被移除。

当要素被更新时,该工具确保查询不会返回要素的当前状态表示。 如果当前状态表示为删除,则应修剪该行,因为在修剪时不存在可返回的当前状态。

例如,如果一个宗地在六个月前被删除,其当前状态被标记为已删除。 由于不存在可返回的当前状态,该行将成为修剪的候选对象。

命名版本和协调

创建命名版本时,该时刻的日期和时间将被记录下来,并作为协调操作的公共祖先。 在协调过程中,该工具必须回溯到初始时间,来确定默认版本或命名版本是否发生了更改。 此过程涉及记录初始时间和新时间,并更新公共祖先。

注:

修剪分支历史记录工具仅修剪默认版本中已存档的停用记录。

例如,如果您有一个六个月前创建的命名版本。 在协调过程中,系统会比较默认分支和命名版本的当前状态,从而确定两者是否都发生了更改。 这有助于确保所有更改都得到准确反映,并避免出现被引用的时刻。

要素服务复本

要素服务复本也保存着被引用的时刻,并在同步时向前推进。 该工具确保不会修剪同步所需的行。 这包括维护冲突检测所需的历史记录。

例如,如果一年前创建了一个要素服务复本并已多次同步,该工具将确保不会修剪这些同步所需的行。 这有助于维护不同复本之间的数据完整性。

事务模型

修剪分支历史记录工具需要对数据集进行独占锁定,并将删除所有早于指定此日期前修剪的候选行。 如果工具在修剪操作期间遇到错误,则需要在重新运行该工具之前解决该错误。 此工作流确保数据库保持一致,并且历史记录中没有任何不完整之处。

修剪要素数据集或系统表时,每个输入类或表都将在对每个单独的对象执行操作时被提交。 例如,如果该工具在修剪过程中遇到内存不足的问题,处理将停止。 然后,您可以解决此问题并重新运行该工具,该工具将从停止的位置回复修剪。

根据正在修剪的候选行的数量,可能需要增加数据库资源(例如磁盘空间)以有效支持事务的大小。

公共祖先和上一个祖先时刻

公共祖先和上一个祖先版本属性对于管理分支版本化数据、追踪更改历史记录、避免被引用的时刻以及确保在查询期间检索到要素的正确版本至关重要。 当您从内容窗格中打开活动地图中 Web 要素图层的“版本”视图时,可以查看这些版本属性。 这些列中提供的信息还有助于您解决在使用修剪分支历史记录工具时因被引用时刻而阻止修剪的问题。

  • 公共祖先 - 公共祖先标记两个分支在分叉之前共享的最后一刻,记录了版本与默认版本引用同一时刻的日期和时间。
  • 上一个祖先 - 上一个祖先显示上一次协调之前版本和默认版本引用同一时刻的上一个日期和时间。 在完成新的协调后,它将成为新的上一个公共祖先。

在协调期间,如果检测到冲突,公共祖先和上一个祖先时刻有助于确定是否在版本和默认版本中对同一要素进行了更改。

使用修剪分支历史记录工具时,如果某个版本或要素服务复本引用了公共祖先和上一个祖先时刻,则这些时刻可能会阻止某些记录被修剪。 这确保了重要的历史数据不会被意外删除。 如果修剪分支历史记录工具返回一个错误,指示由于被引用的时刻导致此日期前修剪无效,在版本管理器中检查公共祖先和上一个公共祖先时刻。 在版本管理器中识别这些时刻可以帮助您理解为什么某些记录无法修剪,从而允许您采取协调版本或同步要素服务复本等操作来更新并向前推进被引用的时刻。

了解有关创建查看管理要素服务复本的详细信息

历史数据保留

在运行修剪分支历史记录工具之前,请遵循以下建议来保护历史数据或已存档的行。

  • 定期备份您的企业级地理数据库。
    提示:

    定期测试您的数据库备份和恢复计划也是一项良好的实践。 有关数据库备份和恢复计划选项的具体详细信息和步骤,请查阅您的 RDBMS 文档。

  • 使用修剪分支历史记录工具中的仅生成报表选项,以便在执行修剪之前识别潜在的问题。
  • 在执行修剪之前,将导出的历史记录存储在外部数据库或文件中以供未来参考。

导出历史记录

要在修剪之前保留历史记录,您可以使用先前的时间点导出存档类中的行。 导出历史记录的工作流包括以下步骤:

  • 将存档类添加至地图
  • 使用 GDB_FROM_DATE 字段对记录进行排序,并识别早于修剪时刻的记录。
  • 选择并导出所有早于“此日期前修剪”的记录。

要详细了解使用修剪分支历史记录工具的先决条件和工作流,请参阅修剪分支历史记录

相关主题