Поделиться через


Обзор репликации слиянием

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

Как правило, репликация слиянием применяется в средах «сервер-клиент». Репликация слиянием подходит для любой из следующих ситуаций.

  • Несколько подписчиков могут обновлять одни и те же данные в разное время и передавать эти изменения на издатель и на другие подписчики.

  • Подписчикам нужно получить данные, внести изменения в режиме «вне сети» и позднее синхронизировать изменения с издателем и другими подписчиками.

  • Каждому подписчику нужна индивидуальная секция данных.

  • Поскольку возможно возникновение конфликтов, необходимы средства по распознаванию и разрешению конфликтов.

  • Приложению требуется конечное изменение данных, а не доступ к промежуточным состояниям данных. Например, если строка меняется пять раз на подписчике до его синхронизации с издателем, на издателе строка изменится только один раз для отображения конечного изменения данных (то есть, пятого значения).

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

Для отслеживания изменений репликация слиянием и репликация транзакций с подписками, обновляемыми посредством очередей, должны быть способны уникально идентифицировать каждую строку в каждой публикуемой таблице. Репликация слиянием добавляет к каждой таблице столбец rowguid, если только таблица уже не содержит столбец данных типа uniqueidentifier с установленным свойством ROWGUIDCOL (в этом случае используется этот столбец). Если таблица удалена из публикации, столбец rowguid удаляется; если существующий столбец был использован для слежения, столбец не удаляется. Фильтр не должен включать столбец rowguidcol, используемый репликацией для идентификации строк. Функция newid() предоставляется по умолчанию для столбца rowguid, однако клиенты могут указать идентификатор guid для каждой строки, если необходимо. Однако не следует указывать значение 00000000-0000-0000-0000-000000000000.

Сведения о реализации репликации слиянием см. в разделе Проектирование и реализация (репликация).

Сведения об общих сценариях, использующих репликацию слиянием, см. в разделе Репликация данных между сервером и клиентами.