Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Концепция транзакций

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

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

Например, в автоматизированной банковской транзакции, чтобы правильно выполнить перевод денег со счета A на счет B, кредитованию счета B должно предшествовать списание денег со счета А, в противном случае транзакция должна завершиться ошибкой.

Транзакция имеет следующий набор свойств ACID:

  • Атомарность (Atomicity)   Транзакция является наименьшей неделимой единицей работы и выполняется только один раз, независимо от того вся ли работа выполнена либо она не выполнена вообще.

  • Целостность (Consistency)   Транзакция сохраняет целостность данных, преобразуя одно согласованное состояние данных в другое согласованное состояние.

  • Изоляция (Isolation)   Транзакция является единицей изоляции и каждая из них возникает отдельно и независимо от параллельных транзакций.

  • Надежность (Durability)   Транзакция является единицей восстановления. Если транзакция проходит успешно, то внесенные ей изменения сохраняются даже в случае сбоя или завершения работы системы. Если транзакция дает сбой, система остается в том состоянии, которое было до выполнения транзакции.

Рассмотрим перечисленные свойства на примере банковской транзакции:

  • Атомарность. Данное свойство гарантирует, что списание денег со счета А и кредитование счета В либо произойдут вместе, либо не произойдет ни одного из них.

  • Целостность. Гарантирует, что целостность данных после завершения транзакции не будет нарушена. Например, если при пополнении счета В произойдет ошибка, списания средств со счета А не произойдет.

  • Изоляция. Обеспечивает возможность параллельного выполнения независимой транзакции по переводу средств со счета А на счет С, не нарушая при этом целостность данных, то есть счета В и С будут увеличены на указанные для них значения, а счет А уменьшен на сумму этих значений. При этом, если средств недостаточно для операции перевода на счет В и достаточно для перевода на счет С, транзакция по кредитованию счета С завершится успешно, а для счета В транзакция завершится с ошибкой и будет отменена.

  • Надежность. Гарантирует, что если во время выполнения транзакции после списания средств со счета А и до внесения соответствующей суммы на счет В произойдет сбой системы, то после восстановления средства со счета А списаны не будут. Если же сбой произойдет после успешной фиксации транзакции, счет А будет уменьшен, а счет В пополнен на указанную сумму.

Соседние файлы в предмете Информатика