|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Имеем 1. Сервер1 - хранит справочники и снэпшоты на детальные данные серверов2..N (объединенные через UNION ALL во VIEW). 2. Сервер2..N - хранит детальные данные и снэпшоты на справочники сервера1. 3. С помощью простой(basic) репликации происходит автоматический(через группы репликации) обмен данными между серверами. Проблема - - С сервера1 удаляют запись в справочнике. Зависимых через FK детальных данных, хранящихся на сервере1 нет, поэтому удаление проходит успешно. - В это время на сервере2 добавляют детальные данные, зависимые через FK от записи в справочнике, которую удаляют на сервере1. Допустим, автоматическое обновление таблицы-справочника еще не началось, поэтому вставка тоже проходит успешно. - После этого попытки произвести обновления соответствующих снэпшотов как на сервере1 так и на сервере2 будут "обломлены", и группы репликации зависнут. Кто-нибудь знает, как решить такую проблему средствами простой репликации + может еще чего нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 12:20 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
А тебе нужно сохранить детей на сервере2 к родителю на сервере1 после того, как родитель будет удален? Если нет, то укажи у FK свойство on delete cascade. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 15:57 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
не верится мне, что on delete cascade работает в распределенных базах ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 16:00 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Вообще-то предполагается, что изменения на сервере1 не должны приводить к потере данных на сервере2, т.е. ON DELETE CASCADE не проходит. Можно конечно вообще запретить удалять информацию из справочников сервера1, но это некрасиво - мало ли какую лажу может пользователь набить... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 16:05 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Еще как работает;) Более того, работают, к примеру обыкновенные триггера on insert, update, delete, если их повесить на снапшот или таблицу на мастер-сайте... ну и так далее, если идет fast refresh. Да, забыл: если будет refresh complete родителя, который делается через truncate табле - действительно, дети не удалятся. Вот тут стоит подумать, как бы и FK оставить, и репликацию не положить. Но имхо это не должно быть штатной операцией (refresh complete), тут можно рулить отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 16:11 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Еще on delete set null по-моему есть... А родителя тебе надо вернуть, если к нему детей завели? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 16:13 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
А родителя тебе надо вернуть, если к нему детей завели? Получается, что так. Хотя тогда получается, что сервер2 изменяет данные сервера1, что вообще-то неприемлемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 16:32 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
У тебя больше на мультимастер похоже:) Имхо стоит о распределении данных задуматься. А нельзя ли положить таблицу родителей на сервер2, а на сервере1 создать snapshot for update, может быть даже в синхронной снапшот-группе? Вроде как так попрямее будет. Хотя это означает, что сервер2 может менять все данные, что м.б. неприемлемо. Вариант второй, с точностью до наоборот: положить таблицу детей на сервер1, на сервере2 для детей оставить только snapshot for update... и далее по тексту, см. абзац выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 17:06 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Вся эта байда получается сама собой из разграничения прав доступа, и с оргструктурой связана. Т.е. пользователи сервера1 централизованно ведут справочники и просматривают детальные данные, поступающие с остальных серверов. Пользователи же серверов 2...N заносят детальные данные, опираясь на централизованные справочники. Идея в общем-то неплохая, если бы не эта проблема. Т.е. по логике мультимастер не нужен, если его использовать, то придется все выносить на сервер1 и каким-то образом(?) запрещать правку с него детальных данных... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 17:41 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Если с пропускной способностью канала связи между серверами проблем нет - сделай мультимастерную репликацию на справочники, а детей раскидывай по желанию, это уж как хочешь. Ну а следить за тем, чтобы справочники меняли только те, кому это разрешено, в принципе можно, тут много чего можно придумать, типа анализа контекста сессий и откат транзакций у неподходящих, либо просто декларация правил на уровне приложения, либо еще чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 23:16 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
"Если с пропускной способностью канала связи между серверами проблем нет - сделай мультимастерную репликацию" - не совсем верное утверждение!!! Расширенная репликация может использоваться как плохих так и на хороших каналах. Синхронная репликация используется при хорошей связи. Асинхронная при не очень хорошей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 09:41 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
оракловая репликация не живет на каналах нашего качества. Увы, проверено электроникой. Это будет вечный геморрой для DBA. Вопрос а зачем данные разделены по серверам? Сервера разнесены географически? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 10:15 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Так в том-то и дело, что изначальная задача существенно упроститься, если каждый из серверов будет обладать данными справочников с наибольшей степенью достоверности, что реализуемо при создании именно _синхронного_ мультимастера. Ну а если он асинхронный- начинаем все сначала:) Действительно, тут в консерватории править чего-то надо: почему именно так данные разбиты, что за канал между ними, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 10:38 |
|
Задачка с репликацией
|
|||
---|---|---|---|
#18+
Вопрос а зачем данные разделены по серверам? Сервера разнесены географически? Разнесены, причем существенно. Под существующую репликацию уже многое "заточено", поэтому в корне ее менять нет возможности. Наверное вcе-таки придется запретить удаление данных из справочников рядовым пользователям, или вообще ;). Тем более, что во многих справочниках есть срок актуальности записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 11:59 |
|
|
start [/forum/topic.php?fid=52&fpage=2837&tid=1992914]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 247ms |
total: | 377ms |
0 / 0 |