Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Уд.DOC
Скачиваний:
7
Добавлен:
27.10.2018
Размер:
1.11 Mб
Скачать

Обеспечение целостности (12 Восстановление данных)

Для поддержки логической целостности используются:

  1. На уровне поля или записи

  • Ограничения целостности, задаваемое в базе данных, либо реализация в приложении.

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

  1. На уровне ссылочной целостности – используется в реализации приложений, либо описание связанных ключей в БД.

Primary key – первичный ключ;

Foreign key references…. – вторичный ключ.

В базе данных можно задать триггеры. Триггеры - фиксированная или определяемая пользователем подпрограмма автоматического выполнения при изменении в базе данных. Для каждой таблицы БД можно задать триггер добавления, модификации и удаления. Триггер может быть:

  • Ограничительным;

  • Каскадным, т.е. меняется по всем связям значения;

  • Разрешается свободное нарушение связей.

  1. Для поддержки транзакционной целостности используется аппарат транзакций.

Транзакция – набор операций с базой, которые должны быть выполнены все, либо не выполнены ни одна. В ходе выполнения транзакции информация в базе не достоверна.

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

Д – собственно БД в основной памяти

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

АД – архив данных, для старых данных, не требующихся для оперативной работы.

Ж – журнал операций, протоколирует процесс изменений в базе. Это позволяет восстановить запомненную последовательность действий.

Буф Ж – буфер журнала, для хранения самых свежих изменений, для обеспечения быстродействия.

АЖ – архив журнала, хранятся наиболее старые данные из журнала.

1) Нормальный режим – выполняется обработка данных в Буф Д, при необходимости считываются данные с диска. Изменения, выполнимые с БД запоминаются в Буф Ж. Из буферов на диск информация записывается в следующих ситуациях:

  • Из буфера Ж по переполнению, по явной команде системы, по завершению транзакции, по записи из буфера диска.

  • Из буфера Д – по переполнению буфера, по явной команде системе.

При сбросе буфера данных предварительно сбрасывается буфер журнала.

Данные могут архивироваться по явному заданию пользователя и возможно автоматически по заданию системы. Если в архив переносятся измененные данные, как правило, по дате создания, возможна полная архивация.

При переполнении Ж м.б. 2 варианта:

  1. если есть АЖ, то старые данные сбрасываются в него. Для обеспечения непрерывности Ж может быть разделен на блоки. В один блок записывается из Буф, из другого блока скидывается в архив.

  2. если нет АЖ, то при заполнении Ж выполняется приостановление, архивируется база, очищается журнал.

2) При нарушении целостности восстановление зависит от вида нарушений:

  1. Восстановление в рамках одной транзакции

  2. Восстановление после мягкого сбоя

  3. Восстановление после жесткого сбоя

  1. Откат транзакции

Нужно выполнять, если в ходе транзакции произошла ошибка, если пользователь задал окончание транзакции, или при возникновении конфликта транзакции.

Для отката просматриваются в обратном порядке операции транзакции, выполняются инверсные к ним.

Выполнение операции отката также фиксируются в журнале.

  1. Восстановление после мягкого сбоя. После мягкого сбоя – теряем содержимое буфера. Восстановление по журналу в зависимости от начала и конца транзакции.

Т2 – данные , отсутствующие на диске, восстанавливаются по журналу

Т3 – незавершенная транзакция откатывается к началу изменений

Т4 – по журналу выполняется заново

Т5 – удаляются данные по транзакции из журнала.

  1. Восстановление после жесткого сбоя. Потеряны данные на диске. Последовательность восстановления:

  • Записывается база из архива данных

  • Выполняется обновление по архиву журнала и журналу

  • Незавершенные транзакции откатываются на начало

Кроме указанных средств для повышения надежности в СУБД используется зеркалирование – это параллельная запись нескольких копий.