При работе с двухсторонними и односторонними репликами те же фильтры и правила класса отношений, которые были применены при создании реплики, будут также использованы в процессе синхронизации. При определении изменений, которые должны быть отправлены, в каждом наборе данных реплики происходит изучение всех изменений, которые были произведены с момента последней синхронизации. Если изменение удовлетворяет условиям фильтров реплики, то оно будет синхронизировано.
Примечание:
При работе с открепленными репликами все редактирования, производимые для открепленной реплики, проходят синхронизацию. Соответственно, для реплик открепления/прикрепления следующие правила не применяются, за исключением поддержки раздела отношений.
На расположенном ниже рисунке отображено то, каким образом в процессе синхронизации используется фильтр области реплики, когда объекты перемещаются в сессии редактирования. Следующие изменения будут отосланы к связанной реплике в процессе синхронизации:
- Объект был перемещен в новое местоположение в рамках области реплики.
- Объект был перемещен за рамки области реплики. Новое местоположение объекта будет обновлено в связанной реплике в процессе синхронизации, даже если он находится за пределами области реплики.
Примечание:
Чтобы изменение было отослано, объект должен был находиться в рамках реплики во время предыдущей синхронизации. Например, если вы произведете вставку объекта, переместите его за пределы реплики, а затем произведете синхронизацию со связанной репликой, то эти изменения не будут отосланы.
- Объект был перемещен из-за пределов области реплики в область реплики.
- При перемещении объекта, который находится за пределами области реплики, он не обновляется в связанной реплике в процессе синхронизации.
.
Даже если изменение не будет удовлетворять фильтрам, оно все равно сможет быть синхронизировано, если оно удовлетворяет следующим требованиям:
- Изменяемый объект принадлежит набору данных с фильтром «только схема» и задействован хотя бы в одном классе отношений.
- Он должен соответствовать одному из критериев:
- Изменяемый объект связан со строкой в другом наборе данных, который удовлетворяет фильтрам. Строка, с которой связан этот объект, не обязательно должна быть изменена с момента последней синхронизации.
- Изменяемый объект находится в наборе данных, который связан с набором данных, имеющим фильтр «только схема».
Это означает, что строки в классах пространственных объектов или таблицах, которые имеют фильтры, отличные от фильтра «только схема», смогут быть синхронизированы, если они будут удовлетворять условиям фильтра.
Эти правила также позволят вам произвести «сцепление» связанных данных. Это может произойти, когда посредством классов отношений в реплике для строки из удаленного класса объектов-адресатов (destination class) может быть проложен путь в обратном направлении посредством нескольких отношений к классу объектов-источников.
Поддержка целостности отношений
При синхронизации производится обслуживание отношений. Например, если в связанную реплику будет добавлено новое отношение, то оно будет обслуживаться при синхронизации задействованных в этом отношении строк. Обслуживание отношения может потребовать изменения значения внешнего ключа реплики, получающей изменения, если для внешнего ключа установлено поле objectid.
Ниже приводятся примеры моделей поведения связанных строк в процессе синхронизации:
Пример
В данном примере для репликации было выбрано три здания с помощью определяющего запроса. Поскольку связанные записи были включены в процессе создания реплики, то связанный класс объектов-источников будет также реплицирован. Поля класса объектов-адресатов, которые связаны с объектами-источниками, были отредактированы в дочерней реплике. При синхронизации реплик эти изменения будут обновлены в связанном классе объектов-адресатов в родительской реплике.
Пример №1
В первом примере отобраны для репликации некоторые пространственные объекты класса origin, здания. Здания связаны через класс простых отношений с атрибутивными записями в таблице, которые не были включены в репликацию. В течение редактирования в дочерней реплике было удалено здание. В процессе синхронизации, чтобы аннулировать отношение с объектом, который был удален, соответствующая запись в поле внешнего ключа в связанном классе-адресате, таблице, установлена как NULL.
Данная модель поведения синхронизации может также привести к удалению строк, представляющих связи в атрибутивной таблице класса отношений (как будет ясно из следующего примера).
Пример №2
В данном примере связь между классом пространственных объектов-источников и таблицей класса объектов-адресатов является атрибутивной. Это означает, что само отношение имеет связанную таблицу. И отношение, и класс объектов-адресатов были исключены в процессе создания реплики. Изменения, произведенные для класса пространственных объектов-источников в дочерней реплике, привели к удалению одного пространственного объекта. При выполнении синхронизации строка в атрибутивной таблице класса отношений, представляющая связь данного объекта с другим объектом в классе объектов-адресатов, будет удалена.
При синхронизации удаляются только связи (отношения); сами связанные объекты никогда не удаляются.