Доступно с лицензией Standard или Advanced.
При создании реплики данные и схема копируются из родительской базы геоданных в дочернюю базу геоданных. Эти данные включают в себя строки, которые должны быть реплицированы из определенных наборов данных в эту реплику. Схема состоит из полей, доменов, подтипов и прочих свойств, описывающих реплицируемые данные.
Исходно схемы в обеих репликах будут одинаковыми, но с течением времени в каждой из схем реплик могут быть произведены изменения. Например, в одной из реплик для завершения проекта может потребоваться добавление дополнительных полей, а в связанной с ней реплике может потребоваться использование нового домена для существующего поля. Как только это произойдет, схемы двух реплик больше не будут одинаковыми.
Для работы со схемами реплик, имеющими расхождения, были созданы следующие функции:
Сохранение различий схем — вы можете выбрать опцию, которая сможет позволить вашим репликами произвести изменения схемы независимо друг от друга. Репликация баз геоданных разработана так, что допускаются различия схем разных реплик, но при этом в большинстве случаев синхронизация данных продолжает работать.
Если вы изменяете схему в одной реплике, но не делайте этого в другой реплике, то вы должны быть готовы к появлению следующих проблем:
- Правка не синхронизируется — При синхронизации данных будут импортированы изменения только для тех таблиц и полей, которые являются общими для обеих реплик. Если для поля, которого в связанной реплике нет, будет выполнено изменение, то оно не будет внесено при импортировании изменений. Другим примером является ситуация, в которой геометрическая сеть удаляется в одной реплике, но не удаляется в другой. Когда такое произойдет, лишенный связи класс соединений (junction class) будет удален, и, следовательно, изменения, произведенные в классе соединений связанной реплики, не будут применены.
- Некорректные значения — Изменения, которые задействуют домены, подтипы, правила связности и правила отношений, будут применены при синхронизации изменений. Для проверки новых импортированных значений могут быть использованы инструменты проверки панели инструментов Редактор (Editor).
- Ошибки синхронизации данных — Это может произойти, если в обеих репликах изменения схемы вносятся вручную. Например, вы можете захотеть добавить поле в таблице. Если вы сделаете это, то вам будет нужно внести то же самое изменение схемы во всех репликах. В случае появления каких-либо расхождений (например, поле имеет в одной реплике тип string, а в другой реплике тип integer), при синхронизации данных возникнет ошибка.
- Неподдерживаемые изменения — Некоторые типы изменений схемы могут вызвать ошибку при синхронизации, но при произведении изменения предупреждения выводиться не будет. Данные изменения не могут быть выявлены на уровне системы репликации базы геоданных. Они включают в себя операции на уровне базы данных, например, изменения прав доступа к таблице в базе данных. Если права доступа к реплицированным данным будут изменены на «только для чтения», то при попытке импорта изменений из связанной реплики возникнет ошибка.
Применение изменений схемы между репликами — Изменение схемы для приведения ее в соответствие связанной реплике - это процесс, отдельный от синхронизации данных. Для этого предназначены три инструмента, такие как Сравнить схемы реплик (Compare Replica Schema), Импорт схемы реплики (Import Replica Schema) и Экспорт схемы реплики (Export Replica Schema). Эти инструменты находятся на панели инструментов Распределенная база геоданных (Distributed Geodatabase) в ArcMap, ниспадающем меню Распределенная база геоданных (Distributed Geodatabase) в дереве Каталога и как отдельные инструменты геообработки.
Эти инструменты используются при обработке, выполняемой в два этапа: сначала запускается инструмент Сравнить схему реплики (Compare Replica Schema), генерирующий XML-файл с изменениями схемы, а затем эти изменения импортируются с помощью инструмента Импорт схемы реплики (Import Replica Schema). Если вы работаете в автономной среде, сначала надо запустить инструмент Экспорт схемы реплики (Export Replica Schema), чтобы экспортировать схему вместе с изменениями в файл XML. Этот файл потом можно передать на носителе - CD или DVD - в качестве входного для инструмента Сравнить схему реплики (Compare Replica Schema).
Ниже приводится список возможных изменений схемы, а также могут ли они быть произведены:
Добавить | Изменение | Удаление | |
Поле | Да | Да (домены) | Да |
Домен | Да | Да | Да |
Таблица/Класс пространственных объектов | Да | Да (домены, добавить/удалить поле) | Да |
Геометрическая сеть | Нет | Нет | Да |
Топология | Нет | Нет | Да |
Набор классов объектов | Нет | Нет | Да |
Класс отношений | Нет | Да (добавить/удалить поле, домены) | Да |
С помощью обсуждаемых здесь инструментов нельзя добавить в реплику класс пространственных объектов или таблицу. Для этого надо выполнить код ArcObjects. См. пример этого кода
Удаление данных из реплики — Список наборов данных, включенных в каждую из реплик, хранится в реплике базы геоданных. Если вы удалите один из этих наборов данных, то будет выведено сообщение с предупреждением. Если вы продолжите работу, удалив набор данных, то он будет удален из списка наборов данных реплики. Вы можете добавить данные обратно в реплику с помощью ArcObjects API. Имейте в виду:
- Если вы удаляете таблицу или класс пространственных объектов (FC) и затем хотите вернуть его обратно в реплику, то вы должны запустить выполнение кода для его возврата. Простое повторное создание таблицы работать не будет.
- Если вы удалите геометрическую сеть или топологию, то уже не сможете вернуть ее обратно в реплику. Однако вы все еще сможете производить синхронизацию, хотя исключения не будут поддерживаться. Вы не сможете произвести синхронизацию изменений в потерявшем связь классе соединений (junction class).
- Удаление набора классов объектов и возвращение классов объектов обратно ни на что не влияет.
- Вы не сможете вернуть обратно в реплику класс отношений.
Идентификация различий схемы — Если вы захотите отслеживать изменения схемы более подробно, то вы сможете использовать имеющиеся инструменты для произведения сравнения схем реплик перед выполнением импорта изменений данных. В мастере Импорт схемы реплики перечисляются различия схем.
наилучшие способы
Лучше всего не производить изменения схемы. Изменение схемы может привести к нарушению целостности реплик, а выполнение дополнительных операций по внесению изменений схемы может снизить уровень производительности. Однако существуют некоторые случаи, когда изменение схемы может быть выполнено.
Ниже приводятся указания, выполнение которых сможет обеспечить эффективную работу с изменениями схемы:
- Блокируйте систему — Убедитесь в том, что сотрудники, использующие систему, работают с использованием корректных прав доступа. Вам может понадобиться написать приложение, которое сможет предотвратить выполнение незапланированных изменений схемы, например, добавления или удаления столбца.
- Периодически производите сравнения схем — Поскольку репликация является отказоустойчивым процессом, работа систем, которые производят синхронизации, скорее всего не будут прервана изменениями схемы. Однако хорошей практикой является периодическое выполнение сравнения схемы. Это позволит вам быть уверенными в том, что незапланированные изменения схемы не были произведены.
- Не производите синхронизацию до полного завершения выполнения задачи обслуживания — Иногда может быть нужно произвести временные изменения схемы для завершения задачи обслуживания. Например, некоторым организациям нужно, чтобы геометрическая сеть была удалена и перестала быть версионной, а затем была построена заново и зарегистрирована как версионная. Пока сеть не будет повторно зарегистрирована как версионная, синхронизация данных работать не будет.
- Производите изменения схемы на уровне системы — Если вам необходимо произвести изменения схемы, то лучше производить эти изменения на уровне системы в структурированном виде. Например, вам может понадобиться использовать метод внесения изменений «сверху вниз», при котором изменения производятся в корневой реплике, а затем распространяются уровнями ниже.