|
|
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
Расскажите теорию про то как выполняется распределенная транзакция. Под распределенной транзакцией я понимаю такое изменение, которое должно быть выполнено одновременно для нескольких информационных систем. Допустим у меня есть (разные) системы А и Б. И "одновременно" – значит изменение (относящееся к одной транзакции) в системе А не должно существовать без изменения в системе Б и наоборот. Пока я представляю себе некий следующий алгоритм. 1. Вносится изменение в А – изменению присваивается некий статус отложенного действия. Пока изменение не зафиксировано – другие изменения изменяемого объекта не возможны. Система А ждет подтверждения. 2. Аналогично - вносится изменение в Б и система Б также ждет подтверждения. 3. Система Б связывается с системой А (или наоборот или через арбитра), фиксирует изменение, блокируется (т.е. никакие другие изменения не возможны), и сообщает системе А о том, что изменение зафиксировано. Ждет подтверждения. 4 Система А получает информацию о том что система Б зафиксировала изменение. Фиксирует свое изменение, блокируется (никакие другие изменения не возможны). 5. Система А сообщает системе Б, что изменение зафиксировано – обе системы разблокируются. 6. При возникновении исключительной ситуации изменение не фиксируется (пункт 5 не выполняется). Системы А и Б откатывают изменения (например по времени). По форуму есть несколько похожих топиков, читал, но понимания того как это в действительности работает или как должно работать не пришло... Прикручиваю некий процесс между двумя системами, который должен выполняться как одно изменение... придумываю то как мне расставить флаги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 14:25 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
это называется 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 про другие не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 18:45 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
SERG1257 wrote: > это называется Two-Phase Commit > В /приличных/ базах это реализовано прозрачно. (или у вас неприличная) В базах, даже приличных, есть только поддержка распределённых транзакций. Кроме этого должен быть ещё и специальный сервис-- координатор распределённых транзакций. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 23:38 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
ALKIR wrote: > Пока я представляю себе некий следующий алгоритм. Это попытка изобрести распределённые транзакции на коленках ? Думаю, сложновато будет, а смысла нет никакого. Какая СУБД ? может лучше нормальные DT использовать ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 23:42 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, В моем случае: одна информационная система под управлением MSSQL другая информационная система - не классическая СУБД и что такое транзакции пока не понимает... => можете считать, что изобретаю механизм распределенных транзакций на коленках И мне интересно как может быть решена такая ситуация? Правильно ли я понимаю, что такое распределенная транзакция? И правильно ли представляю себе алгоритм того, как это можно реализовать? Я не исключаю того что это "сложно" и возможно "смысла нет никакого" однако мне необходимо оценить эту сложность... //этот форум посещают те кто не боится сложностей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 08:50 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
SERG1257, спасибо, читаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 08:50 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
ALKIR, Не только теорию, практику тоже нужно читать - http://msdn.microsoft.com/en-us/library/ms684146(VS.85).aspx авторне классическая СУБД и что такое транзакции пока не понимает.. Придётся научить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:39 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
ALKIRдругая информационная система - не классическая СУБД и что такое транзакции пока не понимает... Как можно запустить распредлененную транзакцию, если одно из звеньев не понимает что такое транзакция вообще? В теории это выглядит так, что есть некий координатор, который отслеживает выполнение транзакций в каждой системе и объявляет источнику и всем участникам распределенной транзакции о её завершении (или откату). Если одно из звеньев не понимает, что есть транзакция то как произойдет реакция на откат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 14:17 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрКак можно запустить распредлененную транзакцию, если одно из звеньев не понимает что такое транзакция вообще? В теории это выглядит так, что есть некий координатор, который отслеживает выполнение транзакций в каждой системе и объявляет источнику и всем участникам распределенной транзакции о её завершении (или откату). Если одно из звеньев не понимает, что есть транзакция то как произойдет реакция на откат?Очевидно, что любую систему, не понимающую, что такое транзакции, можно этому научить, если есть доступ к исходникам. При этом трудоёмкость не такая уж большая, если, например, не заморачиваться насчёт многопользовательской работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 14:43 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
alexeyvg, ммм... я тут ни при чем - это вопрос к автору топика... :) скажу, что во времена dos'а я реализовывал "транзакционную целостность" записи в два файла... повотрять не особо хочется... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 16:06 |
|
||
|
Расскажите теорию про то как выполняется распределенная транзакция.
|
|||
|---|---|---|---|
|
#18+
>ALKIR, 5 ноя 09, 14:25 [7886115] >Расскажите теорию ... Насчет теории ... не знаю как в общем случае. Но разумный вариант для двух систем (Периферия-Центр) существует. Начало (дабы не повторяться) здесь . Допустим, А - периферийная база данных. И в общем, мало волнует, знает она, что такое транзакция или нет. Изменения есть не UPDATE, а INSERT. 1. Локальный СП передит её в монопольку(или запускает транзакцию) и делает своё дело, но транзакцию не закрывает (объект данных есть). 2. Перебрасывает объект данных головному ПСП. Тот делает своё дело. В ответ ок или ой-ой-ой. 3. Локальный СП подтверждает свою транзакцию (или DELETE) (ок) или откат (ой-ой-ой). С уважением, Владимир. p.s. Вы видите, что и для головной базы понятие транзакции, тоже не есть необходимое условие (хотя бы и для частных случаев) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2009, 13:11 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=82&tid=1543002]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 370ms |

| 0 / 0 |
