Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > репликация


Автор: Zaman 8.9.2004, 12:43
Какие методы решения могут быть при возникновении конфликтов

Автор: Akina 8.9.2004, 12:45
1) плюнуть
2) разрулить

Автор: Zaman 8.9.2004, 12:57
Цитата(Akina @ 8.9.2004, 12:45)
1) плюнуть


не решение

Хочу использовать для СУБД MySQL, выяснил что там используется схема - ведущий/ведомый.
Но она меня не устраивает!
Хочу реализовать схему - "повсеместное обновление", при это решении могут возникать конфликты.
Кто нибудь сталкивался с этой схемой и какие решения конфликтов существуют
Добавлено @ 13:01
реально ли в субд mysql реализовать эту схему

Автор: Akina 8.9.2004, 13:11
О! наконец-то мы знаем что речь идет о mySQL. Уже хорошо.

Теперь опиши подробно о каких конфликтах при репликации идет речь. и какими средствами выполняется репликация.

Автор: GoodBoy 8.9.2004, 13:23
Как-то делали систему управления для предприятия, так оно там было разбито на несколько филиалов. И целостность данных мы обеспечивали так: Использовали уникальные ключевые поля для каждого филиала. Т. е. у первого ВСЕ записи начинались на 1, у второго на 2 и т.д. И внутри филиала изменять можно было только свои записи, а чужие - только просматривать... Правда писано это было на Oracle, но думаю и для MySQL можно сделать что-то типа оракловых триггеров и сиквенсов для создания уникальных индексов НЕ через автоинкремент.

Zaman, возможно такой метод тебе подойдет??

Автор: Zaman 8.9.2004, 13:34
GoodBoy твой метод похож на "повсеместное обновление", я учту твое решение этой задачи - благодарствую smile.gif.
Дело в том что пока проект токо начинается писАться, поэтому я хочу как можно больше узнать о проблемах и их решениях связанные с репликацией.


Автор: GoodBoy 8.9.2004, 13:50
Zaman
Ты опиши задачу - тогда легче будет что-нить посоветовать...

:-)))))))))

Автор: Akina 8.9.2004, 13:51
Основная проблема - исправление копии записи в 2 местах. разруливается по TimeStamp либо вручную.
Остальные проблемы решаются более чем просто. Для независимых реплик - например выделением диапазона уникальных ID-ов каждой реплике либо хранением таблиц соответствия ID-ов локальной базы и удаленных реплик. Послебнее правильнее, поскольку не зависит от появления новых реплик, т.е. оповещение о появлении новой реплики (и ее регистрация) происходят явочным порядком, а не директивно. Кстати, это позволяет работать как в режиме реплицирования, так и в режиме распределенной базы без каких-либо изменений в структуре - просто добавляется модуль репликации отсутствующей записи.

Автор: LSD 8.9.2004, 15:02
Всего может быть 3 типа конфликтов:
- конфликт при insert, добавляются две записи конфликтующие по уникальному полю (полям)
- конфликт при delete, в одной базе удалии запись а в другой ее подправили
- конфликт при update, одновременная правка одной и той же записи

Надо определиться со стратегией разрешения этих конфликтов и отсюда танцевать.

Автор: Zaman 8.9.2004, 18:40
Цитата(LSD @ 8.9.2004, 15:02)
Всего может быть 3 типа конфликтов:
- конфликт при insert, добавляются две записи конфликтующие по уникальному полю (полям)
- конфликт при delete, в одной базе удалии запись а в другой ее подправили
- конфликт при update, одновременная правка одной и той же записи

Надо определиться со стратегией разрешения этих конфликтов и отсюда танцевать.

Эти конфликты есть не тольк в репликации smile.gif

Не хотлеось бы занаво изобретать велосипед, а если есть универсальное решение, то его применить

Всем благодарен за высказанные мнения

Автор: gemoglobin 9.9.2004, 08:36
репликация и разрешение конфликтов
вообще отдельная большая проблема в СУБД

есть книга очень хорошая Э. Таненбаум, М. ван Стеен
"Распределенные системы принципы и парадигмы"
поищи в инете может e-вариант

Автор: GoodBoy 9.9.2004, 12:13
Почитай вот тут: http://soft.org.ua/docs/mysql/ru/Replication.html может чем поможет...

Автор: Гость_Владимир 11.10.2004, 02:52
Единственно хорошее описание на replication.narod.ru. В других местах - куча хороших общих фраз. А вообще то основная проблема связана с бардаком в бизнес правилах, приводящем к необходимости вручную разруливать конфликты.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)