IBReplicator Дублирование записей

Методы, механизмы и инструментарий для репликации

Модератор: kdv

Ответить
ASV
Сообщения: 1
Зарегистрирован: 17 ноя 2009, 21:42

IBReplicator Дублирование записей

Сообщение ASV » 17 ноя 2009, 21:57

Здравствуйте.

Есть 2 базы Firebird, двунаправленная репликация по одной из таблиц.
Таблица типа лога сообщений, в таблицу идет только вставка, обновлений/удалений нет.
PK для таблицы не установлен, но каждая запись имеет уникальное значение в одном из полей, оно и указано в качестве ключа для репликации.

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

Подозреваю репиликацию.
Вопрос к хорошо знакомым с IBReplicator:
- возможно ли это?
- как предотвратить?

Вариант с установкой на таблицу PK напрашивается, но он скорее всего, только предотвратит повторную вставку, но не устранит причину появления дубликатов?
Возможны побочные проблемы с репликацией при этом?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: IBReplicator Дублирование записей

Сообщение Dimitry Sibiryakov » 18 ноя 2009, 13:32

У этой таблицы вообще есть какие-нибудь уникальные индексы/ключи? Что для этих записей написано в логе репликации?

Ответы:
1) В отсутствии уникального ключа по этому полю - да, возможно.
2) Разобраться что именно произошло. Дальше - по обстоятельствам. Удвоение операции в логе это одно, несрабатывание предотвращения data-bouncing это другое.

Установка первичного/уникального ключа на это поле предотвратит появление дубликатов поскольку при его нарушении при попытке вставки репликатором будет произведён апдейт.

PS: Версию репликатора всё-таки назови, да?..

Ответить