Автор работы: Пользователь скрыл имя, 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
Приложения……………...…...……………...……………..……………………….
Введение….……………………………………………………
Основная часть…………………………………………
1 Основы обработки транзакций …………….…………………………………..……....5
1.1 Структура транзакций ………….…………….……………..…………..……………5
1.2 Параллельное выполнение транзакций ..………….…….………………..……..….7
1.3 Транзакции и восстановление данных ..………….……………………..………..…8
2 Принципы и модели
обработки транзакций ………..….…………...................
2.1 Плоские транзакции
……….……………..…………………………………......
2.2 Контрольные
точки ……….………………..……................
2.3 Многозвенные транзакции …………………..…………………………………......13
2.4 Вложенные транзакции
..……………………………..….………………….…..….
3 Классификация
систем обработки транзакций.…………………...……………..….
3.1 Encino и DCE Список использованных источников…………..………………..…17
3.2 Языки транзакций ….…………………….………………………………….…..… 19
3.3 Мониторы обработки транзакций третьего поколения….………......………..…..20
3.4 X/Open
DTP….…...…..…………..…………….………………
Заключение…………………...…………………………
Глоссарий………………………………………...………
Список
использованных источников……….......…….……………..
Приложения……………...…...……………...
Понятие транзакции не входит в реляционную модель данных, т.к. транзакции рассматриваются не только в реляционных СУБД, но и в СУБД других типов, а также и в других типах информационных систем.
Транзакция – это неделимая, с точки зрения воздействия на СУБД, последовательность операций манипулирования данными, это последовательность операторов манипулирования данными, выполняющаяся как единое целое и переводящая базу данных из одного целостного состояния в другое целостное состояние. Для пользователя, транзакция выполняется по принципу "все или ничего", т.е. либо транзакция выполняется целиком и переводит базу данных из одного целостного состояния в другое целостное состояние, либо, если по каким-либо причинам, одно из действий транзакции невыполнимо, или произошло какое-либо нарушение работы системы, база данных возвращается в исходное состояние, которое было до начала транзакции. С этой точки зрения, транзакции важны как в многопользовательских, так и в однопользовательских системах. Транзакция может состоять из нескольких операций. Однако, с точки зрения пользователя, эти операции представляют собой единое задание. С точки зрения СУБД каждая транзакция переводит базу данных из одного непротиворечивого состояния в другое. СУБД обеспечивает непротиворечивость базы данных даже в случае возникновения сбоя. Кроме того, СУБД гарантирует, что после завершения транзакции все внесенные изменения будут надежно сохранены в базе данных целиком и полностью (без необходимости выполнения другой транзакции для устранения недостатков, возникших при выполнении первой транзакции). Если по какой-либо причине транзакция не будет завершена, СУБД гарантирует, что все внесенные изменения будут отменены.
В
этой курсовой работе обсуждаются тенденции
и перспективы обработки
принципы обработки транзакций в информационных системах;
последние достижения в мире коммерческих систем обработки транзакций;
языки обработки транзакций;
стандарты; черты систем обработки транзакций следующего поколения.
1.1Структура транзакций
Можно
рассматривать обработку
В области обработки транзакций имеет место следующая классификация1:
Первое поколение. Единые монолитные системы, взаимодействующие с пользователем посредством простейших терминалов.
Второе поколение. Поддержка продуктов многих поставщиков, интеллектуальные клиентские системы, поддержка множества систем баз данных, как правило, при помощи протоколов двухфазовой фиксации (второе поколение отражает нынешнее положение дел в этой области).
Третье поколение. Зарождающееся поколение систем, более адекватно, чем это возможно сегодня, отражающее потребности бизнеса.
Хотя понятие "обработка транзакций" применимо практически к любой компьютерной среде, в особенности в мире бизнеса, однако традиционно использование мониторов обработки транзакций ограничивалось окружениями крупномасштабных центров обработки данных, функционирующих на базе мэйнфреймов, в таких прикладных областях, как резервирование авиабилетов или международные банковские операции. За последние годы, отчасти за счет того, что корпоративные информационные системы все более приобретают черты распределенности и неоднородности, мониторы обработки транзакций стали применяться и во многих других вертикальных приложениях (здравоохранение, страхование, торговля)2.
Структура каждой транзакции строится на основании имеющейся спецификации требований пользователей. Для создания этой спецификации разработано множество методов, включающих специальную систему для определения нужных пользователям транзакций. Подобные транзакции могут представлять собой сложные операций, которые в результате анализа раскладываются на несколько более простых операций, каждая из которых представляет собой отдельную транзакцию.
Любая транзакция всегда должна переводить базу данных из одного согласованного состояния в другое, хотя допускается, что согласованность состояния базы будет нарушаться в ходе выполнения транзакции. Любая транзакция завершается одним из двух возможных способов. В случае успешного завершения результаты транзакции фиксируются (commit) в базе данных, последняя переходит в новое согласованное состояние. Если выполнение транзакции не увенчалось успехом, она отменяется. В этом случае в базе данных должно быть восстановлено то согласованное состояние, в котором она находилась до начала данной транзакции. Этот процесс называется откатом (roll back) транзакции. Зафиксированная транзакция не может быть отменена. Если оказывается, что зафиксированная транзакция была ошибочной, потребуется выполнить другую транзакцию, отменяющую действия, выполненные первой транзакцией. Эту транзакцию называют компенсирующей3. Следует отметить, что отмененная транзакция может быть еще раз запущена позже и в зависимости от причин предыдущего отказа вполне успешно завершена и зафиксирована в базе данных.
Никакая
СУБД не обладает внутренней возможностью
установить, какие именно изменения
должны быть восприняты как единое
целое, образующее одну логическую транзакцию.
Следовательно, должен существовать метод,
позволяющий указывать границы каждой
из транзакций извне, со стороны пользователя.
В большинстве языков манипулирования
данными для указания границ отдельных
транзакций используются операторы BEGIN
TRANSACTION, COMMIT и ROLLBACK (или их эквиваленты).
Если эти ограничители не были использованы,
вся выполняемая программа расценивается
как единая транзакция. СУБД автоматически
выполнит команду COMMIT при нормальном завершении
этой программы. Аналогично в случае ее
аварийного завершения в базе данных автоматически
будет выполнена команда ROLLBACK.
1.2
Параллельное
выполнение транзакций
Если
с БД работают одновременно несколько
пользователей, то обработка транзакций
должна рассматриваться с новой
точки зрения. В этом случае СУБД
должна не только корректно выполнять
индивидуальные транзакции и восстанавливать
согласованное состояние БД после сбоев,
но она призвана обеспечить корректную
параллельную работу всех пользователей
над одними и теми же данными. По теории
каждый пользователь и каждая транзакция
должны обладать свойством изолированности,
то есть они должны выполняться так, как
если бы только один пользователь работал
с БД. Простейший и очевидный способ обеспечить
такую иллюзию у пользователя состоит
в том, чтобы все поступающие транзакции
выстраивать в единую очередь и выполнять
строго по очереди. Такой способ не годится
по очевидным причинам - теряется преимущество
параллельной работы. Таким образом, транзакции
необходимо выполнять одновременно, но
так, чтобы результат был бы такой же, как
если бы транзакции выполнялись по очереди.
Трудность состоит в том, что если не предпринимать
никаких специальных мер, то данные измененные
одним пользователем могут быть изменены
транзакцией другого пользователя раньше,
чем закончится транзакция первого пользователя.
В результате, в конце транзакции первый
пользователь увидит не результаты своей
работы, а неизвестно что. И средства современных
СУБД позволяют изолировать пользователей
друг от друга именно таким образом. Одним
из способов (не единственным) обеспечить
независимую параллельную работу нескольких
транзакций является метод блокировок.
1.3
Транзакции и восстановление
данных
В данной главе изучаются возможности восстановления данных после сбоев системы, т.е. долговечность транзакций.
Главное требование долговечности данных транзакций состоит в том, что данные зафиксированных транзакций должны сохраняться в системе, даже если в следующий момент произойдет сбой системы. Казалось бы, самый простой способ обеспечить такую гарантию - это во время каждой операции сразу записывать все изменения на дисковые носители. Такой способ не является удовлетворительным, т.к. имеется существенное различие в скорости работы с оперативной и с внешней памятью. Единственный способ достичь приемлемой скорости работы состоит в буферизации страниц базы данных в оперативной памяти. Это означает, что данные попадают во внешнюю долговременную память не сразу после внесения изменений, а через некоторое (достаточно большое) время. Тем не менее, что-что во внешней памяти должно оставаться, т.к. иначе неоткуда получить информацию для восстановления.
Требование атомарности транзакций утверждает, что не законченные или откатившиеся транзакции не должны оставлять следов в базе данных. Это означает, что данные должны храниться в базе данных с избыточностью, позволяющей иметь информацию, по которой восстанавливается состояние базы данных на момент начала неудачной транзакции. Такую избыточность обычно обеспечивает журнал транзакций4. Журнал транзакций содержит детали всех операций модификации данных в базе данных, в частности, старое и новое значение модифицированного объекта, системный номер транзакции, модифицировавшей объект и другая информация.
2.1 Плоские транзакции
Транзакция обладает четырьмя важными свойствами, известными как свойства ACID: (Atomicity) Атомарность. Транзакция выполняется, как атомарная операция либо выполняется вся транзакция целиком, либо она целиком не выполняется. (Consistency) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.
(Isolation) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).
(Durability) Долговечность. Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.
Транзакция обычно начинается автоматически с момента присоединения пользователя к СУБД и продолжается до тех пор, пока не произойдет одно из следующих событий:
Подана команда COMMIT WORK (зафиксировать транзакцию).
Подана команда ROLLBACK WORK (откатить транзакцию).
Произошло отсоединение пользователя от СУБД.
Произошел сбой системы.
Команда COMMIT WORK завершает текущую транзакцию и автоматически начинает новую транзакцию. При этом гарантируется, что результаты работы завершенной транзакции фиксируются, т.е. сохраняются в базе данных. Команда ROLLBACK WORK приводит к тому, что все изменения, сделанные текущей транзакцией откатываются, т.е. отменяются так, как будто их вообще не было. При этом автоматически начинается новая транзакция.
При сбое системы происходят более сложные процессы. Кратко суть их сводится к тому, что при последующем запуске системы происходит анализ выполнявшихся до момента сбоя транзакций. Те транзакции, для которых была подана команда COMMIT WORK, но результаты работы которых не были занесены в базу данных выполняются снова (накатываются). Те транзакции, для которых не была подана команда COMMIT WORK, откатываются5.При отсоединении пользователя от СУБД происходит автоматическая фиксация транзакций.
Существуют многочисленные модели транзакций, поддерживающих эти принципы. Они варьируются от простейших, таких как "плоские" транзакции, до более изощренных, таких как вложенные или многозвенные. Рассмотрим эти модели более подробно, поскольку именно сложные модели в значительной мере пределяют особенности обработки транзакций в коммерческих информационных системах будущего.
Модели плоских транзакций соответствует один управляющий слой, которому подчинено произвольное число элементарных действий. В современных информационных системах - это, как правило, единственная поддерживаемая на прикладном уровне модель транзакций, хотя внутренние компоненты системы (например, SQL) могут включать более изощренные средства обработки транзакций; однако они не доступны на уровне прикладного программирования.
Плоские транзакции - это основные строительные блоки для реализации принципа атомарности; иначе говоря, выделение некоторой последовательности действий в виде плоской транзакции обеспечивает принцип "все или ничего"6.
Во многих прикладных окружениях, в особенности с централизованными обработкой и управлением ресурсами (например, базами данных и файлами), механизм плоских транзакций на протяжении многих лет предоставлял вполне удовлетворительные возможности как для создания, так и для выполнения приложений. Простые преобразования состояний системы вполне укладывались в рамки атомарных единиц работы.