АГЕНСТВО ПО ОБРАЗОВАНИЮФедеральное государственноеобразовательное учреждение высшего профессионального образования«Чувашский государственныйуниверситет имени И.Н.Ульянова»
Алатырский филиал
Кафедра Высшей математики и информационных технологий
КУРСОВАЯ РАБОТА
по дисциплине «Базы данных и СУБД»
на тему: «Модели транзакций»
Выполнил: студент
группы АФТ 61-05
Краснов Д.П.
Руководитель:
ст. преп. Алякина Л.А.
2010
ОГЛАВЛЕНИЕ
Введение
ГЛАВА 1. Общие сведения о транзакциях
1.1 Поддержка транзакций
1.2 Свойства транзакций
ГЛАВА 2.Модели транзакций
2.1 Плоские транзакции
2.2 Модель вложенных транзакций
2.3 Хроники
2.4 Модель многоуровневых транзакций
2.5 Модель рабочих потоков
2.6 Классификация систем обработкитранзакций
Заключение
Литература
ВВЕДЕНИЕ
В этой курсовой работе обсуждаются тенденции и перспективыобработки транзакций в применении к системам информационного управления в целом.Рассматриваются, в частности, следующие вопросы:
. поддержка транзакций;
. свойства транзакций;
. модели транзакций;
. черты систем обработки транзакций следующего поколения.
ГЛАВА 1 Общие сведения о транзакциях
1.1Поддержка транзакций
Транзакция — действие или ряд действий, выполняемых однимпользователем или прикладной программой, которые осуществляют чтение илиизменение содержимого базы данных.
Транзакция является логической единицей работы, выполняемой в базеданных. Она может быть представлена отдельной программой, частью программы илидаже отдельной командой (например, командой INSERT или UPDATE языка SQL) ивключать произвольное количество операций, выполняемых в базе данных. С точкизрения администратора базы данных эксплуатация любого приложения можетрасцениваться как ряд транзакций, в промежутках между которыми выполняетсяобработка данных, осуществляемая вне среды базы данных.
Простейшей транзакцией, выполняемой в подобной базе данных, можетбыть корректировка зарплаты определенного работника, указанного его табельнымномером х. Обобщенно подобная транзакция может быть записана, как показано на(рис. 1).
/>
(рис. 1)
модель транзакция хроника
На (рис. 1) используется обозначение read (staffNo = x, salary),указывающее, что требуется считать элемент данных salary для записи, в которойключевое значение равно х. В данном примере транзакция состоит из двухопераций, выполняемых в базе данных (read и write), и одной операции,выполняемой вне базы данных (salary = salary * 1.1).
Любая транзакция завершается одним из двух возможных способов. Вслучае успешного завершения результаты транзакции фиксируются (commit) в базеданных, и последняя переходит в новое согласованное состояние. Если выполнениетранзакции не увенчалось успехом, она отменяется. В этом случае в базе данныхдолжно быть восстановлено то согласованное состояние, в котором она находиласьдо начала данной транзакции. Этот процесс называется откатом (roll back), илиотменой транзакции. Зафиксированная транзакция не может быть отменена. Еслиокажется, что зафиксированная транзакция была ошибочной, потребуется выполнитьдругую транзакцию, отменяющую действия, выполненные первой транзакцией
Такая транзакция называется компенсирующей. Но аварийнозавершившаяся транзакция, для которой выполнен откат, может быть вызвана навыполнение позже и, в зависимости от причин предыдущего отказа, вполне успешнозавершена и зафиксирована в базе данных. Ни в одной СУБД не может бытьпредусмотрен априорный способ определения того, какие именно операцииобновления могут быть сгруппированы для формирования единой логическойтранзакции. Поэтому должен применяться метод, позволяющий указывать границыкаждой из транзакций извне, со стороны пользователя. В большинстве языковманипулирования данными для указания границ отдельных транзакций используются операторыBEGIN TRANSACTION, COMMIT и ROLLBACK (или их эквиваленты). Если эти ограничителине были использованы, как единая транзакция обычно рассматривается всявыполняемая программа. СУБД автоматически выполнит команду COMMIT принормальном завершении этой программы. Аналогично, в случае аварийногозавершения программы в базе данных автоматически будет выполнена командаROLLBACK.
Порядок выполнения операций транзакции принято обозначать спомощью диаграммы переходов. Пример такой диаграммы приведен на (рис. 2).Следует отметить, что на этой диаграмме, кроме очевидных состояний ACTIVE,COMMITTED и ABORTED имеются еще два состояния, описанные ниже.
/>
(рис. 2.)
PARTIALLY COMMITTED. Это состояние возникает после выполненияпоследнего оператора. В этот момент может быть обнаружено, что в результатевыполнения транзакции нарушены правила упорядочения или ограниченияцелостности, поэтому транзакцию необходимо завершить аварийно. Еще один вариантразвития событий состоит в том, что в системе происходит отказ и все данные,обновленные в транзакции, невозможно успешно записать во внешнюю память. Вподобных случаях транзакция должна перейти в состояние FAILED и завершитьсяаварийно. А если транзакция выполнена успешно, то все результаты обновлениямогут быть надежно записаны во внешней памяти и транзакция может перейти всостояние COMMITTED.
FAILED. Такое состояние возникает, если транзакция не может бытьзафиксирована или произошло ее аварийное завершение, когда она находилась всостоянии ACTIVE, Это аварийное завершение могло возникнуть из-за отменытранзакции пользователем или в результате действия протокола управленияпараллельным доступом вызвавшего аварийное завершение транзакции дляобеспечения упорядочиваемости операций базы данных.
1.2 Свойства транзакций
Существуют определенные свойства, которыми должна обладать любаяиз транзакций. Ниже представлены четыре основных свойства транзакций, которыепринято обозначать аббревиатурой ACID (Atomicity, Consistency, Isolation,Durability — неразрывность, согласованность, изолированность, устойчивость),состоящей из первых букв названий этих свойств.
Неразрывность. Это свойство, для описания которого применимовыражение «все или ничего». Любая транзакция представляет собойнеделимую единицу работы, которая может быть либо выполнена вся целиком, либоне выполнена вообще. За обеспечение неразрывности отвечает подсистемавосстановления СУБД.
Согласованность. Каждая транзакция должна переводить базу данныхиз одного согласованного состояния в другое. Ответственность за обеспечениесогласованности возлагается и на СУБД, и на разработчиков приложений. В СУБДсогласованность может обеспечиваться путем выполнения всех ограничений,заданных в схеме базы данных, таких как ограничения целостности и ограниченияпредметной области. Но подобное условие является недостаточным для обеспечениясогласованности. Например, предположим, что некоторая транзакция предназначенадля перевода денежных средств с одного банковского счета на другой, нопрограммист допустил ошибку в логике транзакции и предусмотрел снятие денег справильного счета, а зачисление — на неправильный счет. В этом случае базаданных переходит в несогласованное состояние, несмотря на наличие правильнозаданных ограничений. Тем не менее ответственность за устранение такой несогласованностине может быть возложено на СУБД, поскольку в ней отсутствуют какие-либосредства обнаружения подобных логических ошибок.
Изолированность. Все транзакции выполняются независимо друг отдруга. Иными словами, промежуточные результаты незавершенной транзакции недолжны быть доступны для других транзакций. За обеспечение изолированностиотвечает подсистема управления параллельным выполнением.
Устойчивость. Результаты успешно завершенной (зафиксированной)транзакции должны храниться в базе данных постоянно и не должны быть утеряны врезультате последующих сбоев. За обеспечение устойчивости отвечает подсистемавосстановления.
ГЛАВА 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), которыми должны обладать традиционные плоские(не допускающие вложенности) транзакции.
Для модели вложенных транзакций Моссом был предложен и протоколуправления параллельным доступом, построенный по принципу жесткой двухфазнойблокировки. Субтранзакции родительской транзакции выполняются таким образом,как если бы они были независимыми транзакциями. Субтранзакциям разрешаетсяустанавливать блокировку элемента, если некоторая другая транзакция, ужеустановившая блокировку, с которой конфликтует данная субтранзакция, являетсяпо отношению к ней родительской. Когда субтранзакция завершает работу,установленные ею блокировки наследуются родительской транзакцией. Принаследовании блокировки родительская транзакция с большей вероятностью задаетисключительный режим блокировки, если и дочерняя, и родительская транзакцииустанавливали блокировку одного и того же элемента данных.
Ниже перечислены основные преимущества модели вложенныхтранзакций.
Модульность. Транзакция может быть разложена на произвольноеколичество субтранзакций, что способствует повышению степени распараллеливанияобработки и расширяет возможности восстановления.
Создание дополнительной степени детализации в механизмахуправления параллельным выполнением и восстановлением. Введение нового уровнясубтранзакций, помимо уровня основных транзакций.
Достижение распараллеливания обработки в пределах транзакции. Субтранзакциимогут выполняться в параллельном режиме.
Возможность управления восстановлением в пределах транзакции. Незафиксированныесубтранзакции могут завершаться аварийно, и для них может выполняться откат безкаких-либо побочных эффектов для других субтранзакций.
Табл. 2. Пример вложенной транзакции
/>
2.3Хроники
Хроника. Последовательность (плоских) транзакций, которая можетпередаваться с другими транзакциями.
Концепция хроник (sagas), которая была введена Гарсия-Молина(Garsia-Molina) и Салемом (Salem) в 1987 году, построена на использованиипонятия компенсирующих транзакций. СУБД гарантирует, что либо все входящие вхронику транзакции будут успешно завершены, либо будут запущены компенсирующие транзакции,необходимые для устранения достигнутых частичных результатов. В отличие отметода вложенных транзакций, допускающего произвольный уровень вложения, методхроник разрешает наличие единственного уровня вложения. Более того, для каждойвыделенной субтранзакции должна существовать соответствующая компенсирующаятранзакция, которая будет семантически правильно аннулировать результаты,достигаемые с помощью данной субтранзакции. Таким образом, если имеетсяхроника, состоящая из последовательности n транзакций Т1, Т2,..., Тn с соответствующим набором компенсирующих транзакций С1,C2, ..., Cn, то окончательный результат выполнения хроники будет определятьсяодной из приведенных ниже последовательностей транзакций.
1.T1, Т2, …, Tn — если вся транзакция былауспешно завершена.
2.T1, T2, ..., Ti, Сi-1, ..., C2, С1 — есливыполнение субтранзакции Тi было аварийно прекращено.
Поэтому, если обратиться к примеру с резервированием места вгостинице, описанному выше, то при подготовке соответствующей хроники потребуетсяизменить структуру транзакции с целью удаления вложенной транзакциибронирования авиабилетов: T3, T4, T5, T6.
Вошедшие в хронику субтранзакции представляют собой лист-узлытранзакции верхнего уровня, приведенной в табл. 2. Не составляет особого трудаподготовить и компенсирующие субтранзакции, предназначенные для отмены заказана авиабилеты, резервирования номера в гостинице и проката автомобиля.
По сравнению с обычными моделями плоских транзакций в хроникахсмягчены требования к изолированности отдельных транзакций, поскольку в нихдопускается выборка промежуточных результатов других параллельно выполняемыхтранзакций еще до их завершения. Применение хроник оказывается достаточноэффективным в тех случаях, когда входящие в нее субтранзакции относительнонезависимы и могут быть подготовлены необходимые компенсирующие транзакции, какв рассматриваемом примере. Но в некоторых случаях предварительное определениекомпенсирующей транзакции может оказаться затруднительным. В этом случае можетпотребоваться, чтобы было установлено взаимодействие между пользователем и СУБДдля определения приемлемой степени компенсации. В других случаях возможностьопределения компенсирующей транзакции отсутствует. Например, может оказатьсяневозможным подготовить компенсирующую транзакцию для транзакции по получениюналичных денег из автоматического кассового аппарата.
2.4 Модель многоуровневых транзакций
Модель вложенных транзакций, описанная в разделе 2.1, требует,чтобы процесс фиксации субтранзакций выполнялся снизу вверх, в направлениитранзакции верхнего уровня. Поэтому данную модель принято называть модельюзакрытых вложенных транзакций. Это позволяет подчеркнуть, что свойствонеразрывности в транзакциях сохраняется до самого верхнего уровня. Впротивоположность этому, существует и модель открытых вложенных транзакций, вкоторой неразрывность нарушается и частичные результаты выполнениясубтранзакций могут быть доступны вне транзакции. Примером модели открытыхвложенных транзакций является модель хроник, рассматриваемая в предыдущемразделе.
Одним из вариантов модели открытых вложенных транзакций являетсямодель многоуровневых транзакции, в которой дерево субтранзакций являетсясбалансированным. Узлы одного и того же уровня дерева соответствуют операциямодного и того же уровня абстракции в СУБД. Ребра древовидного графа моделимногоуровневых транзакций моделируют реализацию операции посредствомпоследовательности операций более низкого уровня. Уровни n-уровневой транзакции обозначаются как L0,L1, …, Ln, где L0— самый низкий уровень дерева, a Ln — корень дерева. Методыобработки обычных плоских транзакций гарантируют, что на самом низком уровне (L0)конфликты будут отсутствовать. Основная концепция модели многоуровневыхтранзакций состоит в том, что две операции на уровне Li могут не конфликтовать,даже если их реализации на следующем, более низком уровне Li-1 конфликтуют. Поскольку в ней используется информация о конфликтахна конкретном уровне, модель многоуровневых транзакций позволяет достичь болеевысокой степени параллельности по сравнению с моделями обработки плоскихтранзакций.
2.5 Модели рабочих потоков
Все обсуждавшиеся в этом разделе модели были разработаны с цельюпреодоления ограничений, накладываемых моделью плоских транзакций, поэтому неприемлемых для транзакций большой продолжительности. Однако было отмечено, чтовсе эти модели по-прежнему не обладают мощностью, необходимой дляудовлетворения потребностей деловых процессов определенных видов. Поэтому былипредложены более сложные модели, представляющие собой комбинации моделейоткрытых и вложенных транзакций. Однако, поскольку эти модели не в полной мереотвечают требованиям ACID плоских транзакций, для них используется болееподходящее название — модели рабочих потоков.
Рабочий поток представляет собой некоторый вид деятельности,предусматривающий координированное выполнение множества заданий, осуществляемыхразличными обрабатывающими субъектами, которые могут представлять собой людейили некоторые программные комплексы (например, СУБД, прикладные программы илислужбы электронной почты). Рассмотрим пример с подготовкой соглашений о сдачеобъектов недвижимости в аренду, который можно найти в учебном проектеDreamHome. Клиент, желающий арендовать некоторый объект недвижимости,устанавливает контакт с соответствующим сотрудником компании, отвечающим заэтот объект недвижимости. Этот сотрудник обращается к контролеру компании, вобязанности которого входит проверка кредитоспособности клиента и определениетого, может ли компания ему доверять. С этой целью контролер используетсоответствующие источники информации, например бюро проверкикредитоспособности. Собрав интересующие его сведения, контролер принимаетрешение о возможности дальнейшей работы с данным клиентом и сообщает о своемрешении сотруднику, который сообщает клиенту о принятом решении.
Перед любыми системами с рабочими потоками стоят две общиепроблемы: определение и выполнение рабочего потока. Обе проблемы усложняютсятем фактом, что во многих организациях одновременно используется нескольконезависимых компьютерных систем, предназначенных для автоматизации различныхсторон общего процесса. Приведенные ниже определения выделяют основные задачи,которые должны быть решены при определении рабочего потока.
Спецификация задания. Структура выполнения каждого задания,определяемая посредством предоставления набора обозримых извне состоянийпроцесса и набора переходов между этими состояниями.
Требования по координации заданий. Обычно задаются посредствомуказания зависимостей между процессами выполнения заданий и зависимостей междупотоками данных, дополненных условиями завершения рабочего потока.
Требования к корректности выполнения. Ограничения, накладываемыена показатели выполнения рабочего потока с целью обеспечения его соответствиятребованиям корректности в данном приложении. Сюда относятся требования пообеспечению устойчивости к отказам, независимости и параллельности обработки,возможностям восстановления и т.д.
Процессам выполнения свойственна семантика открытой вложенности,допускающая доступность промежуточных результатов процесса вне его границ иразрешающая различным компонентам фиксировать результаты своей работы виндивидуальном порядке. Компонентами могут быть другие субъекты обработки,характеризующиеся как семантикой открытой вложенности, так и семантикойзакрытых вложенных транзакций, результаты функционирования которых будутдоступны для всей системы только после полного завершения работы этогокомпонента. Следует отметить, что компоненты с семантикой закрытых вложенныхтранзакций могут состоять только из компонентов с семантикой того же типа.Некоторые из этих компонентов могут расцениваться как жизненно важные, и вслучае отказа от их выполнения потребуется прекратить выполнение и ихродительских компонентов. Кроме того, могут быть определены компенсирующие ирезервные транзакции, речь о которых уже шла выше.
2.6 Классификация систем обработки транзакций
С появлением множества стандартизированных систем обработки транзакций нового поколения полезным представляетсяпроведение их классификациис точки зрения спектра предоставляемых ими функций. Подобную классификацию,включающую пять измерений, предложили Абрахам Лефф и Калтон Пу из Колумбийскогоуниверситета:
M — множество машин;
P — множество процессов;
H — степень неоднородности машин и программного обеспечения;
D — множество логических данных; S — множество узлов.
Эта классификация характеризует любую систему обработки транзакций,от простейших (P1, M1, H1, D1, S1) до более сложных многоузловых неоднородныхокружений с поддержкой разнотипных наборов данных (Pn, Mn, Hn, Dn, Sn). Встатье, написанной в 1991 г., эти авторы представили трехмерную классификацию,которую они применили для оценки различных исследовательских и коммерческихсистем.
Заключение
Системы обработки транзакций так же, как и другие виды информационных и компьютерных систем, находятсяв состоянии постоянного развития. Несмотря на то что концепция, например,вложенных транзакций была выработана еще в начале 80-х годов, если не раньше, однакотолько недавно модели транзакций, более прогрессивные, чем простейшие плоские, началиперемещаться из экспериментальных систем в коммерческие продукты.
Средства обработки транзакций имеют большое значение дляподдержания целостности корпоративной информации. Хотя в области исследований сложныхмоделей транзакций были достигнуты значительные результаты (в частности, выработаныпарадигмы, более приемлемые для распределенных систем, чем применявшиеся в течениемногих лет в централизованных окружениях мэйнфреймов), однако они только сейчасначинают находить применение в реальных приложениях.
Литература
1. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебникдля высших учебных заведений / Под ред. проф. А.Д. Хомоненко. 2-е издание,дополненное и переработанное. СПб.: КОРОНА принт, 2006. 672 с.
2. Конноли, Томас, Бегг, Каролин. Базы данных. Проектирование,реализация и сопровождение. Теория и практика. 3-е издание.: пер. с англ. – М.: издательский дом «Вильяме», 2003. – 1440 с. ил. – Парал. тит. англ.