Доступно с лицензией Standard или Advanced.
Создание версий позволяет нескольким редакторам модифицировать одни и те же данные в многопользовательской базе геоданных или в базе геоданных рабочей группы без использования блокировок и создания копий данных.
Для редактирования классов объектов, которые участвуют в топологии, наборах сетевых данных или в геометрических сетях, а также для редактирования данных земельных участков, необходимо зарегистрировать данные как версионные. Это необходимо потому, что, когда вы редактируете объект в сети, топологии или в данных по земельным участкам, не все объекты получают блокировку, поэтому другие пользователи могут редактировать остальные участки сети или топологии таким образом, что они будут конфликтовать с вашим редактированием.
Пользователи всегда подключаются к многопользовательской базе геоданных или базе геоданных рабочей группы, используя определенную версию. Когда вы подключаетесь, вы задаете версию, к которой вы будете присоединены. По умолчанию вы подключаетесь к версии Default.
Что такое версия?
Версия – это вариант представления базы геоданных, который позволяет разделять редактирование. Версии позволяют вам и всем остальным пользователям, подключенным к той же версии, видеть вносимые вами изменения. Пользователи, которые подключились к другим версиям, не увидят ваших изменений, пока вы не выполните согласование и отправите изменения в родительскую версию.
Версия Default
Версия Default является основной (корневой) версией и, следовательно, предком всех других версий.
В отличие от других версий, версия Default существует всегда и не может быть удалена. В большинстве стратегий организации рабочих потоков данная версия является публикуемой версией базы геоданных и представляет собой текущее состояние разрабатываемой системы. Вы производите обслуживание и время от времени обновление версии Default путем закрепления в ней изменений из других версий. Вы также можете непосредственно редактировать версию по умолчанию Default, как и любую другую версию.
Создание других версий
Вы можете создать версию путем создания дочерних объектов или ветвей из любой существующей версии. Вы можете создать первую версию путем создания дочерней версии (т.е. версии, являющейся версией Default). При создании новой версии она будет точно такая же, как и версия Default. С течением времени, когда в версии Default и новой версии будут производиться изменения, они станут различаться.
У базы геоданных может быть несколько версий. Ниже показано диалоговое окно Менеджер версий, доступное через ArcGIS for Desktop. В этом примере показано представление дерева диалогового окна, в котором изображена версия Default и четыре других версии, а также то, как они между собой связаны. Версии Cases и Base являются дочерними по отношению к версии Default, а версии Case1 и Case2 – по отношению к версии Cases.
При создании версии у вас создается ложное впечатление того, что вы создаете копию всей базы геоданных. Независимо от того, сколько у вас версий, каждая таблица и каждый класс пространственных объектов хранятся в базе геоданных лишь в одном экземпляре. ArcGIS оставляет классы пространственных объектов или таблицы в их исходном формате, а производит запись всех производимых изменений в таблицы, называемые дельта-таблицами (таблицами изменений).
Версии могут одновременно редактироваться несколькими пользователями.
Как работают версии и версионное редактирование
Перед тем, как вы сможете выполнять версионное редактирование для данных любой из версий, наборы данных надо зарегистрировать как версионные.
При регистрации набора данных (класса объектов, набора классов объектов или таблицы) в качестве версионного, создаются две дельта-таблицы: таблица A (от слова Adds – добавления) для записи вставок и обновлений, а также таблица D (от слова Deletes – удаления) для хранения удалений. Каждый раз, когда вы добавляете или удаляете какие-нибудь записи в наборе данных, при этом добавляются соответствующие строки в одну или обе дельта-таблицы. Таким образом, в версионный набор данных входит исходная таблица (она называется основная или бизнес-таблица) и все изменения в дельта-таблицах. База геоданных отслеживает, к какой версии вы были подключены, когда вносили изменения, попавшие в дельта-таблицы. Когда вы делаете запрос или отображаете набор данных из версии, ArcGIS берет соответствующие записи из исходной таблицы и дельта-таблиц, чтобы отобразить непрерывный набор данных для этой версии.
Все редактирования класса пространственных объектов или таблицы записываются в одни и те же дельта-таблицы, независимо от версии, в которой были произведены изменения. Это означает, что каждая версия обращается только к определенному набору строк из этих трех таблиц. Так как же ArcGIS отслеживает, к каким версиям относятся строки дельта-таблиц?
Каждая строка в таблицах A и D отмечается с помощью целочисленного идентификатора, называемого State ID, который указывает на то, когда строка была добавлена к таблице. Каждый раз, когда вы редактируете версию, создается новое состояние и новая строка добавляется в одну или обе дельта-таблицы. Вы можете представлять себе состояния в виде элемента древовидной структуры, где каждая ветвь описывает развитие версии. Набор состояний, записывающих серию изменений, начиная с базисной (основной) таблицы, и заканчивая текущим состоянием версии, называется родословной (lineage). При отображении или формировании запроса к версии ArcGIS производит запрос к родословной версии для получения значений идентификаторов State ID, а затем извлекает соответствующие записи из таблиц A и D.
По мере того, как база геоданных редактируется, дельта-таблицы увеличиваются в размерах, и возрастает количество состояний. Чем больше таблицы и чем больше состояний, тем больше данных ArcGIS должен будет обрабатывать каждый раз при отображении версии или выполнении к ней запроса. Для поддержания должного уровня производительности базы данных администратору базы необходимо периодически выполнять команду Сжать для удаления неиспользуемых данных
Опция перемещения изменений в базу
Если вы задаете опцию для переноса изменений в базу, при регистрации данных как версионных, изменения записываются в дельта-таблицы. Однако при изменении версии Default и сохранении изменений, изменения будут переноситься из дельта-таблиц в основные таблицы – они не будут оставаться в дельта-таблицах. Помните, что это действует только при редактировании версии Default. Редактирование дочерних версий не сразу переносится в базовую таблицу.
Опция перемещения изменений в основную таблицу полезна, если выполняется следующее:
- Изменения, которые вы сделали, могут быть внесены всего за несколько минут.
- Данные не участвуют в сети или топологии.
- Вы подключаетесь к версионной базе геоданных, используя сторонние приложения.
Приложения третьих лиц, как правило, настроены на проведение запросов только к основным таблицам. У них нет доступа к дельта-таблицам. Если вы будете использовать поддержку версий и не выберете опцию перемещения изменений в основную таблицу, то эти приложения не смогут применить изменения, внесенные в других версиях, которые не были согласованы и закреплены в версии Default. Помните, что если вы редактируете версии, отличные от версии Default, изменения записываются в тех же дельта-таблицах. При сохранении изменения будут оставаться в дельта-таблицах. Однако при переносе изменений в версию Default они будут перемещены из дельта-таблиц в основные таблицы. При переносе изменений в версии, отличные от версии Default, изменения останутся в дельта-таблицах, как было бы, если бы вы не определили эту опцию.
Разрешения и редактирование версии
Владелец версии (создавший ее человек) может устанавливать права доступа к версии. Ниже перечислены опции разрешений на доступ.
- Частный доступ (Private): только владелец версии может просматривать и редактировать наборы данных в версии.
- Защищенный доступ (Protected): любой пользователь может просматривать наборы данных в версии, но редактировать их может только владелец.
- Общий доступ (Public): любой пользователь может просматривать и редактировать предоставленные наборы данных, при условии предоставления доступа к наборам данных.
Права доступа к версии устанавливаются во время ее создания, но их также можно изменить в диалоговом окне Менеджер версий. Более подробно см. в разделах Создание версий и установка разрешений на доступ и Работа со свойствами версий.
Для редактирования, подключитесь к определенной версии базы геоданных из ArcMap и добавьте на карту данные, которые были зарегистрированы как версионные.
По умолчанию, все сеансы редактирования в ArcMap являются версионными. Соответственно, если у вас на карте есть версионные данные, вы можете начать их редактировать, как только откроете сеанс редактирования. Чтобы открыть сеанс редактирования, щелкните Начать редактирование в раскрывающемся меню Редактор на панели инструментов Редактор.
Редактирования, производимые в каждой версии, будут применяться только для этой версии. Исключения составляют изменения схемы. При изменении схемы версии – например, при добавлении нового поля таблицы – это изменение отражается во всех других версиях. Изменять схему набора данных могут только владельцы данных.
Завершив редактирование, согласуйте изменения и отправьте их в родительскую версию.
Согласование и закрепление изменений
При согласовании и закреплении изменения собираются в любой версии, являющейся предшествующей для той, с которой вы работаете, например в родительской или в версии Default. Согласование изменений включает в себя процесс сравнения изменений в версии, которую вы редактируете, с версией, в которую вы хотите эти изменения внести.
При изменении данных в версии для данных не используются блокировки. Два редактора, работающие над одними данными либо в одной версии, либо в разных, могут создавать конфликты. Конфликт возникает тогда, когда в сравниваемых версиях отличается одна и та же строка. В процессе согласования отображаются все конфликты и предоставляется возможность выбрать, какое представление строки следует сохранить.
На практике конфликты редактирования возникают редко, поскольку объемы редактирования по сравнению с объемами используемых географических данных незначительны. В корректно спроектированных рабочих потоках, цена процесса согласования конфликтов значительно меньше по сравнению с выгодами, получаемыми от того, что вы не устанавливаете блокировок или не производите открепления данных (check out) во время выполнения транзакции.
Как только вы закончите согласование, вы сможете произвести закрепление изменений. Это позволит вам закрепить произведенные изменения в другой версии. Если вам больше не будет нужна эта версия, то вы можете удалить ее. В противном случае, вы сможете редактировать ее в будущем и снова производить согласование и закрепление изменений.
Версии: пример
Для получения представления об использовании версий давайте изучим пример работы с данными городского водопроводного хозяйства. У водопроводного хозяйства имеется база геоданных пространственных объектов, которые представляют текущее состояние всех водопроводов, клапанов, насосов и других элементов системы водоснабжения. Этому хозяйству требуется добавить к существующей системе водоснабжения новую линию водопровода.
Водное хозяйство создает новую версию из версии Default и называет ее Extension project. Данная версия должна содержать проект нового расширения системы водоснабжения. Однако сотрудники отдела водного хозяйства не уверены, нужно использовать 16-дюймовые или 24-дюймовые трубы для этого расширения. Поэтому для изучения эффективности использования труб разного диаметра они создали две новые версии из версии Extension project: одну для проекта с 16-дюймовыми трубами и одну для проекта с 24-дюймовыми трубами.
По ходу работы они рассчитали, что 24-дюймовые трубы прослужат для нужд водоснабжения на этом участке расширения более 12 лет, и что их исходная цена внедрения будет оправдана. Проект с 24-дюймовыми трубами получил одобрение, проверен на предмет точности и закреплен в версии Extension project.
Спустя несколько месяцев строительство новой линии было завершено. Для обновления публикуемой версии базы данных версия Extension project была просмотрена на предмет точности, согласована и закреплена в версии Default.