Введение в системы БД (542480), страница 141
Текст из файла (страница 141)
Восстановление системы осуществляется как часть процедуры перезагрузки (которая иначе называется процедурой перезагрузкиlвосснгановления). Анализируя последнюю имеющуюся в журнале запись контрольной точки, система определяет, какую работу необходимо выполнить повторно, а какую отменить. Записи контрольной точки заносятся в журнал через установленное время. Система также обеспечивает восстановление носителей, что реализуется путем восстановления базы данных с заранее созданной резервной копии (дампа) с последуюшим использованием журнала для повторного выполнения всей работы, проведенной в базе данных после создания данной резервной копии. Для поддержки функции восстановления носителей используются утилиты восстановления с резервной копии. Системы, позволяюшие транзакциям взаимодействовать с двумя (или более) различными менеджерами ресурсов (напрнмер, с двумя разными СУБД или СУБД и менеджером передачи данных), должны использовать протокол, называемый протоколом двухфазной фиксации, который обеспечивает обязательное соблюдение свойства атомарности транзакции.
Две фазы этого протокола включают: а) подготовительную фазу, в которой координатор дает указание всем участникам быть готовыми "действовать одним из возможных способов"; б) фазу фиксации, в которой координатор (после того как все участники дали ожидаемый от них ответ во время 556 Часть 1р. управление транзакь)иями предыдущей фазы) инструктирует участников, что можно выполнить окончательную фиксацию данной транзакции (или ее откат в случае получения хотя бы одного отрицательного ответа). В отношении средств поддержки восстановления, определенных в стандарте языка Я >Ь„следует отметить, что в языке ЯО) предусмотрены явные операции СОММ1Т и ЕОЬЬВАСК, но нет явной операция ВЕ61И ТЕАМЯАСТ10М.
В нем также предусмотрена операция ЯЕТ ТЕАМЯАСТ10М, которая позволяет установить режим доступа и уровень изоляции для следующей выполняемой транзакции. И еше один момент. По умолчанию считалось, что в данной главе речь идет о среде прикладного программирования. Тем не менее все описанные концепции применимы и к пользовательской среде (хотя на этом уровне они могут быть в определенной степени скрыты). Например, ЯОБ-продукты обычно позволяют пользователю вводить БОБ-операции интерактивно, с терминала. Обычно каждая такая интерактивная ЯОЬ-операция обрабатывается как отдельная транзакция — по умолчанию система будет автоматически выполнять операцию СОММ1Т от имени пользователя сразу после выполнения заданной им ЯОБ-операции (или же операцию КОЫВВАСК, если произойдет сбой). Однако в некоторых системах пользователи могут запрещать такие автоматические операции СОММ1Т и вместо этого выполнять целую серию ЯОБ- операций (за которыми последует явная операция СОММ1Т), как единую транзакцию.
На практике делать это не рекомендуется, так как в подобном случае часть базы данных может быть заблокирована и на длительное время стать недоступной для других пользователей (глава ! 5). Более того, в такой операционной среде для конечных пользователей возможно возникновение ситуации взаи.иной блокировки, что является еше одним аргументом в пользу отказа от подобной практики (подробности приводятся в главе 15). Упражнения 14.1. Системы баз данных не позволяют транзакции фиксировать изменения только в отдельных базах данных (или переменных-отношениях и т.д.), т.е. без одновременного фиксирования этих изменений во всех других базах данных (или переменных- отношениях и т.д.).
Почему? 14.2. Транзакции не могут быть вложены одна в другую. Почему? 14.3. Дайте определение правила предварительной записи в журнал. Для чего оно нужно? 14.4. Каков смысл описанных ниже требований с точки зрения восстановления? а) Принудительная запись буферов базы данных во время операции СОММ1Т.
б) Запрещение физической записи буферов в базу данных до выполнения операции СОММ1Т. 14.5. Изложите суть протокола двухфазной фиксации и опишите последствия отказа во время каждой из его двух фаз для координатора и участника в отдельности. 14.6. Используя базу данных поставщиков и деталей, создайте БОБ-программу для выборки н распечатки сведений обо всех деталях в порядке их номеров детали, удаляя каждую десятую строку и начиная каждую новую транзакцию после каждой 557 1 лава 14. Восстановление Список литературы 14.1. 558 14.2 14.3 14.4 14.5 десятой строки. Предположим, что для внешнего ключа таблицы деталей по отношению к данным о поставщиках для операции РЕРЕТЕ задано правило САБСаРЕ (т.е. в рамках этого упражнения можно игнорировать поставки).
Замечание. В данном случае предложено предоставить решение с помощью языка БЯЕ, поэтому при подготовке ответа можно использовать механизм Б(3[.-курсоров. Вегпзге!и Р.А. Тгапзасцоп Ргосезз!пЕ Моп!гога П САСМ. — ХочегпЬег, 1990. — 33, № 11. "7Р-сисглеиа является интегрированным набором продуктов, которые... включают аппаратное обеспечение, такое как процессоры, оперативная память, диски, контроллеры обмена данными, а также программное обеспечение, такое как операционные системы, СУБД, компьютерные сети и ТР-диспетчеры.
Интеграция этих средств, в основном, достигается благодаря ТР-диспетчерам." Эта статья является хорошим неформальным введением в структуру и функции диспетчеров обработки транзакций. Вегпзге!и Р.А., НагЫ!асов Ч., Соодгпап Х. Сопсцггепсу Сон!го[ апг( Кесочегу !и ОагаЬазе Буз!егпз. — Кеаг!!пЕ, Мазал Аосйзоп-Фез!еу, 1937.
В этом учебнике намного шире, чем в представленной главе, описываются не только восстановление (как следует из ее названия), но и обработка транзакций в целом. В!!г!з А. е! а!. АББЕТ: А Бумегп Гог БцрроейпЕ Ех!епг!ег! Тгапзасбопз П Ргос. !994 АСМ Б!СМОО !пь Сопб оп МапаЕегпепг оГ Вага, М!ппеаро!В, М!пп., Мау, 1994. Основные понятия в области обработки транзакций, изложенные в этой и следую- щей главах, считаются чрезмерно жесткими для некоторых типов приложений (особенно для высокоинтерактивных приложений), а потому для устранения дан- ного недостатка было предложено несколько "расширенных моделей обработки транзакций" [!4,15]. Но на время написания настоящей книги ни одно из этих предложений не продемонстрировало своего очевидного превосходства над дру- гими.
В результате "разработчики баз данных [не спешили] с включением какой- либо одной модели в свои программные продукты". Основное назначение системы АББЕТ выглядит несколько иначе. Вместо предло- жения еще одной модели обработки транзакций в ней предлагается набор прими- тивных операторов (включая оператор СОИИ1Т, а также новые операторы), которые могут быть использованы для "определения настраиваемых моделей обработки транзакций, подходящих для специализированных приложений".
В частности, в статье показано, как система АББЕТ может использоваться для определения "вложенных транзакций, разделяемых транзакций, хроник и других расширенных моделей обработки транзакций, описанных в литературе". В]ог!г 1..А. Кесочегу Бсепапо Рог а ОВЛ)С Бумеш П Ргос. АСМ Ыаг!опа! СопГегепсе.— АГ!апГ~ Са, Ацйцзг, !973. Эта и аналогичная статья Дэвиса (Рая!ез) [14.7] представляют собой, наверное, наиболее ранние теоретические работы в области восстановления.
Сгцк Рс.А. Оа1а Кесочегу !и !ВМ ОАТАВАБЕ 2 П 1ВМ Буз. 1. — 1984. — 23, № 2. Часть 7К Управление транзакциями 14.8. Оач(ез С.Т., Кесочегу 1г. Оага Ргосезз!п8 Брйегез о( Сон!го! 0 1ВМ 5уз. 1.— 14.9. Пагс(а-Мо!1па Н., Ба!еш К. Ба8аз 0 Ргос.
1987 АСМ 81ПМОО !пгегп. Сопб оп 559 Глава 14. Восстановление 14.6. 14.7. Здесь подробно описан механизм восстановления, используемый в системе ОВ2 (тем самым дано очень хорошее общее описание механизма восстановления). В частности, объясняется, как система ОВ2 восстанавливается в процессе восстановления после сбоя в системе, в то время как сама транзакция находится посередине отката. При решении этой проблемы необходимо убедиться в том, что незафиксированные обновления транзакции, для которой выполнялся откат, будут действительно отменены Оаге С.1.
О!згг!Ьц1ед ОагаЬазе: А С1озег 1.оо)с д С.Л. Оаге апд Нцйй Ваги ел. Ре!айопа[ Оа!аЬазе ччг16п8з 1989 — 1991. — йеад(п8, Макал Адд!зоп-%ез!еу, 1992. В разделе 14.6 этой главы описан базисный протокол двухфазной фиксации, для которого можно предложить некоторые усовершенствования. Например, если участник Р отвечает координатору С в фазе 1, что он не совершает обновлений в данной транзакции (т.е.