Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, сокращённый курс, по 2 часа в неделю)



Урок 21
Информационные системы
(§12. Информационные системы)






Содержание урока

Основные понятия

Классификация

Транзакции

Вопросы и задания


Транзакции


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

Предположим, что в банке нужно перевести 100 000 рублей со счёта 12345 на счёт 54321. Эта банковская операция включает несколько действий с базой данных:

1) прочитать сумму на счету 12345;
2) уменьшить её на 100 000 рублей и записать результат обратно;
3) прочитать сумму на счету 54321;
4) увеличить её на 100 000 рублей и записать результат обратно.

Представьте себе, что случится, если после выполнения первых двух дей
ствий произойдет сбой питания и действия 3 и 4 не будут выполнены. Ответ ясен — первый клиент просто потеряет 100 000 рублей со своего счёта, т. е. данные станут некорректными.

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

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

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

Некоторые СУБД, например Firebird, не используют журнал, а при внесении изменений создают в базе данных новые записи, которые отмечаются как «рабочие» только тогда, когда транзакция завершена.

Следующая страница Вопросы и задания



Cкачать материалы урока






Наверх