Виды декомпозиций. Декомпозиция без потерь

         

Восстановление распределенных баз данных


(Коннолли, с.740-752).

Существует 4 типа отказов, характерных для СУРБД:

·          потеря сообщения;

·          отказ линии связи;

·          аварийный останов одного из сайтов;

·          расчленение сети.

Если СУРБД обнаружит, что некоторый сайт отказал/стал недоступным, она должна выполнить следующие действия:

1.            отменить выполнение всех транзакций, затронутых данным отказом;

2.            отметить сайт как отказавший, чтобы предотвратить любые попытки его использования другими сайтами;

3.            периодически проверять состояние отказавшего сайта для восстановления его функционирования или ожидать поступления от этого сайта широковещательного сообщения с указанием о восстановлении его нормальной работы;

4.            при перезапуске сайта после отказа на нем должна выполняться процедура восстановления, предназначенная для отката любых транзакций, выполненных на момент отказа лишь частично;

5.            после завершения процедуры локального восстановления отказавший сайт должен обновить свою копию БД, чтобы привести ее в соответствие с остальной частью системы.

Процессы восстановления в СУРБД усложняются тем фактом, что соблюдение свойства атомарности требуется как в отношении локальных субтранзакций, так и всей глобальной транзакции. По этой причине в процедуре фиксации и отката транзакций необходимо внести такие изменения, которые не позволят глобальной транзакции зафиксировать/отменить результаты ее выполнения, пока все ее субтранзакции не будут успешно зафиксированы/отменены. Работоспособные сайты не должны оказаться заблокированными из-за отказа др.
сайтов, протоколы, обеспечивающие выполнение этого требования называются неблокирующими.

Существует 2 широко используемых протокола фиксации транзакций в СУРБД:

1.            протокол двухфазной фиксации транзакций (2PC)

2.            неблокирующий протокол трехфазной фиксации транзакций (3РС).

Протокол двухфазной фиксации транзакций выполняется в 2 этапа: этап голосования и принятия решений. Идея состоит в том, что координатор должен опросить всех участников, готовы ли они к фиксации транзакций. Если хотя бы 1 из участников не ответит на запрос в пределах заданного тайм-аута/потребует отката, то координатор (сайт, следящий за выполнением глобальной транзакции) укажет всем участникам на необходимость отката данной транзакции. Данный протокол предполагает, что каждый сайт имеет свой собственный локальный журнал и с его помощью может надежно откатить/зафиксировать транзакцию. Двухфазный протокол включает в себя этап ожидания сообщения от др. сайтов. Во избежание блокировок процессов система использует механизм тайм-аута. Двухфазный протокол не является неблокирующим, т.к. при его использовании возможны ситуации, когда некоторый сайт остается в заблокированном состоянии (процесс, зафиксировавший тайм-аут после отправки согласия на фиксацию транзакции, но так и не получивший глобального подтверждения от координатора, остается в заблокированном состоянии). На практике вероятность блокирования процесса достаточно мала, поэтому в большинстве СУРБД используется именно этот протокол.

Трехфазная фиксация транзакций. Для использования этого протокола необходимо выполнение следующих условий: расчленение сети не должно иметь места, по крайней мере 1 сайт всегда должен быть доступен, самое большое К сайтов может отказать одновременно. Трехфазная фиксация является неблокирующей в отношении отказов сайтов, за исключением ситуации одновременного отказа всех сайтов. Основная идея данного протокола состоит в устранении неопределенного периода ожидания, в который попадают участники после согласия на фиксацию транзакции и до получения от координатора извещения о глобальной фиксации/глобальном откате.Для этого вводится третья фаза – предфиксация (PRE-COMMIT), помещаемая между фазами голосования и принятия глобального решения. Участник, получивший глобальное извещение о предфиксации знает, что все участники проголосовали за фиксацию результатов транзакции и что со временем сам участник тоже выполнит фиксацию, если не наступит отказ. Каждый участник подтверждает получение сообщения о предфиксации. После того как координатор получит эти подтверждения, он рассылает команду глобальной фиксации транзакций.


Содержание раздела