powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Расскажите теорию про то как выполняется распределенная транзакция.
11 сообщений из 11, страница 1 из 1
Расскажите теорию про то как выполняется распределенная транзакция.
    #36292270
ALKIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите теорию про то как выполняется распределенная транзакция.

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

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

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

Прикручиваю некий процесс между двумя системами, который должен выполняться как одно изменение... придумываю то как мне расставить флаги.
...
Рейтинг: 0 / 0
Расскажите теорию про то как выполняется распределенная транзакция.
    #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
Расскажите теорию про то как выполняется распределенная транзакция.
    #36293538
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257 wrote:

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

ммм... я тут ни при чем - это вопрос к автору топика... :)
скажу, что во времена dos'а я реализовывал "транзакционную целостность" записи в два файла... повотрять не особо хочется... :)
...
Рейтинг: 0 / 0
Расскажите теорию про то как выполняется распределенная транзакция.
    #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]