Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Нужна двунаправленная репликация (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 ничего не происходит) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 15:04 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Самое правильное здесь поймать Петрова. У вас никто то хочет решить проблемы управления персоналом программным путём??? Вообще, что бы иметь однозначно согласованные данные на двух серверах нужна наверное технология распределённых транзакций. Плохо знаю что это такое. Но уверен что это будет дороже, чем поймать Петрова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 17:53 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Может быть предложена такая схема решение (только как схема): Вводится дополнительное поле, которое служит для разрешения конфликтов. Что в нем - сильно зависит от приложения, например, время последней модификации, хотя может быть любая информация, на основании которой можно приянть решение, можно или нет другому сайту изменять это поле. Это поле не входит в публикацию. Для подписок модифицируются function strings, таки образом, чтобы проверять возможность update на основании вышеуказнного поля. С уважением, Андрей Колчанов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:05 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Очень похожая схема реализована в MS ACCESS 97 Можно там логику подсмотреть. Там создаються дополнительные таблицы и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:22 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
А вообще то схема с модификацией function strings выглядит живой. Очень хотелось бы узнать кто то пробовал, что то похожее???? Или это просто идея???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:28 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Поясню, что имеется ввиду, когда говорят, что "лучше избегать такую ситуацию". Любую репликацию можно реализовать без конфлитов. Для Вашего случая можно сделать так: На Сервере1 в БД1 для Таблицы1 строки с Id=1 присваивают FIO='Иванов' А на Сервере2 в БД1 вызывают хп на изменение данных в таблице1 и реплицируют вызов этой ХП. Таким образом получится: Сначала будет Иванов, а потом будет Петров. Это в простейшем случае. Можно тут заложить разрешение конфликтов, т.е. когда придет вызов этой Хп на сервер1, внутри нее анализировать состояние записи к модификации, и если она изменилась с момента вызова ХП на источнике, то ничего не модифицировать. В этом случае сначала будет Иванов, а Петров уже не будет. Т.е. данные модифицируются только на сервер1, на сервер2 они не модифицируются. Читайте доки по построению репсистем, там очень много чего написано на эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:40 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Механизм function string достаточно широко применяется в мире и у нас в стране. Например, часто используют замену update на вызов function string. Проблема только в случае использования 'replicate minimal column'. Хотя, вариант предложенный iLLer более "прямой", но требует процедурного доступа к данным. С уважением, Андрей Колчанов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 10:38 |
|
||
|
Двунаправленная репликация - как поймать конфликт?
|
|||
|---|---|---|---|
|
#18+
Вариант предложенный iLLer более "прямой". У меня просто мелькнула шальная мысль, что предложенное iLLer можно реализовать исключительно при помощи Function-string. И самое главное может быть можно использовать для "анализа состояния записи к модификации" служебную информацию(типа идентификатор, тип транзакции и т.п.) и переменные передаваемые в Function-string. Теоретически это кажется возможным. А практически по этим граблям кто нибудь бродил??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32964355&tid=2013783]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 360ms |

| 0 / 0 |
