Распределенная обработка данных. Найханова Л.В. - 76 стр.

UptoLike

Составители: 

76
интерпретируются в духе вызовов удаленных процедур. Тем самым выполнение одной
транзакции, инициированной в некотором узле сети A влечет, вообще говоря,
инициирование транзакций в дополнительных узлах. Основной новой по сравнению с
System R проблемой является проблема согласованного завершения распределенной
транзакции, чтобы результаты ее выполнения во всех затронутых ею узлах были либо
отображены в состояние локальных баз данных, либо полностью отсутствовали.
Для достижения этой цели в System R* используется двухфазный протокол
завершения распределенной транзакции. Этот протокол является общеупотребимым в
распределенных системах баз данных и описан во многих литературных источниках.
Поэтому мы здесь опишем его очень кратко и неформально.
Для описания протокола используется следующая модель. Имеется ряд независимых
транзакций-участников распределенной транзакции, выполняющихся под управлением
транзакции-координатора. Решение об окончании распределенной транзакции
принимается координатором. После этого выполняется первая фаза завершения
транзакции, когда координатор передает каждому из участников сообщение
"подготовиться к завершению". Получив такое сообщение, каждый участник переходит в
состояние готовности как к немедленному завершению транзакции, так и к ее откату. В
терминах System R* это означает, что буфер журнала с записями об изменениях базы
данных участника выталкиваются на внешнюю память, но синхронизационные захваты не
снимаются. После этого каждый участник, успешно выполнивший подготовительные
действия, посылает координатору сообщение "готов к завершению". Если координатор
получает такие сообщения ото всех участников, то он начинает вторую фазу завершения,
рассылая всем участникам сообщение "завершить транзакцию", и это считается
завершением распределенной транзакции. Если не все участники успешно выполнили
первую фазу, то координатор рассылает всем участникам сообщение "откатить
транзакцию", и тогда эффект воздействия распределенной транзакции на состояние баз
данных отсутствует.
По отношению к особенностям реализации двухфазного протокола завершения
транзакции в System R* заметим еще следующее. В качестве координатора выступает
транзакция, выполняющаяся в главном узле, т.е. та, по инициативе которой возникли
дополнительные транзакции. Тем самым, наличие центрального координирующего узла
не требуется, что соответствует требованию автономности узлов. Для откатов транзакций
используется базовый механизм точек сохранения System R. Наконец, классический
протокол двухфазного завершения оптимизирован, чтобы сократить число необходимых
сообщений.
Как и в System R, согласованность состояния баз данных при параллельном
выполнении нескольких транзакций в System R* обеспечивается на основе механизма
синхронизационных захватов объектов базы данных при соблюдении двухфазного
протокола захватов. Напомним, что это означает разбиение каждой транзакции с точки
зрения синхронизации на две фазы - рабочую фазу, на которой захваты только
устанавливаются, и фазу завершения, когда все захваты объектов базы данных,
произведенные данной транзакцией, снимаются. Синхронизация производится в точности
так же, как и в System R: каждая транзакция-участник обращается к локальной базе
данных через RSS своего узла. Основной новой проблемой является проблема возможных
распределенных тупиков, которые могут возникнуть между несколькими
распределенными транзакциями, выполняющимися параллельно. (Тупики между
транзакциями - участниками одной распределенной транзакции невозможны, поскольку
все участники получают один общий идентификатор транзакции и не конфликтуют по
синхронизации). Для обнаружения распределенных синхронизационных тупиков в System
R* применяется оригинальный распределенный алгоритм, не нарушающий требования
автономности узлов сети и минимизирующий число передаваемых по сети сообщений и
необходимую процессорную обработку.
интерпретируются в духе вызовов удаленных процедур. Тем самым выполнение одной
транзакции, инициированной в некотором узле сети A влечет, вообще говоря,
инициирование транзакций в дополнительных узлах. Основной новой по сравнению с
System R проблемой является проблема согласованного завершения распределенной
транзакции, чтобы результаты ее выполнения во всех затронутых ею узлах были либо
отображены в состояние локальных баз данных, либо полностью отсутствовали.
     Для достижения этой цели в System R* используется двухфазный протокол
завершения распределенной транзакции. Этот протокол является общеупотребимым в
распределенных системах баз данных и описан во многих литературных источниках.
Поэтому мы здесь опишем его очень кратко и неформально.
     Для описания протокола используется следующая модель. Имеется ряд независимых
транзакций-участников распределенной транзакции, выполняющихся под управлением
транзакции-координатора. Решение об окончании распределенной транзакции
принимается координатором. После этого выполняется первая фаза завершения
транзакции, когда координатор передает каждому из участников сообщение
"подготовиться к завершению". Получив такое сообщение, каждый участник переходит в
состояние готовности как к немедленному завершению транзакции, так и к ее откату. В
терминах System R* это означает, что буфер журнала с записями об изменениях базы
данных участника выталкиваются на внешнюю память, но синхронизационные захваты не
снимаются. После этого каждый участник, успешно выполнивший подготовительные
действия, посылает координатору сообщение "готов к завершению". Если координатор
получает такие сообщения ото всех участников, то он начинает вторую фазу завершения,
рассылая всем участникам сообщение "завершить транзакцию", и это считается
завершением распределенной транзакции. Если не все участники успешно выполнили
первую фазу, то координатор рассылает всем участникам сообщение "откатить
транзакцию", и тогда эффект воздействия распределенной транзакции на состояние баз
данных отсутствует.
     По отношению к особенностям реализации двухфазного протокола завершения
транзакции в System R* заметим еще следующее. В качестве координатора выступает
транзакция, выполняющаяся в главном узле, т.е. та, по инициативе которой возникли
дополнительные транзакции. Тем самым, наличие центрального координирующего узла
не требуется, что соответствует требованию автономности узлов. Для откатов транзакций
используется базовый механизм точек сохранения System R. Наконец, классический
протокол двухфазного завершения оптимизирован, чтобы сократить число необходимых
сообщений.
     Как и в System R, согласованность состояния баз данных при параллельном
выполнении нескольких транзакций в System R* обеспечивается на основе механизма
синхронизационных захватов объектов базы данных при соблюдении двухфазного
протокола захватов. Напомним, что это означает разбиение каждой транзакции с точки
зрения синхронизации на две фазы - рабочую фазу, на которой захваты только
устанавливаются, и фазу завершения, когда все захваты объектов базы данных,
произведенные данной транзакцией, снимаются. Синхронизация производится в точности
так же, как и в System R: каждая транзакция-участник обращается к локальной базе
данных через RSS своего узла. Основной новой проблемой является проблема возможных
распределенных      тупиков,   которые    могут   возникнуть    между    несколькими
распределенными транзакциями, выполняющимися параллельно. (Тупики между
транзакциями - участниками одной распределенной транзакции невозможны, поскольку
все участники получают один общий идентификатор транзакции и не конфликтуют по
синхронизации). Для обнаружения распределенных синхронизационных тупиков в System
R* применяется оригинальный распределенный алгоритм, не нарушающий требования
автономности узлов сети и минимизирующий число передаваемых по сети сообщений и
необходимую процессорную обработку.

76