Репликация слияния

Оценить
(0 голоса)

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

После создания публикации на публикующем сервере Snapshot Agent подготавливает файлы, содержащие схему таблицы и данные, и сохраняет их в рабочем каталоге на существующем распределяющем сайте. (В.процессе слияния репликации база данных distribution содержит только лишь состояние процесса репликации.) Затем используется синхронизирующее задание для другого компонента- Merge Agent, который отправляет все измененные данные на другой сайт. Помните, что Merge Agent может отправлять реплицированные данные как подписчикам, так и издателям. Перед тем как стартует процесс пересылки, Merge Agent также сохраняет соответствующую информацию, которая позволяет отслеживать конфликты изменений.

Когда вы используете сценарий слияния репликаций, система выполняет три важных изменения в схеме для публикуемой базы данных:

♦ она идентифицирует уникальный столбец для каждой реплицируемой строки;

♦ добавляет несколько системных таблиц;

♦ создает триггеры для таблиц, для которых выполняется репликация данных.

Database Engine создает или находит уникальный столбец в таблице для реплицируемых данных. Если базовая таблица уже содержит столбец с типом данных uniqueidentifier и со свойством rowguidcol, то система использует этот столбец для идентификации каждой реплицируемой строки. Если в таблице не существует подобного столбца, то система добавляет столбец rowguid с типом данных uniqueidentifier и свойством rowguidcol.

Добавление новых системных таблиц предоставляет способ определения и разрешения любых конфликтов обновления. Для разрешения конфликта Database Engine сохраняет все изменения, связанные с реплицируемыми данными, в системных таблицах слияния msmerge_contents и msmerge_tombstone и соединяет их (используя свойство rowguid существующего столбца с типом данных uniqueidentifier) с таблицей, которая содержит реплицируемые данные.

Database Engine для всех таблиц, содержащих реплицируемые данные, создает триггеры на всех сайтах для отслеживания изменения данных в каждой реплицируемой строке. Эти триггеры определяют, какие были выполнены изменения в таблице и записывают их в системные таблицы msmergecontents и msmerge_tombstone.

Выявление конфликта выполняется Merge Agent при использовании происхождения столбца в системной таблице msmergecontents. Разрешение конфликта может быть выполнено на основе приоритета или на основе пользователя.

Разрешение конфликта на основе приоритета означает, что любой конфликт между новым и старым значениями в реплицируемой строке разрешается автоматически на основе назначенных приоритетов. (Особым случаем метода на основе приоритета является метод «первый побеждает», при котором первое по времени изменение реплицируемой строки становится победителем.) Метод на основе приоритета является методом по умолчанию. Метод на основе пользователя применяет пользовательский триггер, основанный на бизнес-правилах, определенных администратором базы данных для разрешения конфликтов.


Одноранговая репликация транзакций
Модели репликации
Центральный издатель с распространителем
Центральный подписчик с множеством издателей
Множество издателей с множеством подписчиков

Добавить комментарий


Защитный код
Обновить

© 2021 serversql.ru. Все права защищены.