Лекция 25 Лекция 25 Понятие целостности базы данных. Условия целостности. Транзакции. Обработка транзакций. Свойства транзакций. Модель ANSI/ISO. Назначение и использование журнала транзакций. Откат и восстановление
Целостность БД - правильность и непротиворечивость ее содержимого на уровне отдельных объектов и операций на уровне базы данных в целом
Транзакция – неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации) такая, что: либо результаты всех операторов, входящих в транзакцию, отображаются в БД; либо воздействие всех этих операторов полностью отсутствует.
Выполнение и откат транзакции COMMITROLLBACK Исходное состояние Исходное состояние Измененная БД Нарушение целостности
Модели транзакций: Стандарт ANSI/ISO (СУБД DB2) – автоматическое выполнение транзакций COMMIT ROLLBACK Модель транзакций СУБД Sybase (Transact-SQL) – управляемое выполнение транзакций BEGIN TRANSACTION COMMIT TRANSACTION SAVE TRANSACTION ROLLBACK
Модель автоматического выполнения транзакций Непротиворечивая БД INSERT COMMIT UPDATE COMMIT ROLLBACK Транзакция автоматически начинается с выполнения пользователем или программой первой инструкции SQL. Завершается последовательное выполнение инструкций одним из двух способов: инструкцией COMMIT (изменения, внесенные в БД, становятся постоянными, а новая транзакция начинается сразу после инструкции COMMIT); инструкцией ROLLBACK (отменяет выполнение текущей транзакции и возвращает БД к состоянию начала транзакции, новая транзакция начинается сразу после инструкции ROLLBACK).
Модель управляемого выполнения транзакций Исходное состояние БД BEGIN TRANSACTION INSERT SAVE TRANSACTION A Точка сохранения А UPDATE ROLLBACK TO A DELETE COMMIT TRANSACTION Состояние БД после транзакции BEGIN TRANSACTION сообщает о начале транзакции; COMMIT TRANSACTION сообщает об успешном выполнении транзакции (новая транзакция не начинается автоматически); SAVE TRANSACTION позволяет создать внутри транзакции точку сохранения; ROLLBACK отменяет выполнение текущей транзакции и возвращает БД к состоянию SAVE TRANSACTION или к состоянию начала транзакции.
Восстановление БД Восстановление БД ( последнее согласованное состояние после сбоя) = Журнал транзакций + Архивная копия
Общие требования к системе восстановления данных в составе СУБД Пользователь не должен осуществлять рестарт транзакций или повторный ввод данных. Восстановление должно проходить на базе транзакции с помощью отмены или изменения отдельных транзакций Быстрое восстановление данных обеспечивается генерацией данных, используемых для восстановления При выполнении процедур автоматизированного восстановления пользователь не должен анализировать состав данных и выбирать сами процедуры.
Сервисные программные средства Программы ведения системного журнала (регистрируют операции над БД) Программы архивации (регулярное получение копий БД Программы восстановления (возврат БД или некоторых ее частей в состояние, предшествующее возникновению отказа) Программы отката (ликвидируют последствия выполнения определенной транзакции в БД) Программы записи контрольных точек и повторного исполнения
Свойства ACID (Atomicity, Consistency, Isolation, Durability): атомарность – операции транзакции образуют неразделимый атомарный блок с определенным началом и концом. Этот блок либо выполняется от начала до конца, либо не выполняется вообще; согласованность – по завершении транзакции все задействованные объекты находятся в согласованном состоянии; изолированность – одновременный доступ транзакций различных приложений к разделяемым объектам координируется таким образом, чтобы эти транзакции не влияли друг на друга; долговременность – все изменения данных, осуществленные в процессе выполнения транзакции, не могут быть потеряны.