Введение в версионное редактирование

Эта тема относится только к ArcGIS for Desktop Standard и ArcGIS for Desktop Advanced.

Создание версий позволяет нескольким пользователям редактировать одни и те же данные в базе геоданных ArcSDE без использования блокировок и создания копий данных.

Для редактирования классов объектов, которые участвуют в топологии, наборах сетевых данных или в геометрических сетях, а также для редактирования данных земельных участков, необходимо зарегистрировать данные как версионные. Это необходимо потому, что, когда вы редактируете объект в сети, топологии или в данных по земельным участкам, не все объекты получают блокировку, поэтому другие пользователи могут редактировать остальные участки сети или топологии таким образом, что они будут конфликтовать с вашим редактированием.

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

Версия DEFAULT

Каждая база геоданных ArcSDE имеет версию по умолчанию с именем DEFAULT; следовательно, опция работы с версиями для баз геоданных доступна всегда. Данная опция представляет собой неотъемлемую часть работы ArcGIS, и ее не нужно отдельно устанавливать или настраивать.

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

Версия DEFAULT является основной (корневой) версией и, следовательно, предком всех других версий.

Создание других версий

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

У базы геоданных может быть несколько версий. Ниже показано диалоговое окно Менеджер версий (Version Manager), доступное в ArcGIS for Desktop. В этом примере показано представление дерева диалогового окна, в котором изображена версия DEFAULT и четыре других версии, а также то, как они между собой связаны. Версии Cases и Base являются дочерними по отношению к версии DEFAULT , а версии Case1 и Case2 – по отношению к версии Cases.

База геоданных с несколькими версиями

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

Пользователи могут одновременно редактировать все версии. Несколько пользователей смогут редактировать одну и ту же версию в одно и то же время.

Как работают версии и версионное редактирование

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

Имейте в виду, что регистрация набора данных как версионных – не то же самое, что создание версии. При создании версии получается такого рода "вид" базы геоданных, который позволяет редактировать версионные данные и сразу видеть внесенные вами изменения. Другие подключившиеся к этой же версии пользователи увидят изменения только после обновления вида. Но те пользователи, которые подключились к другим версиям, не увидят ваших изменений, пока вы не выполните согласование и отправите изменения в родительскую версию. В приведенном выше примере сразу после отправки изменений в версию DEFAULT они становятся видимыми независимо от версии, к которой вы подключены.

И наоборот, регистрация набора данных (класса объектов, набора классов объектов или таблицы) в качестве версионного готовит его к версионному редактированию. При регистрации набора данных в качестве версионного создаются две дельта-таблицы: таблица A (от слова Adds – добавления) для вставок и обновлений, а также таблица D (от слова Deletes – удаления) для удалений. Каждый раз, когда вы добавляете или удаляете какие-нибудь записи в наборе данных, при этом добавляются соответствующие строки в одну или обе дельта-таблицы. Таким образом, версионный набор данных состоит из исходной таблицы (она называется основной или базовой) плюс из всех изменений в дельта-таблицах. База геоданных отслеживает, к какой версии вы были подключены, когда вносили изменения, попавшие в дельта-таблицы. Когда вы делаете запрос или отображаете набор данных из версии, ArcGIS берет соответствующие записи из исходной таблицы и дельта-таблиц, чтобы отобразить непрерывный набор данных для этой версии.

Все редактирования класса пространственных объектов или таблицы независимо от версии, в которой были произведены изменения, заносятся в одни и те же дельта-таблицы. Итак, все строки в базисной (основной) таблице, таблицах A и D представляют совокупным образом все версии класса пространственных объектов или таблицы. Это означает, что каждая версия обращается только к определенному набору строк из этих трех таблиц. Так как же ArcGIS «запоминает», к каким версиям относятся строки дельта-таблиц?

Каждая строка в таблицах A и D отмечается с помощью целочисленного идентификатора, называемого State ID, который указывает на то, когда строка была добавлена к таблице. Каждый раз, когда вы редактируете версию, создается новое состояние и новая строка добавляется в одну или обе дельта-таблицы. Вы можете представлять себе состояния в виде элемента древовидной структуры, где каждая ветвь описывает развитие версии. Набор состояний, записывающих серию изменений, начиная с базисной (основной) таблицы, и заканчивая текущим состоянием версии, называется родословной (lineage). При отображении или формировании запроса к версии ArcGIS производит запрос к родословной версии для получения значений идентификаторов State ID, а затем извлекает соответствующие записи из таблиц A и D.

По мере того, как база геоданных редактируется, дельта-таблицы увеличиваются в размерах, и возрастает количество состояний. Чем больше таблицы и чем больше состояний, тем больше данных ArcGIS должен будет обрабатывать каждый раз при отображении версии или выполнении к ней запроса. Для поддержки производительности базы данных администратор ArcSDE должен периодически выполнять команду Сжать (Compress) для удаления неиспользуемых данных, а затем команду Анализировать (Analyze) для обновления статистики базы данных.

Более подробно об операции сжатия базы геоданных

Регистрация данных как версионных с опцией перемещения изменений в базу

Когда вы регистрируете данные, которые не участвуют в сетях или топологиях, как версионные, вы можете указать, хотите ли вы, чтобы изменения версии DEFAULT переносились в базисные (основные) таблицы. При выборе этой опции изменения будут по-прежнему заноситься в дельта-таблицы. Однако при сохранении изменения будут переноситься из дельта-таблиц в основные таблицы – они не будут оставаться только в дельта-таблицах.

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

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

Разрешения и редактирование версии

Владелец версии (создавший ее человек) может устанавливать права доступа к версии. Ниже перечислены опции разрешений на доступ.

Права доступа к версии устанавливаются во время ее создания, но их также можно изменить в диалоговом окне Менеджер версий (Version Manager). Более подробно см. в разделах Создание версий и установка разрешений на доступ и Работа со свойствами версий.

Можно редактировать данные в определенной версии в ArcGIS, подключившись к определенной версии и добавив данные, которые были зарегистрированы как версионные, в ArcMap.

ПодсказкаПодсказка:

Вы также можете переключать версии, к которым вы подключаетесь в ArcMap. Более подробно см. в разделе Изменение версий в ArcMap.

По умолчанию, все сеансы редактирования в ArcMap являются версионными. Соответственно, если у вас на карте есть версионные данные, вы можете начать их редактировать, как только откроете сеанс редактирования. Чтобы открыть сеанс редактирования, щелкните Начать редактирование (Start Editing) в раскрывающемся меню Редактор (Editor) на панели инструментов Редактор (Editor).

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

Завершив редактирование, вы согласуете изменения и отправляете в родительскую версию.

Согласование и закрепление изменений

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

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

На практике конфликты редактирования возникают редко, поскольку объемы редактирования по сравнению с объемами используемых географических данных незначительны. В корректно спроектированных рабочих потоках, цена процесса согласования конфликтов значительно меньше по сравнению с выгодами, получаемыми от того, что вы не устанавливаете блокировок или не производите открепления данных (check out) во время выполнения транзакции.

Как только вы закончите согласование, вы сможете произвести закрепление изменений. Это позволит вам закрепить произведенные изменения в другой версии. Если вам больше не будет нужна эта версия, то вы можете удалить ее. В противном случае, вы сможете редактировать ее в будущем и снова производить согласование и закрепление изменений.

ПодсказкаПодсказка:

Вместо согласования вручную можно использовать инструмент геообработки Согласование версий (Reconcile Versions) для согласования нескольких версий или скрипт Python для пакетного согласования и закрепления версий.

Версии: пример

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

Водное хозяйство создает новую версию из версии DEFAULT и называет ее Extension project. Данная версия должна содержать проект нового расширения системы водоснабжения. Однако сотрудники отдела водного хозяйства не уверены, нужно использовать 16-дюймовые или 24-дюймовые трубы для этого расширения. Поэтому для изучения эффективности использования труб разного диаметра они создали две новые версии из версии Extension project: одну для проекта с 16-дюймовыми трубами и одну для проекта с 24-дюймовыми трубами.

По ходу работы они рассчитали, что 24-дюймовые трубы прослужат для нужд водоснабжения на этом участке расширения более 12 лет, и что их исходная цена внедрения будет оправдана. Проект с 24-дюймовыми трубами получил одобрение, проверен на предмет точности и закреплен в версии Extension project.

Спустя несколько месяцев строительство новой линии было завершено. Для обновления публикуемой версии базы данных версия Extension project была просмотрена на предмет точности, согласована и закреплена в версии DEFAULT.

Версии: пример городского водопроводного хозяйства

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

9/11/2013