Защита данных. Транзакции. Восстановление транзакции. Восстановление системы.


Пусть имеется система, в которой хранятся данные о подразделениях и работающих в них сотрудниках. Список подразделений хранится в таблице ПОДР(ПОДР_Ном,ПОДР_Имя, ПОДР_КолСотр):
Список сотрудников хранится в таблице СОТР(СОТР_Ном, СОТР_Имя, ПОДР_Ном) 
При вставке нового сотрудника необходимо одновременно увеличить значение поля ПОДР_КолСотр:
Шаг 1. Вставить сотрудника в таблицу СОТР.
Шаг 2. Увеличить значение поля Dept_Kol на 1.
Если после выполнения первой операции и до выполнения второй произойдет сбой системы, то реально будет выполнена только первая операция и база данных остается в нецелостном состоянии. Т.е. необходима защита данных.

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

Атомарность. Либо выполняется вся транзакция целиком, либо она целиком не выполняется.

Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.

Изоляция. Транзакции разных пользователей не должны мешать друг другу.

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

Восстановление транзакций.
Транзакция обычно начинается автоматически с момента присоединения пользователя к СУБД и продолжается до тех пор, пока не произойдет одно из следующих событий:
— Подана команда COMMIT WORK — завершает текущую транзакцию и автоматически начинает новую транзакцию. При этом результаты работы завершенной транзакции сохраняются в базе данных.
— Подана команда ROLLBACK WORK — приводит к тому, что все изменения, сделанные текущей транзакцией отменяются. При этом автоматически начинается новая транзакция.
— Произошло отсоединение пользователя от СУБД — автоматическая фиксация транзакций.
Произошел сбой системы – происходит восстановление системы.

Восстановление системы.
Существует 2 вида сбоя систем:
1. Отказы системы (сбои в питании) поражающие все транзакции, но физически не нарушающие БД в целом.
2. Отказы носителей (поломка головок носителя).
Критической точкой в отказе системы является потеря содержимого оперативной памяти. В результате выполнявшиеся на данный момент транзакции не могут быть выполнены и будут отменены при перезагрузке системы. Более того, возможно, потребуется выполнить определенную успешно выполнившуюся транзакцию до сбоя системы, если не были выполнены обновления этой транзакции. Для выполнения такого обновления система автоматически фиксирует контрольную точку.
5 вариантов транзакций.

В приведенном примере при перезагрузке системы транзакции типа Т3 и Т5 должны быть отменен; а транзакции типа Т2 и Т4 должны быть выполнены повторно. Транзакции типа Т1 вообще не включаются в процесс перезагрузки (обновления зафиксированы).
Восстановление – это повторное выполнение всех транзакций, вызванное применением резервной копии.