powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с репликацией
14 сообщений из 14, страница 1 из 1
Задачка с репликацией
    #32058714
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем
1. Сервер1 - хранит справочники и снэпшоты на детальные данные серверов2..N (объединенные через UNION ALL во VIEW).
2. Сервер2..N - хранит детальные данные и снэпшоты на справочники сервера1.
3. С помощью простой(basic) репликации происходит автоматический(через группы репликации) обмен данными между серверами.

Проблема -

- С сервера1 удаляют запись в справочнике. Зависимых через FK детальных данных, хранящихся на сервере1 нет, поэтому удаление проходит успешно.
- В это время на сервере2 добавляют детальные данные, зависимые через FK от записи в справочнике, которую удаляют на сервере1. Допустим, автоматическое обновление таблицы-справочника еще не началось, поэтому вставка тоже проходит успешно.
- После этого попытки произвести обновления соответствующих снэпшотов как на сервере1 так и на сервере2 будут "обломлены", и группы репликации зависнут.

Кто-нибудь знает, как решить такую проблему средствами простой репликации + может еще чего нибудь?
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058828
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тебе нужно сохранить детей на сервере2 к родителю на сервере1 после того, как родитель будет удален? Если нет, то укажи у FK свойство on delete cascade.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058830
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не верится мне, что on delete cascade работает в распределенных базах
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058833
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то предполагается, что изменения на сервере1 не должны приводить к потере данных на сервере2, т.е. ON DELETE CASCADE не проходит. Можно конечно вообще запретить удалять информацию из справочников сервера1, но это некрасиво - мало ли какую лажу может пользователь набить...
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058835
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще как работает;) Более того, работают, к примеру обыкновенные триггера on insert, update, delete, если их повесить на снапшот или таблицу на мастер-сайте... ну и так далее, если идет fast refresh.

Да, забыл: если будет refresh complete родителя, который делается через truncate табле - действительно, дети не удалятся. Вот тут стоит подумать, как бы и FK оставить, и репликацию не положить. Но имхо это не должно быть штатной операцией (refresh complete), тут можно рулить отдельно.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058837
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще on delete set null по-моему есть... А родителя тебе надо вернуть, если к нему детей завели?
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058845
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А родителя тебе надо вернуть, если к нему детей завели?

Получается, что так. Хотя тогда получается, что сервер2 изменяет данные сервера1, что вообще-то неприемлемо.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058867
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя больше на мультимастер похоже:) Имхо стоит о распределении данных задуматься.

А нельзя ли положить таблицу родителей на сервер2, а на сервере1 создать snapshot for update, может быть даже в синхронной снапшот-группе? Вроде как так попрямее будет. Хотя это означает, что сервер2 может менять все данные, что м.б. неприемлемо.

Вариант второй, с точностью до наоборот: положить таблицу детей на сервер1, на сервере2 для детей оставить только snapshot for update... и далее по тексту, см. абзац выше.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058888
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вся эта байда получается сама собой из разграничения прав доступа, и с оргструктурой связана. Т.е. пользователи сервера1 централизованно ведут справочники и просматривают детальные данные, поступающие с остальных серверов. Пользователи же серверов 2...N заносят детальные данные, опираясь на централизованные справочники. Идея в общем-то неплохая, если бы не эта проблема. Т.е. по логике мультимастер не нужен, если его использовать, то придется все выносить на сервер1 и каким-то образом(?) запрещать правку с него детальных данных...
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32058998
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если с пропускной способностью канала связи между серверами проблем нет - сделай мультимастерную репликацию на справочники, а детей раскидывай по желанию, это уж как хочешь. Ну а следить за тем, чтобы справочники меняли только те, кому это разрешено, в принципе можно, тут много чего можно придумать, типа анализа контекста сессий и откат транзакций у неподходящих, либо просто декларация правил на уровне приложения, либо еще чего.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32059032
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Если с пропускной способностью канала связи между серверами проблем нет - сделай мультимастерную репликацию" - не совсем верное утверждение!!!
Расширенная репликация может использоваться как плохих так и на хороших каналах. Синхронная репликация используется при хорошей связи. Асинхронная при не очень хорошей.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32059063
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оракловая репликация не живет на каналах нашего качества. Увы, проверено электроникой. Это будет вечный геморрой для DBA. Вопрос а зачем данные разделены по серверам? Сервера разнесены географически?
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32059083
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в том-то и дело, что изначальная задача существенно упроститься, если каждый из серверов будет обладать данными справочников с наибольшей степенью достоверности, что реализуемо при создании именно _синхронного_ мультимастера. Ну а если он асинхронный- начинаем все сначала:)

Действительно, тут в консерватории править чего-то надо: почему именно так данные разбиты, что за канал между ними, и т.д.
...
Рейтинг: 0 / 0
Задачка с репликацией
    #32059120
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос а зачем данные разделены по серверам? Сервера разнесены географически?

Разнесены, причем существенно.

Под существующую репликацию уже многое "заточено", поэтому в корне ее менять нет возможности. Наверное вcе-таки придется запретить удаление данных из справочников рядовым пользователям, или вообще ;). Тем более, что во многих справочниках есть срок актуальности записи.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с репликацией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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