Interbase
.pdfГлава 9
Транзакции. Механизм транзакций в InterBase
9.1.Понятие транзакции. Назначение транзакций
Транзакции и поддержание логической целостности данных
Прежде всего, определимся с понятием транзакции (transaction). При внесении изменений в базу данных возникает ряд проблем, даже если с базой работает только один пользователь. Данные одного документа могут в базе храниться в различных таблицах, кроме того, они могут использовать другие данные, логически связанные с ними. Если обработка документа будет по тем или иным причинам прервана, то это может привести не только к неполноте данных, но и к нарушению их логической целостности. Например, агрегированные данные могут разойтись с исходными данными, на основе которых они были получены. При обработке множества строк таблицы возможна ситуация, когда часть строк обработана, а другая нет, например изменение размера пенсий для определенной группы. Простой повтор таких операций невозможен, поскольку неизвестно в какие именно строки были внесены изменения, а какие изменены не были. Другими словами неполный ввод (модификация или Удаление) логически связанных групп данных чреват большими трудностями по восстановлению целостности и непротиворечивости информации. Для решения этой проблемы и предусматривается использования Механизмов управления транзакциями.
252 |
Глава 9 |
Транзакция - это группа операций с базой данных, выполняемых как единое целое. Запись данных в базу производится только при успешном выполнении всех операций группы. Если хотя бы одна из операций группы завершается неуспешно, то база данных возвращается к тому состоянию, в котором она бьша до выполнения первой операции группы (производится откат всех изменений). Таким образом, после устранения причины неудачного выполнения групповой операции с базой ее можно просто повторить. То есть механизм транзакций позволяет обеспечить логическую целостность данных в базе. Другими словами, транзакции - это логические единицы работы, после выполнения которых база данных остается в целостном состоянии. Транзакции также являются единицами восстановления данных. После сбоев - восстанавливаясь, система ликвидирует следы транзакций, не успевших успешно завершиться в результате программного или аппаратного сбоя. Эти два свойства транзакций определяют атомарность (неделимость) транзакции.
Логическая целостность базы включает два уровня: формальную целостность и семантическую (смысловую) целостность.
Под формальной логической целостностью понимается соблюдение явно описанных в базе ограничений логической целостности, таких как:
•ограничения первичных ключей (PRIMARY KEY);
•ограничения уникальных ключей (UNIQUE KEY);
•ограничения внешних ключей (FOREIGN KEY);
•ограничения, задаваемые конструкциями CHECK;
•ограничения, задаваемые используемыми триггерами. Обеспечение целостности на этом уровне осуществляется стандарт-
ными средствами базы. Пользователю просто не удастся ввести данные, нарушающие эти ограничения.
Под семантической логической целостностью будем понимать соблюдение требования полноты внесения группы логически связанных изменений, обеспечивающих согласованность данных в базе. Выполнение именно этого требования и реализуется с помощью механизма транзакций.
Проблемы доступа к данным в многопользовательских системах
Механизм транзакций в однопользовательских системах покоится на трех китах: атомарность - транзакция выполняется как единое целое, согласованность - в результате выполнения транзакции база данных переходит из одного согласованного состояния в другое, долговечность - результаты транзакции сохраняются в базе данных.