Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Расскажите теорию про то как выполняется распределенная транзакция. / 11 сообщений из 11, страница 1 из 1
05.11.2009, 14:25
    #36292270
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
Расскажите теорию про то как выполняется распределенная транзакция.

Под распределенной транзакцией я понимаю такое изменение, которое должно быть выполнено одновременно для нескольких информационных систем.
Допустим у меня есть (разные) системы А и Б. И "одновременно" – значит изменение (относящееся к одной транзакции) в системе А не должно существовать без изменения в системе Б и наоборот.

Пока я представляю себе некий следующий алгоритм.
1. Вносится изменение в А – изменению присваивается некий статус отложенного действия. Пока изменение не зафиксировано – другие изменения изменяемого объекта не возможны. Система А ждет подтверждения.
2. Аналогично - вносится изменение в Б и система Б также ждет подтверждения.
3. Система Б связывается с системой А (или наоборот или через арбитра), фиксирует изменение, блокируется (т.е. никакие другие изменения не возможны), и сообщает системе А о том, что изменение зафиксировано. Ждет подтверждения.
4 Система А получает информацию о том что система Б зафиксировала изменение. Фиксирует свое изменение, блокируется (никакие другие изменения не возможны).
5. Система А сообщает системе Б, что изменение зафиксировано – обе системы разблокируются.
6. При возникновении исключительной ситуации изменение не фиксируется (пункт 5 не выполняется). Системы А и Б откатывают изменения (например по времени).

По форуму есть несколько похожих топиков, читал, но понимания того как это в действительности работает или как должно работать не пришло...

Прикручиваю некий процесс между двумя системами, который должен выполняться как одно изменение... придумываю то как мне расставить флаги.
...
Рейтинг: 0 / 0
05.11.2009, 18:45
    #36293161
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
это называется Two-Phase Commit
В приличных базах это реализовано прозрачно. (или у вас неприличная)
В Оракле http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_txns.htm#sthref4420
В MSSQL http://msdn.microsoft.com/en-us/library/ms685033(VS.85).aspx
про другие не знаю
...
Рейтинг: 0 / 0
05.11.2009, 23:38
    #36293538
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
SERG1257 wrote:

> это называется Two-Phase Commit
> В /приличных/ базах это реализовано прозрачно. (или у вас неприличная)

В базах, даже приличных, есть только поддержка распределённых
транзакций. Кроме этого должен быть ещё и специальный сервис--
координатор распределённых транзакций.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.11.2009, 23:42
    #36293545
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
ALKIR wrote:

> Пока я представляю себе некий следующий алгоритм.

Это попытка изобрести распределённые транзакции на коленках ?
Думаю, сложновато будет, а смысла нет никакого.

Какая СУБД ? может лучше нормальные DT использовать ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.11.2009, 08:50
    #36293790
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
MasterZiv,

В моем случае:
одна информационная система под управлением MSSQL
другая информационная система - не классическая СУБД и что такое транзакции пока не понимает...

=> можете считать, что изобретаю механизм распределенных транзакций на коленках

И мне интересно как может быть решена такая ситуация? Правильно ли я понимаю, что такое распределенная транзакция? И правильно ли представляю себе алгоритм того, как это можно реализовать?

Я не исключаю того что это "сложно" и возможно "смысла нет никакого" однако мне необходимо оценить эту сложность...


//этот форум посещают те кто не боится сложностей :)
...
Рейтинг: 0 / 0
06.11.2009, 08:50
    #36293792
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
SERG1257,

спасибо, читаю...
...
Рейтинг: 0 / 0
06.11.2009, 11:39
    #36294197
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
ALKIR,

Не только теорию, практику тоже нужно читать - http://msdn.microsoft.com/en-us/library/ms684146(VS.85).aspx

авторне классическая СУБД и что такое транзакции пока не понимает..
Придётся научить
...
Рейтинг: 0 / 0
06.11.2009, 14:17
    #36294802
Егоров Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
ALKIRдругая информационная система - не классическая СУБД и что такое транзакции пока не понимает...

Как можно запустить распредлененную транзакцию, если одно из звеньев не понимает что такое транзакция вообще? В теории это выглядит так, что есть некий координатор, который отслеживает выполнение транзакций в каждой системе и объявляет источнику и всем участникам распределенной транзакции о её завершении (или откату). Если одно из звеньев не понимает, что есть транзакция то как произойдет реакция на откат?
...
Рейтинг: 0 / 0
06.11.2009, 14:43
    #36294887
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
Егоров АлександрКак можно запустить распредлененную транзакцию, если одно из звеньев не понимает что такое транзакция вообще? В теории это выглядит так, что есть некий координатор, который отслеживает выполнение транзакций в каждой системе и объявляет источнику и всем участникам распределенной транзакции о её завершении (или откату). Если одно из звеньев не понимает, что есть транзакция то как произойдет реакция на откат?Очевидно, что любую систему, не понимающую, что такое транзакции, можно этому научить, если есть доступ к исходникам.

При этом трудоёмкость не такая уж большая, если, например, не заморачиваться насчёт многопользовательской работы.
...
Рейтинг: 0 / 0
06.11.2009, 16:06
    #36295203
Егоров Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
alexeyvg,

ммм... я тут ни при чем - это вопрос к автору топика... :)
скажу, что во времена dos'а я реализовывал "транзакционную целостность" записи в два файла... повотрять не особо хочется... :)
...
Рейтинг: 0 / 0
07.11.2009, 13:11
    #36296367
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите теорию про то как выполняется распределенная транзакция.
>ALKIR, 5 ноя 09, 14:25 [7886115]
>Расскажите теорию ...
Насчет теории ... не знаю как в общем случае. Но разумный вариант для двух систем (Периферия-Центр) существует. Начало (дабы не повторяться) здесь .
Допустим, А - периферийная база данных. И в общем, мало волнует, знает она, что такое транзакция или нет. Изменения есть не UPDATE, а INSERT.
1. Локальный СП передит её в монопольку(или запускает транзакцию) и делает своё дело, но транзакцию не закрывает (объект данных есть).
2. Перебрасывает объект данных головному ПСП. Тот делает своё дело. В ответ ок или ой-ой-ой.
3. Локальный СП подтверждает свою транзакцию (или DELETE) (ок) или откат (ой-ой-ой).

С уважением, Владимир.
p.s. Вы видите, что и для головной базы понятие транзакции, тоже не есть необходимое условие (хотя бы и для частных случаев)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Расскажите теорию про то как выполняется распределенная транзакция. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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