Разрешение архивирования для версионного набора данных произведет создание архивного класса и заполнит его текущими данными версии DEFAULT. Архивный класс использует gdb_from_date и gdb_to_date для поддержки значений времени, когда изменение было заархивировано. При включении архивирования неверсионных данных, создаются поля gdb_from_date и gdb_to_date непосредственно в базовой таблице класса.
Представление времени
Важно понимать то, каким образом ArcGIS производит представление времени, когда изменение было записано. История может быть записана с текущим временем, временем транзакции или с Всемирным координированным временем (UTC). Текущее время отражает момент времени, когда в реальном мире произошло изменение, и обычно записывается пользователем, который внес это изменение. Рабочее время отражает время, когда событие было записано в базу данных. Рабочее время генерируется системой автоматически. UTC является основным стандартом, используемым для регулирования часов и времени в интернете.
Для архивирования версионных данных ArcGIS использует время транзакции, основанное на текущем времени сервера, чтобы фиксировать изменения данных при их сохранении или закреплении в версии DEFAULT. Рабочее время и время, когда событие произошло в реальном мире, очень редко совпадают. Между событием реального мира и записью этого события в базу данных всегда имеется определенный промежуток времени. Например, участок продан 14 мая 2006 г.; но изменения в данные не были занесены до 5 июня 2006 г. Время транзакции (5 июня 2006 г.) занесено в архив как измененные данные.
При произведении изменения ArcGIS произведет архивирование транзакции в архивный класс. Различие между временем появления события в реальном мире и рабочим временем может показаться неважным, но оно станет более заметным, когда вы начнете выполнять запросы к архивированной информации. Задержки в редактировании и обновлении данных в рабочих системах является нормой, и это приводит к появлению временных расхождений и появлению промежутка между действительным и рабочим временем.
Разница между действительным и рабочим временем также является проблемой в ситуациях, когда история фиксируется в многопользовательской среде, где множество пользователей или подразделений редактируют базу данных. Последовательность, с которой изменения производятся и заносятся в журнал базы данных, может быть отличной от последовательности, с которой изменения происходят в реальном мире.
При архивировании неверсионных данных используется время UTC. Изменения в данных записываются тогда, когда исправления сохраняются в сеансе редактирования.
Архивирование, включённое для неверсионных данных
После включения архивирования в базовую таблицу добавляются атрибуты gdb_from_date и gdb_to_date. Атрибут gdb_from_date для всех строк получает временную метку с датой и временем операции включения архивирования. Атрибут gdb_to_date для всех строк получает временную метку 12/31/9999. Если атрибут имеет значение атрибута gdb_to_date 12/31/9999, это означает текущее представление объекта. При сохранении изменений база геоданных автоматически архивирует изменения следующим образом:
- Для вновь созданных объектов значение атрибута gdb_from_date устанавливается равным временной метке операции архивирования, а другой атрибут gdb_to_date получает значение 12/31/9999.
- Обновлённые в сеансе редактирования объекты изменяют соответствующую строку в базовой таблице, устанавливая значение атрибута для атрибута gdb_to_date равным временной метке операции архивирования, и вставляют новую строку, где значение атрибута для атрибута gdb_from_date равно временной метке операции архивирования и атрибут gdb_to_date установлен на 12/31/9999.
- Удалённые в сеансе редактирования объекты изменяют соответствующую строку в базовой таблице, устанавливая значение атрибута gdb_to_date равным временной метке операции архивирования.
Архивирование, включённое для версионных данных
Как только архивирование будет разрешено, все строки, представленные в версии DEFAULT для определенного класса, будут скопированы в архивный класс с той же самой временной отметкой. Атрибут gdb_from_date для всех строк получает временную метку с датой и временем операции включения архивирования. Атрибут gdb_to_date для всех строк будет иметь временную отметку 12/31/9999. Если атрибут имеет значение атрибута gdb_to_date 12/31/9999, это означает текущее представление объекта в версии DEFAULT. Когда изменения будут сохранены и закреплены в версии DEFAULT, база геоданных произведет автоматическую архивацию изменений в архивный класс. Это означает следующее:
- Объекты, созданные в версии DEFAULT, представлены в архивном классе в виде строк, где одно значение атрибута gdb_from_date равно временной метке операции архивирования, а другое gdb_to_date — 12/31/9999.
- Обновлённые в версии DEFAULT объекты изменяют соответствующую строку в архивном классе, устанавливая значение атрибута gdb_to_date равным временной метке операции архивирования, и вставляют новую строку, где один атрибут gdb_from_date равен временной метке операции архивирования, а другой gdb_to_date — 12/31/9999.
- Удалённые в версии DEFAULT объекты обновляют соответствующую строку в архивном классе, устанавливая значение атрибута gdb_to_date равным временной метке операции архивирования.
Обновление архивной таблицы производится в рамках одной транзакции базы данных. Если в ходе транзакции возникнут какие-то ошибки, то будет произведен откат всей операции архивирования и, следовательно, операция сохранения или закрепления завершена не будет. Как только ошибка будет исправлена, вы сможете выполнить операцию сохранения или закрепления.
При выполнении каждой операции архивирования маркер истории версии DEFAULT обновляется вводом значения операции архивирования. Это может обеспечить то, что при выборе маркера истории версии DEFAULT при работе с исторической версией, текущее представление архивного класса будет приравниваться к представлению версионных классов в рабочей версии DEFAULT.
Доступ к архивному классу может действительно потреблять меньше ресурсов базы данных, чем работа с тем же версионным классом.
Запросы к историческим версиям выполняются к архивным классам:

