Россия, г.Кемерово ул.Весенняя д.21 кв.29, КузГТУ, 2003 |
Репликация слиянием
Репликация слиянием отличается от репликации транзакций тем, что она по своей сути является многонаправленной. При использовании репликации слиянием издатели и подписчики могут равным образом обновлять публикацию. Репликация транзакций также позволяет подписчикам обновлять публикацию, но эти два типа репликации выполняются совершенно различным образом. В этой лекции вы узнаете, как действует репликация слиянием и как выполнять ее конфигурирование, мониторинг и настройку.
Введение в репликацию слиянием
При репликации слиянием происходит многонаправленная репликация между издателем и одним или несколькими подписчиками. Это позволяет нескольким системам иметь модифицируемые копии публикации и модифицировать свои собственные копии. Модификация на издателе будет реплицироваться подписчикам. Модификация на подписчике будет реплицироваться издателю и затем реплицироваться остальным подписчикам.
В отличие от репликации транзакций репликация слиянием осуществляется путем инсталляции триггеров на издателе и на подписчиках. При каждом изменении в публикации или в одной из ее копий происходит активизация соответствующего триггера, который помещает в очередь команду репликации для отправки в дистрибутивную базу данных. Эта команда, в конце концов, передается в дистрибутивную базу данных и затем передается на системы, участвующие в репликации. В связи с таким способом работы репликация слиянием создает значительно более высокую нагрузку (в особенности на издателе), чем репликация транзакций.
Как вы узнаете из этой лекции, ключевыми компонентами системы репликации слиянием являются агент слияния Merge Agent и дистрибутивная база данных. Merge Agent согласует (выполняет слияние) накапливающиеся изменения, которые были внесены после предыдущего согласования. В случае репликации слиянием агент распространения (Distribution Agent) не используется – Merge Agent взаимодействует как с и издателем, так и с дистрибьютором. Агент создания снимка (Snapshot Agent) используется только для создания начальной базы данных. Merge Agent выполняет следующие задачи:
- Merge Agent загружает все изменения с подписчика.
- Все строки без конфликта (строки, которые не были одновременно модифицированы и на издателе, и на подписчике), загружаются сразу; конфликтующие строки (строки, модифицированные на обеих системах) отправляются арбитру. Арбитр – это модуль, который используется для разрешения конфликтов в репликации слиянием. Вы можете конфигурировать этот модуль для разрешения конфликтов в соответствии с вашими требованиями.
- Все изменения применяются к издателю.
- Merge Agent загружает все изменения с издателя.
- Все строки без конфликта загружаются сразу; конфликтующие строки отправляются арбитру.
- Все изменения применяются к подписчику.
Этот процесс повторяется в соответствии с тем, как он запланирован. В случае push-подписок (принудительных подписок) агент Merge Agent запускается на издателе. В случае pull-подписок (подписок по запросу) Merge Agent запускается на подписчике. Каждая публикация в репликации слиянием имеет своего собственного агента Merge Agent.
Виды использования репликации слиянием
Репликация слиянием используется при необходимости многонаправленной репликации. Репликация слиянием находит разнообразное применение. То, что подписчики могут модифицировать данные, повышает уровень ее гибкости и применимости. В частности, репликация слиянием может находить следующее применение:
- Совместное использование данных отделами. Отделы, обрабатывающие, например, платежные ведомости, счета кредиторов и счета дебиторов, могут иметь доступ к одним и тем же данным. Пользователи каждого отдела могут модифицировать эти данные и получать слияние изменений на системах других отделов.
- Совместная работа с данными в нескольких точках. Репликацию слиянием можно использовать в тех случаях, когда пользователям в нескольких точках требуются одни и те же данные и внесение изменений в эти данные.
- Передача сообщений.Репликацию слиянием можно использовать как систему передачи сообщений, в которой можно модифицировать данные и отправлять изменения назад в исходную систему.