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