Запросы для рабочих версий все еще выполняются для основных таблиц и дельта-таблиц:

Добавление объектов
Этот объект в наборе данных участков показан за номером 116 в соответствующей строке. Для версионных данных эта строка будет отображаться в архивном классе. Для неверсионных данных эта строка будет находиться в базовой таблице участков. gdb_from_date показывает дату и время создания, а другой атрибут gdb_to_date показывает 12/31/9999, так как объект не был изменён или удалён с момента включения архивирования.

Когда вставляется объект (участок 117), добавляется строка, где атрибут gdb_from_date обновляется временной меткой этой операции закрепления. Атрибут gdb_to_date в новой строке показывает 12/31/9999, так как этот объект ещё не был изменён или удалён.

Примечание:
При выполнении некоторых операций редактирования, например, построения полигона с помощью инструмента Автозавершение полигона, и проверки топологии, в существующие объекты могут быть добавлены дополнительные вершины для поддержания совпадения геометрических элементов у смежных объектов. Например, если вы используете инструмент Автозавершение полигона для создания нового полигона, примыкающего к существующему, в тех местах, где скетч нового полигона пересекает существующий, к последнему будут добавлены новые вершины.
Обновление объектов
Когда объект обновляется, для атрибута gdb_to_date устанавливается значение временной отметки операции архивирования, и вставляется строка, показывающая текущее представление объекта. Атрибут gdb_from_date в этой новой строке устанавливается равным времени операции архивирования, а другой атрибут gdb_to_date показывает 12/31/9999, так как объект ещё не был изменён или удалён.
На следующей схеме показаны два участка — 116 и 117 — с их соответствующими атрибутами gdb_from_date и gdb_to_date до выполнения операции обновления.

Если граница участка 117 расширяется, атрибут gdb_to_date обновляется временной меткой операции архивирования, и создаётся новая строка. Атрибут gdb_from_date в этой новой строке будет иметь значения времени и даты выполнения операции архивирования.

Например, запросы к моментам времени до обновления (7/12/2005 5:34:22 PM) показывают участок 117 в том виде, в котором он существовал до обновления. Запросы к моментам времени до 7/9/2005 2:23:43 PM не покажут земельный участок 117, поскольку к этому времени он еще не был создан. Любые запросы к моменту времени после обновления (7/12/2005 5:34:22 AM) будут показывать земельный участок 117 в его текущем виде с расширенной границей.
Удаление объекта
Когда объект удаляется, атрибут gdb_to_date обновляется временной меткой операции архивирования. На следующей схеме показаны участки 116 и 117 с их соответствующими атрибутам gdb_from_date и gdb_to_date.

Если участок 117 удаляется, атрибут gdb_to_date обновляется временной меткой операции архивирования.

Техническое замечание об архивировании версионных данных
При возникновении описанной ниже ситуации в архивном классе может возникнуть расхождение во времени:
Редактор напрямую редактирует версию DEFAULT и удаляет объект в сессии редактирования.
Редактор затем сохраняет изменения, что обновляет атрибут gdb_to_date архивного класса временной меткой удаления этого объекта.
Если этот же объект будет обновлен в дочерней версии и затем согласован с версией DEFAULT, то возникнет конфликт.
Если в процессе разрешения конфликта редактор выберет заменить конфликт обновленным представлением строки, то эта строка будет восстановлена в версии DEFAULT при закреплении этой версии. Операция архивирования вставляет новую строку в архивный класс и устанавливает значение одного атрибута gdb_from_date равным временной метке, а другого gdb_to_date — 12/31/9999.
Таким образом, при просмотре истории объекта во времени редактор увидит, что между атрибутами gdb_to_date и gdb_from_date фиксируется разрыв дат в тот период, когда объект не существовал в версии DEFAULT.