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


Выбор арбитра

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

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

Арбитр статей рекомендуется использовать, если прикладные задачи требуют более точно настроенных решений по сравнению с арбитром по умолчанию. Если решено использовать арбитр статей, рекомендуется применять обработчик бизнес-логики. Дополнительные сведения см. в разделе Выполнение бизнес-логики при синхронизации слиянием.

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

Если вероятно возникновение конфликтов с некоторой частотой, то вот наиболее важные решения, которые следует принять при реализации стратегии разрешения конфликтов.

Проблема разрешения конфликта

Рекомендация

Разным категориям пользователей нужны разные значения приоритета.

  • Используйте арбитр конфликтов по умолчанию и создайте серверные подписки с разными значениями приоритета.

    Или

  • Используйте арбитр статей, распознающий в статье столбец полномочий, который помогает разрешить конфликт.

Требуется решение, назначающее победителем в конфликте первое изменение.

Используйте арбитр по умолчанию и создайте клиентские подписки.

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

Используйте или арбитр по умолчанию, или арбитр статей с включенным режимом отслеживания на уровне столбцов.

Отметьте как конфликт внесение нескольких изменений в любое значение строки.

Используйте или арбитр по умолчанию, или арбитр статей с включенным режимом отслеживания на уровне строк.

Отметьте как конфликт внесение нескольких изменений в любое значение логической записи.

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

Выходные данные конфликта должны отличаться от исходных данных конфликта.

Используйте арбитр статей, который вычисляет новые значения.