powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Двунаправленная репликация - как поймать конфликт?
8 сообщений из 8, страница 1 из 1
Двунаправленная репликация - как поймать конфликт?
    #32963605
Plums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна двунаправленная репликация (ASE 12.5, RepServ 12.6), причем данные могут изменять обе стороны (и не каждый свои, а все общее).

Как в этом случае грамотно разрешить ситуацию, когда на

Сервере1 в БД1 для Таблицы1 строки с Id=1 присваивают FIO='Иванов'

Сервере2 в БД1 для Таблицы1 строки с Id=1 присваивают FIO='Петров'

и после взаимного обмена репликами -
на Сервере1 FIO='Петров'
на Сервере2 FIO='Иванов'?

Как вообще поймать данную ситуацию? По каким признакам?
В Sybase-docs в этом случае пишут, что надо писать Conflict Resolution в этом случае, но как определить сам "этот случай" - нету ничего.

Как вообще грамотно построить двунаправленную репликацию (БД-ASE, реплицирует RepServer)? В доках пишется что эту ситуацию надо избегать - так устраивать логику реп.системы, чтобы этого не было. А если нам именно такая и нужна?
Какие тут могут быть грабли помимо конфликта репликации?
Есть вообще хоть какие нибудь доки про такую репликацию (в Design Guide об этом - буквально страничка, что этого не надо делать, а если сделал то разруливать Conflict Resolution - а как его поймать, в RS ничего не происходит)

Спасибо.
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32964266
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое правильное здесь поймать Петрова.
У вас никто то хочет решить проблемы управления персоналом программным путём???

Вообще, что бы иметь однозначно согласованные данные
на двух серверах нужна наверное технология распределённых транзакций.
Плохо знаю что это такое. Но уверен что это будет дороже, чем поймать
Петрова.
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32964301
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть предложена такая схема решение (только как схема):

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

Это поле не входит в публикацию.

Для подписок модифицируются function strings, таки образом, чтобы проверять возможность update на основании вышеуказнного поля.

С уважением,
Андрей Колчанов
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32964355
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень похожая схема реализована в MS ACCESS 97
Можно там логику подсмотреть. Там создаються дополнительные таблицы и т.п.
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32964371
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще то схема с модификацией function strings выглядит живой.
Очень хотелось бы узнать кто то пробовал, что то похожее????
Или это просто идея????
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32964397
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню, что имеется ввиду, когда говорят, что "лучше избегать такую ситуацию". Любую репликацию можно реализовать без конфлитов.
Для Вашего случая можно сделать так:
На Сервере1 в БД1 для Таблицы1 строки с Id=1 присваивают FIO='Иванов'
А на Сервере2 в БД1 вызывают хп на изменение данных в таблице1 и реплицируют вызов этой ХП. Таким образом получится: Сначала будет Иванов, а потом будет Петров. Это в простейшем случае. Можно тут заложить разрешение конфликтов, т.е. когда придет вызов этой Хп на сервер1, внутри нее анализировать состояние записи к модификации, и если она изменилась с момента вызова ХП на источнике, то ничего не модифицировать. В этом случае сначала будет Иванов, а Петров уже не будет. Т.е. данные модифицируются только на сервер1, на сервер2 они не модифицируются.
Читайте доки по построению репсистем, там очень много чего написано на эту тему.
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32965132
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Механизм function string достаточно широко применяется в мире и у нас в стране.
Например, часто используют замену update на вызов function string.
Проблема только в случае использования 'replicate minimal column'.

Хотя, вариант предложенный iLLer более "прямой", но требует процедурного доступа к данным.

С уважением,
Андрей Колчанов
...
Рейтинг: 0 / 0
Двунаправленная репликация - как поймать конфликт?
    #32965361
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант предложенный iLLer более "прямой".
У меня просто мелькнула шальная мысль, что предложенное iLLer
можно реализовать исключительно при помощи Function-string.
И самое главное может быть можно использовать для "анализа состояния
записи к модификации" служебную информацию(типа идентификатор, тип транзакции и т.п.)
и переменные передаваемые в Function-string.
Теоретически это кажется возможным. А практически по этим граблям кто нибудь бродил???
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Двунаправленная репликация - как поймать конфликт?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]