Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

Раздел 6. Использование бд

Шестой раздел курса включает три темы: “ Программирование и управление транзакциями, “Защита баз данных. Целостность и сохранность баз данных,Современные тенденции построения баз данных. После изучения каждой темы Вам следует ответить на вопросы для самопроверки.

В данном разделе выполняется лабораторная работа № 3. Рекомендации по ее выполнению приведены в методических указаниях к выполнению лабораторных работ.

Работа с разделом 6 завершается сдачей контрольного теста.

Для того, чтобы Вы смогли успешно ответить на вопросы контрольного теста, Вам предоставляется возможность поработать с репетиционным тестом. Если Вы испытываете затруднения в ответе на какой-либо вопрос, обратитесь к учебнику [1].

6.1. Программирование и управление транзакциями

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

Для проверки изучения материала темы Вам предстоит ответить на вопросы для самопроверки.

Если Вы испытываете затруднения в ответе на какой-либо вопрос, обратитесь к главе 15 учебника [1] или к материалам учебного пособия [11].

6.1.1. Управление транзакциями в системах баз данных

Понятие транзакции

Поддержание механизма транзакций - показатель развитости СУБД. Корректное поддержание транзакций одновременно является основой обеспечения целостности базы данных, а также составляет базис изолированности пользователей в многопользовательских СУБД.

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

Например, если имеется таблица данных следующего вида: «Сотрудник (Номер, фамилия, телефон, должность, зарплата)», то простейшей транзакцией может быть модификация зарплаты определенного работника.

Транзакция характеризуется четырьмя свойствами: атомарности (Atomicity), согласованности (Consistency), изолированности (Isolation) и долговечности (устойчивости) (Durability) - ACID. Эти свойства означают следующее:

  1. свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вообще;

  2. свойство согласованности предполагает, что транзакция должна переводить данные из одного согласованного состояния в другое – на практике ответственность возлагается на разработчиков приложений;

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

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

Транзакции и целостность баз данных.

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

Если же в процессе работы случилось нечто, что делает выполнение транзакции невозможным, база данных возвращается в исходное состояние. Откат транзакции (ROLLBACK TRANSACTION)- это действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны операторами запроса (SQL) в теле текущей незавершенной транзакции.

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

В стандарте ANSI/ISO SQL транзакция связана с операторами COMMIT и ROLLBACK. Стандарт определяет, что транзакция начинается с первого SQL-оператора, инициируемого пользователем в программе, т.е. c команды BEGIN TRANSACTION. Все последующие операторы составляют тело транзакции. Транзакция завершается одним из четырех возможных вариантов (рис. 6.1):

  1. оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции;

  2. оператор ROLLBACK прерывает транзакцию, отменяя все изменения, сделанные в рамках текущей транзакции; новая транзакция начинается непосредственно после оператора ROLLBACK;

  3. успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (аналогично работе оператора COMMIT);

  4. ошибочное завершение программы прерывает выполнение транзакции (аналогично работе оператора ROLLBACK).

Рис. 6.1 Возможные варианты завершения транзакции

Различаются два вида ограничений целостности: немедленно проверяемые и откладываемые. К немедленно проверяемым относятся ограничения целостности, проверку которых бессмысленно или невозможно откладывать (например, ограничение на отрицательное значение счета в банке). Эти ограничения целостности соответствуют уровню отдельных операторов языка СУБД и при их нарушении производится не откат транзакции, а лишь отвергается определенный оператор. Откладываемые ограничения - это ограничения на базу данных, а не на какие-либо отдельные операции. По умолчанию такие ограничения проверяются в конце транзакции, и их нарушение вызывает автоматическую замену оператора COMMIT на оператор ROLLBACK. Однако в некоторых системах поддерживается специальный оператор насильственной поддержки ограничений целостности внутри транзакций.

Возможности отката и фиксации транзакции обеспечивается благодаря наличию в СУБД функции ведения журнала транзакций.