Автор работы: Пользователь скрыл имя, 22 Октября 2011 в 14:40, курсовая работа
В этой курсовой работе обсуждаются тенденции и перспективы обработки транзакций в применении к системам информационного управления в целом. Рассматриваются, в частности, следующие вопросы:
принципы обработки транзакций в информационных системах;
последние достижения в мире коммерческих систем обработки транзакций;
языки обработки транзакций;
стандарты; черты систем обработки транзакций следующего поколения.
Введение….………………………………………………………………………………..3
Основная часть…………………………………………………………………………….5
1 Основы обработки транзакций …………….…………………………………..……....5
1.1 Структура транзакций ………….…………….……………..…………..……………5
1.2 Параллельное выполнение транзакций ..………….…….………………..……..….7
1.3 Транзакции и восстановление данных ..………….……………………..………..…8
2 Принципы и модели обработки транзакций ………..….…………..............................9
2.1 Плоские транзакции ……….……………..…………………………………......……9
2.2 Контрольные точки ……….………………..…….....................................................11
2.3 Многозвенные транзакции …………………..…………………………………......13
2.4 Вложенные транзакции ..……………………………..….………………….…..…..14
3 Классификация систем обработки транзакций.…………………...……………..…..17
3.1 Encino и DCE Список использованных источников…………..………………..…17
3.2 Языки транзакций ….…………………….………………………………….…..… 19
3.3 Мониторы обработки транзакций третьего поколения….………......………..…..20
3.4 X/Open DTP….…...…..…………..…………….…………………….………………22
Заключение…………………...………………………………………………….….……24
Глоссарий………………………………………...………….…….………...……….…..26
Список использованных источников……….......…….……………...……….…….…..29
Приложения……………...…...……………...……………..……………………….
По мере того как данные и вычисления становятся все более распределенными, атомарность плоских транзакций становится значительным неудобством. Согласно правилам обработки плоских транзакций, либо должны успешно завершиться все компоненты глобальной транзакции, либо не должна завершиться ни одна из них. Например, если неудачей завершилось только изменение одной удаленной базы данных под управлением некоторого менеджера ресурсов, то и все остальные компоненты должны быть возвращены в состояние, предшествовавшее началу транзакции. Учитывая количество информации, обрабатываемой в крупной или даже средней организации со множеством серверов LAN на ПК и, возможно, с мобильными базами данных, можно предположить, что вероятность отказа хотя бы одного узла весьма высока. Если применяется модель плоских транзакций, то придется заново выполнять все составные части транзакции, что существенно повышает требования к вычислительным ресурсам и отнимает значительную долю пропускной способности системы.
Очевидно,
что в наш век сильно распределенных
вычислений необходимо каким-то образом
проводить декомпозицию плоских
транзакций. Модификация модели плоских
транзакций, сохраняющая свойство атомарности,
но снижающая потребность в повторном
выполнении действий (т. е. в "переработках"),
включает понятие контрольных точек, которое
мы обсудим в следующем разделе.
2.2
Контрольные точки
При наступлении определенного события (например, количество страниц в dirty-списке превысило определенный порог, или количество свободных страниц в буфере уменьшилось и достигло критического значения) система принимает контрольную точку7. Принятие контрольной точки включает выталкивание во внешнюю память содержимого буферов базы данных и специальную физическую запись контрольной точки, которая представляет собой список всех осуществляемых в данный момент транзакций. Контрольные точки устанавливаются в прикладной программе для того, чтобы отметить моменты, начиная с которых можно продолжить вычисления в случае возникновения проблем. В идеале контрольные точки должны соответствовать частично согласованным состояниям (например, после построения вспомогательной таблицы в программе, которая затем будет использоваться для вычислений с участием еще какой-либо таблицы).
По достижении очередной контрольной точки в транзакции создается новое атомарное действие, которое запускается на выполнение. Только последнее атомарное действие всей последовательности может выполнить фиксацию (COMMIT WORK) транзакции; оператор COMMIT WORK передается всем предыдущим атомарным действиям, пока все они не будут зафиксированы. В отличие от модели многозвенных транзакций, которые мы рассмотрим в следующем разделе, контрольная точка не приводит к необратимой фиксации, выполненной до этого момента работы.
Прерывания (ROLL BACK) или откаты, транзакции могут инициироваться из любого атомарного действия, а не только из последнего; хотя в любой заданный момент времени прерывание может инициировать только действие, запущенное последним. (Это значит, что если для какого-то атомарного действия была достигнута контрольная точка, то для этого действия уже не может быть в дальнейшем принято решение об откате.) Откат может быть произведен до любой из предыдущих контрольных точек, поэтому менеджер обработки транзакций должен воспринимать параметр, указывающий, до какой именно контрольной точки нужно произвести откат (в идеале логика приложения должна предусматривать определение контрольной точки, до которой в случае неудачи следует откатить выполнение).8
Проводились
исследовательские работы по изучению
применимости так называемых устойчивых
(persistent) контрольных точек, которые
фиксируются в дисковой или другой долговременной
памяти, для того чтобы результаты выполнения
были доступны после системных крахов.
Однако Грей и Рейтер отмечают, что "здесь
не видно пока никакого решения, которое
можно было бы принять безоговорочно".
Это вряд ли следует считать большой проблемой,
поскольку две новые модели транзакций
- вложенные и многозвенные транзакции
- предоставляют схожие возможности притом,
что формальные определения этих парадигм
значительно лучше проработаны и общеприняты.
Рассмотрим вначале многозвенные транзакции.
2.3
Многозвенные транзакции
Модель многозвенных транзакций концептуально подобна модели контрольных точек, но она предполагает фиксацию части работы, сделанной до некоторого момента; возможность отката зафиксированных действий исключается.
Приложение тем не менее остается в состоянии транзакции; т. е. при этом не происходит инициации очередной транзакции, ее завершения, инициации следующей и ее завершения и т. д. В рамках многозвенной транзакции сохраняются все необходимые элементы контекста выполнения (курсоры баз данных, открытые файлы и т. д.), хотя ресурсы, ставшие ненужными, можно освобождать.
Модель многозвенных транзакций, (смотри приложение А), включает оператор CHAIN WORK - неделимую комбинацию операторов COMMIT WORK и BEGIN WORK, - которая неравноценна последовательному выполнению операторов COMMIT WORK и BEGIN WORK по отдельности.
При выполнении этих операторов по отдельности контекст пропадает; некоторая другая транзакция может "вклиниться" и изменить значения в базе данных, которые нужны для выполнения следующего "звена" многозвенной транзакции, прежде чем это звено начнет выполняться.
Таким
образом, многозвенные транзакции концептуально
эквивалентны транзакциям с контрольными
точками с той разницей, что
откат может производиться
Обе
модели транзакций - многозвенные и
с контрольными точками - позволяют
описывать последовательности действий;
различия касаются лишь возможностей
отката и устойчивости выполненных
до заданной точки действий. Последняя
модель, которую мы обсудим, - это модель,
которая позволяет описывать не последовательности,
а иерархии субтранзакций.
2.4
Вложенные транзакции
Модель вложенных транзакций включает понятие головной транзакции9, которая управляет выполнением всей иерархии. В рамках иерархии могут присутствовать транзакции разных уровней вложенности. Концевые узлы иерархии представляют собой плоские транзакции. Отдельные ветви иерархии могут иметь разную длину, т. е. концевые транзакции могут находиться на разном "расстоянии" от головной транзакции (корня дерева транзакций).
Правила и модели вложенных транзакций были впервые разработаны Элиотом Моссом в 1981 году. В модели Мосса реальные действия могли производиться только концевыми субтранзакциями, но Грей и Реутер отмечают, что это правило ограничивает функции вложения транзакций и, что его отмена дает дополнительные возможности распараллеливания действий над разделяемыми объектами при введении абстракции многоуровневых объектов.Мосс сформулировал три правила для управления вложенными транзакциями:Правило фиксации. Выполнение оператора COMMIT WORK в некоторой субтранзакции делает ее результаты видимыми только для родительской транзакции. Фактическая фиксация субтранзакции происходит только после фиксации всех ее предков вплоть до головной транзакции. Правило прерывания (отката). Если субтранзакция некоторого уровня, включая головную, откатывается, то же самое должно быть сделано для всех ее потомков, независимо от статуса фиксации любой из них на локальном уровне. Правило видимости. Все действия, выполненные в рамках субтранзакции, при ее фиксации становятся видимыми родительской транзакции. Все объекты, захваченные некоторой транзакцией, доступны ее потомкам. Соседние транзакции (относящиеся к одному уровню и имеющие общего родителя) "не видны" друг другу ни в том, ни в другом смысле, что позволяет выполнять их параллельно.
Из свойств ACID для субтранзакций выполняются свойства атомарности, согласованности и изолированности. Но поскольку COMMIT WORK для субтранзакции на самом деле не означает ее фиксации до фиксации всей транзакции, то свойство долговечности не выполняется, поэтому субтранзакции не эквивалентны плоским транзакциям. Например. Если транзакция Б запущена внутри транзакции А, и для транзакции Б подана команда COMMIT WORK, то фиксация данных транзакции Б является условной, т.к. внешняя транзакция А может откатиться. Результаты работы внутренней транзакции Б будут окончательно зафиксированы только если будет зафиксирована внешняя транзакция А.
Как и другие модели, вложенные транзакции имеют вариации, (смотри приложение Б), в том числе модель многоуровневых (multilevel) транзакций, где субтранзакция ST1 "предварительно фиксирует" свои результаты. При этом для нее предусмотрена компенсирующая субтранзакция, которая может отменить выполненные ST1 действия, если происходит прерывание всей транзакции в целом. Компенсирующие транзакции позволяют отменять результаты почти в реальном времени; в их отсутствие приходится применять сценарии восстановления с анализом времени произведенных изменений, для чего используются дорогостоящие оперативные ресурсы, обеспечивающие возврат базы данных в согласованное состояние (например, с применением журналов или путем "сопоставления фрагментов" головоломки-мозаики, для того чтобы определить, каким должно быть согласованное состояние базы данных).
Хотя можно представить себе приложения и системы, в которых многозвенные и вложенные транзакции были бы полезны, однако лишь в начале 90-х годов в коммерческих приложениях на смену плоским транзакциям начали приходить другие. Интересно, впрочем, отметить, что при изучении транзакций SQL можно обнаружить некоторые признаки "псевдовложенности", по крайней мере в способах обработки операторов (это в настоящее время недоступно разработчикам приложений; однако принятый в настоящее время стандарт SQL3 содержит контрольные точки и, вероятно, в него войдут операторы управления многозвенными транзакциями).
Каждый
оператор внутри транзакции, которая
представляет собой, например, последовательность
операторов UPDATE и DELETE, может завершиться
успешно или неуспешно. Даже если один
или несколько операторов завершаются
неудачей, транзакция в целом может продолжаться,
если в ее логике для этих случаев явно
не предусмотрено прерывание с откатом
в начальное состояние. Все успешно завершившиеся
до прерывания операторы (которые в этой
модели можно представлять как субтранзакции)
будут отменены, если происходит откат
всей транзакции. Разработчикам приложений
приходилось как-то компенсировать недоступность
имеющихся в SQL свойств псевдовложенности,
применяя различные ухищрения для построения
архитектур транзакций, более соответствующих
их потребностям, чем простейшие плоские
транзакции. Когда на рынке утвердится
стандарт SQL3, и начнут появляться совместимые
с ним продукты, разработчики приложений
на основе SQL СУБД смогут непосредственно
пользоваться преимуществами новых моделей
транзакций.
3.1 Encino и DCE
С появлением множества стандартизированных систем обработки транзакций нового поколения полезным представляется проведение их классификации с точки зрения спектра предоставляемых ими функций. Подобную классификацию, включающую пять измерений, предложили Абрахам Лефф и Калтон Пу из Колумбийского университета:
M - множество машин;
P - множество процессов;
H - степень неоднородности машин и программного обеспечения;
D - множество логических данных;
S - множество узлов.
Эта
классификация характеризует
Монитор обработки транзакций Encina10 корпорации Transarc можно рассматривать как коммерческий продукт второго поколения, однако более развитый, отражающий новейшие достижения в этой области. Encina включает модель вложенных транзакций и расширяет возможности среды DCE (Distributed Computing Environment), предложенной организацией OSF (Open Software Foundation).
Прообразом Encina был прототип системы обработки транзакций Camelot, разработанный в университете Карнеги-Меллон в Питтсбурге. Технология, лежащая в основе Camelot, и применяемый в этой системе язык программирования Avalon описаны в работе Camelot and Avalon: A Distributed Transaction Processing Facility. Camelot считается "первой реализацией вложенных транзакций в системе обработки транзакций" (в отличие от псевдовложенности, которую мы обсуждали в предыдущем разделе, или от внутрисистемной вложенности, недоступной для разработчиков приложений).
Архитектура
соответствует степени