- •Часть IV
- •Глава 13 Восстановление
- •13.1. Введение
- •13.2. Транзакции
- •13.3. Восстановление транзакции
- •13.4. Восстановление системы
- •13.5. Восстановление носителей
- •13.6. Двухфазная фиксация
- •13.7. Поддержка языка sql
- •13.8. Резюме
- •Глава 14 Параллелизм
- •14.1. Введение
- •14.2. Три проблемы параллелизма
- •14.3. Блокировка
- •14.4. Решение проблем параллелизма
- •14.5. Тупиковая ситуация
- •14.6. Способность к упорядочению
- •14.7. Уровни изоляции
- •14.8. Преднамеренная блокировка
- •IX s
- •14.9. Поддержка блокировок в sql
- •14.10. Резюме
- •14.13. Papadimitriou с. The Theory of Database Concurrency Control.— Rockville, Md.: Computer Science Press, 1986.
- •Глава 15 Безопасность
- •15.1. Введение
- •15.2. Общие соображения
- •15.3. Избирательное управление доступом
- •15.4. Модификация запроса
- •15.5. Обязательное управление доступом
- •15.6. Шифрование данных
- •Стандарт шифрования данных
- •15.7. Поддержка мер обеспечения безопасности в языке sql
- •15.8. Резюме
Часть IV
Защита данных
Эта часть книги посвящена защите данных, т.е. охране данных от множества возможных угрожающих ситуаций (как преднамеренных, так и случайных). Дело в том, что в ряде случаев действительно существует риск потери данных.
• Система может быть разрушена во время выполнения некоторых программ, оставив при этом базу данных в непредсказуемом состоянии.
• При выполнении двух конкурирующих программ между ними может возникнуть конфликт, что приведет к получению неправильных результатов.
• Данные могут быть испорчены или изменены анонимным пользователем.
• Обновления могут изменять базу данных недопустимым способом.
И т.д. (вариантов может быть бесконечное множество). Следовательно, система должна обеспечивать функции защиты базы данных от подобных проблем, в частности восстановление, параллелизм, защиту и целостность. Все эти функции детально описаны в главах 13-16, представленных в этой части.
Глава 13 Восстановление
13.1. Введение
Эта и следующая глава посвящены восстановлению и параллелизму. Эти функции во многом взаимодействуют и являются аспектами более общей проблемы, называемой процессом транзакции. Однако из педагогических соображений желательно изучать их отдельно. В настоящей главе мы остановимся на функции восстановления, однако время от времени ссылки на функцию параллелизма будут неизбежны.
Восстановление в системе управления базами данных(СУБД) означает в первую очередь восстановление самой базы данных, т.е. возвращение базы данных в правильное состояние, если какой-либо сбой сделал текущее состояние неправильным или подозрительным. Основной принцип, на котором строится такое восстановление, достаточно прост — это избыточность. Но эта избыточность организуется на физическом уровне. Конечно, такая избыточность будет скрыта от пользователя, а, следовательно, не видна на логическом уровне. Другими словами, если любая часть информации, содержащаяся в базе данных, может быть реконструирована из другой хранимой в системе избыточной информации, значит, база данных восстанавливаема.
Перед тем как идти дальше, необходимо уяснить, что принцип восстановления и процесс транзакции в целом не зависят от того, является ли базовая система реляционной или какой-либо еще. Нужно также отметить, что это весьма обширный предмет обсуждения, и мы можем познакомить читателя только с наиболее важными и базовыми принципами. Для более углубленного изучения предмета можно обратиться к книгам, указанным в списке литературы по рассматриваемой теме (в частности, обратите внимание на [ 13.11 ]).
План главы следующий. После короткого введения описываются процессы транзакции и восстановления транзакции (восстановление базы данных после неудачного выполнения какой-либо транзакции). Затем проблема восстановления обсуждается более глубоко (восстановление после одновременного нарушения всех текущих транзакций, вызванного неким сбоем системы). После этого рассматривается вопрос восстановления носителей (восстановление после физического повреждения базы данных, например из-за поломки головок дискового накопителя). Далее описывается исключительно важная проблема двухфазной фиксации и обсуждаются операции языка SQL. И, наконец, приводится резюме и несколько заключительных замечаний.