Процесс архивирования

Разрешение архивирования для версионного набора данных произведет создание архивного класса и заполнит его текущими данными версии DEFAULT. Архивный класс использует поля gdb_from_date и gdb_to_date для поддержки значений времени, когда изменение было заархивировано.

Представление времени

Важно понимать то, каким образом ArcGIS производит представление времени, когда изменение было записано. История может быть записана либо в виде действительного времени (valid time) или в виде рабочего времени (transaction time). Настоящее время (valid time) отражает настоящий момент времени, когда изменение произошло в реальном мире и было записано пользователем, который произвел это изменение. Рабочее время (transaction time) отражает время, когда событие было записано в базу данных. Рабочее время генерируется системой автоматически.

ArcGIS использует рабочее время, которое основано на текущем серверном времени, для записи изменений данных, когда изменения сохраняются и закрепляются в версии DEFAULT. Рабочее время и время, когда событие произошло в реальном мире, очень редко совпадают. Между событием реального мира и записью этого события в базу данных всегда имеется определенный промежуток времени. Например, земельный участок был продан 14 мая 2006; однако это изменение не было записано до 5 июня 2006. Для этого изменения в архивный класс будет записано рабочее время 5 июня 2006.

При произведении изменения ArcGIS произведет архивирование транзакции в архивный класс. Различие между временем появления события в реальном мире и рабочим временем может показаться неважным, но оно станет более заметным, когда вы начнете выполнять запросы к архивированной информации. Задержки в редактировании и обновлении данных в рабочих системах является нормой, и это приводит к появлению временных расхождений и появлению промежутка между действительным и рабочим временем.

Различие между действительным и рабочим временем также приводит к появлению сложностей в тех ситуациях, когда в многопользовательской среде, где базу данных редактируют много разных пользователей или подразделений, происходит запись истории. Последовательность, с которой изменения производятся и заносятся в журнал базы данных, может быть отличной от последовательности, с которой изменения происходят в реальном мире.

Разрешение архивирования

Как только архивирование будет разрешено, все строки, представленные в версии DEFAULT для определенного класса, будут скопированы в архивный класс с той же самой временной отметкой. Атрибут gdb_from_date для всех строк будет иметь временную отметку с датой и временем, когда операция архивирования была разрешена. Атрибут gdb_to_date для всех строк будет иметь временную отметку 12/31/9999. Всякий раз, когда атрибут будет иметь значение 12/31/9999 для gdb_to_date, он будет текущим представлением объекта в версии DEFAULT. Когда изменения будут сохранены и закреплены в версии DEFAULT, база геоданных произведет автоматическую архивацию изменений в архивный класс. Это означает, что:

Обновление архивной таблицы производится в рамках одной транзакции базы данных. Если в ходе транзакции возникнут какие-то ошибки, то будет произведен откат всей операции архивирования и, следовательно, операция сохранения или закрепления завершена не будет. Как только ошибка будет исправлена, вы сможете выполнить операцию сохранения или закрепления.

При выполнении каждой операции архивирования маркер истории версии DEFAULT обновляется вводом значения операции архивирования. Это может обеспечить то, что при выборе маркера истории версии DEFAULT при работе с исторической версией, текущее представление архивного класса будет приравниваться к представлению версионных классов в рабочей версии DEFAULT.

Доступ к архивному классу может действительно потреблять меньше ресурсов базы данных, чем работа с тем же версионным классом.

Разработчикам приложений, которые заинтересованы в использовании программного компонента события (event), производящего регистрацию момента операции архивирования, следует обратиться к событию OnarchiveUpdated интерфейса Iversionevents2 пакета Software Developer Kit.

Запросы к историческим версиям выполняются к архивным классам:

Активная таблица
Активная таблица

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

Таблицы базовая, добавлений и удалений
Таблицы базовая, добавлений и удалений

Добавление пространственного объекта

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

добавление пространственных объектов в

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

добавление объекта 2
ПримечаниеПримечание:

При выполнении некоторых операций редактирования, например построение полигона с помощью инструмента Автозавершение полигона (Auto-Complete Polygon), и проверка топологии, в существующие объекты могут быть добавлены дополнительные вершины для поддержания совпадения геометрических элементов у смежных объектов. Например, если вы используете инструмент Автозавершение полигона (Auto-Complete Polygon) для создания нового полигона, примыкающего к существующему, в тех местах, где скетч нового полигона пересекает существующий, к последнему будут добавлены новые вершины.

Обновление пространственного объекта

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

На следующем рисунке отображается два земельных участка, 116 и 117, с соответствующими им атрибутами gdb_from_date и gdb_to_date в архивном классе до выполнения операции обновления.

Обновление пространственного объекта

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

Обновление объекта приводит к обновлению значения gdb_to_date.

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

Более подробно о запросах к архивному классу

Удаление пространственного объекта

При удалении объекта атрибут gdb_to_date будет обновлен значением временной отметки операции архивирования. На следующем рисунке отображены земельные участки, 116 и 117, с соответствующими им атрибутами gdb_from_date и gdb_to_date в архивном классе.

Удаление пространственного объекта

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

Удаление объекта приводит к обновлению значения 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.

Связанные темы

12/10/2012