Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Interbase

.pdf
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
6.05 Mб
Скачать

Глава 9

Транзакции. Механизм транзакций в InterBase

9.1.Понятие транзакции. Назначение транзакций

Транзакции и поддержание логической целостности данных

Прежде всего, определимся с понятием транзакции (transaction). При внесении изменений в базу данных возникает ряд проблем, даже если с базой работает только один пользователь. Данные одного документа могут в базе храниться в различных таблицах, кроме того, они могут использовать другие данные, логически связанные с ними. Если обработка документа будет по тем или иным причинам прервана, то это может привести не только к неполноте данных, но и к нарушению их логической целостности. Например, агрегированные данные могут разойтись с исходными данными, на основе которых они были получены. При обработке множества строк таблицы возможна ситуация, когда часть строк обработана, а другая нет, например изменение размера пенсий для определенной группы. Простой повтор таких операций невозможен, поскольку неизвестно в какие именно строки были внесены изменения, а какие изменены не были. Другими словами неполный ввод (модификация или Удаление) логически связанных групп данных чреват большими трудностями по восстановлению целостности и непротиворечивости информации. Для решения этой проблемы и предусматривается использования Механизмов управления транзакциями.

252

Глава 9

Транзакция - это группа операций с базой данных, выполняемых как единое целое. Запись данных в базу производится только при успешном выполнении всех операций группы. Если хотя бы одна из операций группы завершается неуспешно, то база данных возвращается к тому состоянию, в котором она бьша до выполнения первой операции группы (производится откат всех изменений). Таким образом, после устранения причины неудачного выполнения групповой операции с базой ее можно просто повторить. То есть механизм транзакций позволяет обеспечить логическую целостность данных в базе. Другими словами, транзакции - это логические единицы работы, после выполнения которых база данных остается в целостном состоянии. Транзакции также являются единицами восстановления данных. После сбоев - восстанавливаясь, система ликвидирует следы транзакций, не успевших успешно завершиться в результате программного или аппаратного сбоя. Эти два свойства транзакций определяют атомарность (неделимость) транзакции.

Логическая целостность базы включает два уровня: формальную целостность и семантическую (смысловую) целостность.

Под формальной логической целостностью понимается соблюдение явно описанных в базе ограничений логической целостности, таких как:

ограничения первичных ключей (PRIMARY KEY);

ограничения уникальных ключей (UNIQUE KEY);

ограничения внешних ключей (FOREIGN KEY);

ограничения, задаваемые конструкциями CHECK;

ограничения, задаваемые используемыми триггерами. Обеспечение целостности на этом уровне осуществляется стандарт-

ными средствами базы. Пользователю просто не удастся ввести данные, нарушающие эти ограничения.

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

Проблемы доступа к данным в многопользовательских системах

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

Соседние файлы в предмете Базы данных