- •Лекция 7
- •2.4. Восстановление распределенных баз данных
- •2.4.1 Распределенные протоколы восстановления
- •2.4.2. Двухфазная фиксация транзакций (2рс)
- •20.4.4. Трехфазная фиксация транзакций (зрl)
- •2.5. Оптимизация распределенных запросов
- •2.5.1. Эвристический подход к оптимизации запросов
- •А)Правила преобразований операций реляционной алгебры
Лекция 7
2.4. Восстановление распределенных баз данных
Для РСУБД разработаны протоколы, которые используются для обработки отказов, возникающих в распределенной вычислительной среде.
В распределенной среде существуют четыре типа отказов:
потеря сообщения;
отказ линии связи;
аварийный останов одного из сайтов;
расчленение сети.
Потеря сообщений или неверная упорядоченность их поступления контролируется используемым базовым сетевым протоколом. Поэтому можно считать, что существует прозрачность обработки этих ошибок для компонента передачи данных СУРБД. Рассмотрим остальные типы отказов.
Функционирование РСУБД в значительной мере зависит от надежного взаимодействия всех узлов в сети.
В распределенной системе отказы линий связи имеют место. Это приводит к расчленению сети на отдельные фрагменты, в результате чего узлы(сайты) одного фрагмента смогут взаимодействовать, но не будут иметь доступа к сайтам в другом фрагменте.
На следующем рисунке исходная распределенная система состоит из пяти узлов(сайтов). В результате отказа линии связи между узлами(сайтами) 1 и 2 была расчленена на два фрагмента: сайты 1, 4, 5 и сайты 2, 3 — как показано на рис..
а) б)
Расчленение сети: а) исходное состояние сети до отказа; б) состояние сети после отказа линии связи .
В некоторых случаях бывает трудно установить, что именно отказало — линия связи или узел(сайт), с которым она соединена. предположим, что сайт 1 не может взаимодействовать с сайтом 2 в пределах установленного временного интервала (тайм-аута). Причиной этому может служить любая из следующих ситуаций:
сайт 2 не функционирует или нарушена работа сети;
отказ в линии связи;
имеет место расчленение сети;
сайт 2 в настоящее время перегружен и не способен ответить на поступившее сообщение в пределах установленного тайм-аута.
Выбор корректного значения тайм-аута, которое с уверенностью позволит утверждать о действительной невозможности взаимодействия двух сайтов, является непростой задачей.
2.4.1 Распределенные протоколы восстановления
Как уже упоминалось выше, процессы восстановления в распределенных СУБД усложняются тем фактом, что соблюдение свойства атомарности требуется как в отношении локальных субтранзакций, так и всей глобальной транзакции в целом, Механизмы восстановления, описанные в разделе 17,3, гарантируют атомарность лишь субтранзакций, тогда как СУРБД необходимо гарантировать и атомарность всей глобальной транзакции. По этой причине в процедуры фиксации и отката транзакций необходимо внести такие изменения, которые не позволят глобальной транзакции зафиксировать или отменить результаты ее выполнения, пока все ее субтранзакции не будут успешно зафиксированы или отменены, Кроме того, модифицированные протоколы должны обрабатывать ситуации отказа сайта или линии связи таким образом, чтобы гарантировать, что отказ одного из сайтов не окажет влияния на обработку данных на другом сайте, Другими словами, работоспособные сайты не должны оказаться заблокированными из-за отказа других сайтов. Протоколы, обеспечивающие выполнение последнего требования, называются неблокирующими. В этом разделе мы рассмотрим два широко распространенных протокола фиксации транзакций, которые могут использоваться в среде СУРБД: протокол двухфазной фиксации транзакций (2РС) и неблокирующий протокол трехфазной фиксации транзакций (ЗРС),
Мы будем предполагать, что каждая глобальная, транзакция связана с некоторым сайтом, функционирующим как координатор выполнения этой транзакции. Обычно координатором является тот сайт, на котором транзакция была инициирована. Сайты, на которых глобальная транзакция создала агентов, мы будем называть участниками, Предполагается, что координатор транзакции знает идентификаторы всех участников, а каждый участник знает идентификатор координатора, но не обязан знать идентификаторы остальных участников