Модели транзакций
Изолированность. Все транзакции выполняются независимо друг от друга. Иными словами, промежуточные результаты незавершенной транзакции не должны быть доступны для других транзакций. За обеспечение изолированности отвечает подсистема управления параллельным выполнением.
Устойчивость. Результаты успешно завершенной (зафиксированной) транзакции должны храниться в базе данных постоянно и не дол
жны быть утеряны в результате последующих сбоев. За обеспечение устойчивости отвечает подсистема восстановления.
ГЛАВА 2. Модели транзакций
2.1 Плоские транзакции
Модели плоских транзакций соответствует один управляющий слой, которому подчинено произвольное число элементарных действий. В современных информационных системах - это, как правило, единственная поддерживаемая на прикладном уровне модель транзакций, хотя внутренние компоненты системы (например, SQL) могут включать более изощренные средства обработки транзакций; однако они не доступны на уровне прикладного программирования.
Плоские транзакции - это основные строительные блоки для реализации принципа атомарности; иначе говоря, выделение некоторой последовательности действий в виде плоской транзакции обеспечивает принцип "все или ничего". Во многих прикладных окружениях, в особенности с централизованными обработкой и управлением ресурсами (например, базами данных и файлами), механизм плоских транзакций на протяжении многих лет предоставлял вполне удовлетворительные возможности как для создания, так и для выполнения приложений; простые преобразования состояний системы вполне укладывались в рамки атомарных единиц работы.
По мере того как данные и вычисления становятся все более распределенными, атомарность плоских транзакций становится значительным неудобством. Согласно правилам обработки плоских транзакций, либо должны успешно завершиться все компоненты глобальной транзакции, либо не должна завершиться ни одна из них. Например, если неудачей завершилось только изменение одной удаленной базы данных под управлением некоторого менеджера ресурсов, то и все остальные компоненты должны быть возвращены в состояние, предшествовавшее началу транзакции. Учитывая количество информации, обрабатываемой в крупной или даже средней организации со множеством серверов LAN на ПК и, возможно, с мобильными базами данных, можно предположить, что вероятность отказа хотя бы одного узла весьма высока. Если применяется модель плоских транзакций, то придется заново выполнять все составные части транзакции, что существенно повышает требования к вычислительным ресурсам и отнимает значительную долю пропускной способности системы.
Очевидно, что в наш век сильно распределенных вычислений необходимо каким-то образом проводить декомпозицию плоских транзакций. Модификация модели плоских транзакций, сохраняющая свойство атомарности, но снижающая потребность в повторном выполнении действий (т. е. в "переработках"), включает понятие контрольных точек, которое мы обсудим в следующем разделе.
2.2 Модель вложенных транзакций
Модель вложенных транзакций. Транзакция рассматривается как коллекция взаимосвязанных подзадач или субтранзакций, каждая из которых также может состоять из любого количества субтранзакций. Модель вложенных транзакций была предложена Моссом (Moss) в 1981 году. В этой модели вся транзакция рассматривается как набор связанных подзадач, называемых субтранзакциями, каждая из которых также может состоять из произвольного количества субтранзакций. В данном определении полная транзакция представляет собой древовидную структуру или некоторую иерархию субтранзакций. В модели вложенных транзакций присутствует транзакция верхнего уровня, содержащая некоторое количество дочерних транзакций, каждая из которых, в свою очередь, может включать вложенные транзакции, и т.д. В исходном варианте, предложенном Моссом, выполнять операции в базе данных разрешается только транзакциям самого нижнего уровня (субтранзакциям самого нижнего уровня вложенности). В табл. 2 приведен пример вложенной транзакции Т1, в которой выполняется резервирование места в гостинице, заказ билетов на самолет и аренду автомобиля. Она включает субтранзакции заказа авиабилетов (Т2), бронирования места в отеле (Т5) и найма автомобиля (Т6). Транзакция заказа авиабилетов тоже является вложенной и состоит из двух субтранзакций: заказа билета для перелета из Лондона в Париж (Т3) и бронирования места на соответствующем рейсе из Парижа в Нью-Йорк (Т4). Завершение работы транзакций должно происходить в направлении снизу вверх. Следовательно, транзакции Т3 и Т4 должны закончить свою работу до завершения работы их родительской транзакции T2, а работа транзакции Т2 должна быть завершена до окончания работы ее родительской транзакции Т1. Однако отмена транзакции на некотором уровне не оказывает влияния на выполнение транзакций более высоких уровней. Вместо этого родительской транзакции разрешается выполнить свою собственную операцию восстановления нормальной работы, воспользовавшись одним из следующих допустимых способов.
Повторить выполнение субтранзакции.
Проигнорировать данный отказ. В этом случае субтранзакция рассматривается как несущественная. В нашем примере несущественной можно считать транзакцию найма автомобиля (Т6) - выполнение всей транзакции оформления заказа может быть продолжено и без нее.•Запустить альтернативную транзакцию, называемую резервной субтранзакцией. В нашем примере, если не удастся забронировать место в отеле Хилтон, может быть запущена субтранзакция бронирования места в другом отеле, например Шератон.
Прекратить свое выполнение.
Обновления, выполненные завершенными субтранзакциями промежуточных уровней, должны быть видны только в транзакциях, которые являются по отношению к ним родительскими. Поэтому, когда транзакция Т3 будет завершена, внесенные ею изменения будут видны только в транзакции Т2. Они будут недоступны транзакции Т1 или любой другой транзакции, внешней по отношению к транзакции Т1. Более того, завершение субтранзакции является условно зависимым от нормального завершения или отмены ее родительских транзакций. При использовании данной модели транзакция верхнего уровня обладает всеми четырьмя свойствами (ACID), которыми должны обладать традиционные плоские (не допускающие вложенности) транзакции.
Для модели вложенных транзакций Моссом был предложен и протокол управления параллельным доступом, построенный по принципу жесткой двухфазной блокировки. Субтранзакции родительской транзакции выполняются таким образом, как если бы они были независимыми транзакциями. Субтранзакциям разрешается устанавливать блокировку элемента, если некоторая другая транзакция, уже установившая блокировку, с которой конфликтует данная субтранзакция, является по отношению к ней родительской. Когда субтранзакция завершает работу, установленные ею блокировки наследуются родительской транзакцией. При наследовании блокировки родительская транзакция с большей вероятностью задает исключительный режим блокировки, если и дочерняя, и родительская транзакции устанавливали блокировку одного и того же элемента данных.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
- Базовые функции почтовых клиентов
- Программное обеспечение системы принятия решений адаптивного робота
- Работа со структурами в языке программирования Си++
- Разработка подсистемы учета успеваемости студентов Байкальского государственного университета экономики и права
- Автоматизация учета работ по созданию электронных образовательных ресурсов
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности