Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_bd.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.5 Mб
Скачать

3. Сбой носителя (диска)

Сбои носителей связаны с отказами устройств внешней памяти, на которых хранится ста-бильная база данных. Обычно эта проблема решается путём применения дуплексных устройств и поддержания архивных копий базы данных.

4. Коммуникационные сбои

Рассмотренные выше типы сбоев характерны и для централизованных, и для распределённых СУБД. Коммуникационные сбои, напротив, являются специфической проблемой распределённых баз данных. Они подразделяются на несколько разновидностей, наиболее распространенные из которых:

1) ошибки в сообщениях;

2) нарушение упорядоченности сообщений;

3) потерянные (недоставленные) сообщения;

4) повреждения на линиях связи.

Первые 2 разновидности находятся в компетенции сетевых протоколов, третья и четвёртая – в ведении СУБД и должны учитываться в протоколах обеспечения надёжности.

Если один узел ожидает сообщения от другого, а оно не поступает, то причин тому может быть несколько:

  • сообщение утрачено; возникло повреждение на линии связи; узел, от которого ожидается сообщение, отказал.

В любом случае ожидающий узел по истечении определённого промежутка времени просто решает, что узел-партнёр стал недоступен. Последствием повреждений на линиях связи может стать фрагментация сети, когда множество узлов распадается на группы, внутри которых имется связь, а коммуникации между группами невозможны.

Протоколы обеспечения надёжности поддерживают два свойства транзакций: атомарность и долговечность.

Атомарность означает, что выполняются либо все действия транзакции, либо не выполняется ни одно (принцип "всё или ничго"). Атомарность гарантируется даже в условиях возможных отказов. Долговечность означает, что результат успешно завершённой (зафиксированной) транзакции сохраняется даже при последующих сбоях. Для обеспечения атомарности и долговечности необходимы протоколы атомарной фиксации и протоколы распределённого восстановления. Если РБД однородна, т.е. на всех узлах данные хранятся в формате одной базы и на всех узлах функционирует одна и та же СУБД, то протоколом атомарной фиксации является протокол двухфазной фиксации транзакций (2PC – 2 Phase Commit), состоящий из двух фаз:

1. Подготовка к фиксации транзакции (голосование).

2. Глобальные фиксация или откат транзакции (принятие решения).

Три основных принципа:

  1. Если хотя бы один узел отказывается зафиксировать транзакцию (голосует за её прерывание), то распределённая транзакция прерывается на всех участвующих в ней узлах.

  2. Если все узлы голосуют за фиксацию транзакции, то она фиксируется на всех участвующих в ней узлах.

  3. Проголосовавший участник не может изменить своё решение.

Заметим, что участникам, проголосовавшим за прерывание, сообщение посылать не нужно, поскольку они сами способны принять решение, исходя из правил этого протокола. Эта ситуация известна под названием опция одностороннего прерывания.

Если время ожидания исчерпано, то ждущий процесс (координатор или участник) следует протоколу терминирования. Протокол терминирования – протокол, при помощи которого отдельный узел может принять решение о том, как следует завершить транзакцию в условиях, когда он не может взаимодействовать с другими участвующими в данной транзакции узлами.

Если участники способны взаимодействовать друг с другом, то можно сконструировать распределённый протокол терминирования. Предпринимались попытки создания неблокирующих протоколов (например, протокол трёхфазной фиксации – 3PC), но высокие накладные расходы, связанные с их выполнением, препятствовали их принятию (к тому же он тоже не без изъянов). Протокол трёхфазной фиксации (3PC) является неблокирующим протоколом, но лишь при следующих условиях:

1) не должно быть расчленения сети;

2) хотя бы один узел всегда должен быть доступен

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

чают информацию о других). Каждый участник сообщает координатору о получении сообщения предфиксации, после чего координатор рассылает команду зафиксировать транзакцию.

Обратной стороной терминирования является восстановление. Возможны следующие случаи:

1. Сбой произошёл до начала процедуры фиксации. В этом случае узел может начать процесс фиксации после восстановления.

2. Координатор отказал, находясь в состоянии готовности, т.е. он уже разослал команду "приготовиться". После восстановления координатор может перезапустить процедуру фиксации и снова разослать участникам эту же команду. Если участники уже завершили транзакцию, то они сообщают об этом координатору. Если они были заблокированы, то они выходят из заблокированного состояния и вновь отсылают координатору свои голоса и возобновляют процесс фиксации.

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

базах данных используют менеджеры распределённых транзакций, относящиеся к категории middleware и реализующие модель распределённой обработки транзакций X/Open (раздел Middleware).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]