Транзакции

Автор: Пользователь скрыл имя, 29 Августа 2012 в 21:56, курсовая работа

Описание работы

Понятие транзакции не входит в реляционную модель данных, т.к. транзакции рассматриваются не только в реляционных СУБД, но и в СУБД других типов, а также и в других типах информационных систем.

Содержание

Введение 3
1 Основы обработки транзакций 5
1.1 Свойства транзакций 5
1.2 Управление транзакциями 7
1.3 Параллельное выполнение транзакций 9
2 Принципы и модели обработки транзакций 12
2.1 Плоские транзакции 12
2.2 Режим блокировки 14
2.3 Реализация транзакций 17
3 Классификация систем обработки транзакций 20
3.1 Описание принципа обработки транзакций 20
3.2 Языки транзакций 21
3.3 Экстремальная обработка транзакций 23
Заключение 25
Глоссарий 27
Список использованных источников 29
Приложения 30

Работа содержит 1 файл

ШаблонТранзакции.doc

— 216.00 Кб (Скачать)

     Основные данные о работе

 
Версия  шаблона 2.1
Филиал  
Вид работы Курсовая работа
Название  дисциплины Базы данных
Тема Транзакции
Фамилия студента  
Имя студента  
Отчество  студента  
№ контракта  

 

     Содержание

     Введение

 

     Понятие транзакции не входит в реляционную  модель данных, т.к. транзакции рассматриваются  не только в реляционных СУБД, но и в СУБД других типов, а также  и в других типах информационных систем.

     Транзакция (англ. transaction) — в информатике, группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций.

     Различают последовательные (обычные), параллельные и распределённые транзакции. Распределённые транзакции подразумевают использование больше чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также, в некоторых системах реализованы автономные транзакции, или под-транзакции, которые являются автономной частью родительской транзакции.

     Для пользователя транзакция выполняется  по принципу "все или ничего", т.е. либо транзакция выполняется целиком  и переводит базу данных из одного целостного состояния в другое целостное состояние, либо, если по каким-либо причинам, одно из действий транзакции невыполнимо, или произошло какое-либо нарушение работы системы, база данных возвращается в исходное состояние, которое было до начала транзакции (происходит откат транзакции). С этой точки зрения, транзакции важны как в многопользовательских, так и в однопользовательских системах.  Транзакция может состоять из нескольких операций. Однако, с точки зрения пользователя, эти операции представляют собой единое задание. С точки зрения СУБД каждая транзакция переводит базу данных из одного непротиворечивого состояния в другое. СУБД обеспечивает непротиворечивость базы данных даже в случае возникновения сбоя. Кроме того, СУБД гарантирует, что после завершения транзакции все внесенные ею изменения будут надежно сохранены в базе данных целиком и полностью (без необходимости выполнения другой транзакции для устранения недостатков, возникших при выполнении первой транзакции). Если по какой-либо причине транзакция не будет завершена, СУБД гарантирует, что все внесенные ею изменения будут отменены.

     В этой курсовой работе обсуждаются тенденции  и перспективы обработки транзакций в применении к системам информационного  управления в целом. Рассматриваются, в частности, следующие вопросы:

  • принципы обработки транзакций в информационных системах;
  • последние достижения в мире коммерческих систем обработки транзакций;
  • языки обработки транзакций;
  • стандарты;
  • черты систем обработки транзакций следующего поколения.

     Концепция транзакций – неотъемлемая часть  любой клиент-серверной базы данных.

     Под транзакцией понимается неделимая  с точки зрения воздействия на БД последовательность операторов манипулирования  данными (чтения, удаления, вставки, модификации), приводящая к одному из двух возможных результатов: либо последовательность выполняется, если все операторы правильные, либо вся транзакция откатывается, если хотя бы один оператор не может быть успешно выполнен. Обработка транзакций гарантирует целостность информации в базе данных. Таким образом, транзакция переводит базу данных из одного целостного состояния в другое.

     Поддержание механизма транзакций – показатель уровня развитости СУБД. Корректное поддержание  транзакций одновременно является основой  обеспечения целостности БД. Транзакции также составляют основу изолированности в многопользовательских системах, где с одной БД параллельно могут работать несколько пользователей или прикладных программ. Одна из основных задач СУБД – обеспечение изолированности, т.е. создание такого режима функционирования, при котором каждому пользователю казалось бы, что БД доступна только ему. Такую задачу СУБД принято называть параллелизмом транзакций.

     Большинство выполняемых действий производится в теле транзакций. По умолчанию  каждая команда выполняется как самостоятельная транзакция. При необходимости пользователь может явно указать ее начало и конец, чтобы иметь возможность включить в нее несколько команд.

     Основная  часть

  1. Основы  обработки транзакций

     1.1 Свойства транзакций

 

     Транзакция – это неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации).

     Например, если вы продаете товар клиенту, то ваша транзакция будет состоять, по крайней мере, из двух частей (операторов): вам необходимо обновить склад, уменьшив количество проданных единиц товара в некоторой таблице, а также обновить таблицу счетов для того, чтобы затем выставить счет клиенту.

     Если  эта последовательность работ будет  прервана, то БД не будет соответствовать реальному объекту.

     Результаты  действия всех операторов, входящих в  транзакцию, либо полностью принимаются, либо полностью отвергаются.

     Транзакция  переводит БД из одного устойчивого  состояния в другое.

     Транзакция  может быть представлена отдельной программой некоторого приложения или ее частью. Для транзакции возможны два варианта завершения:

     - если все операторы выполнены  успешно, транзакция фиксируется;  до фиксации транзакции допустимо  аннулирование произведенных ее  изменений, после фиксации результатов транзакции ее изменения становятся видимыми пользователю;

     - если нормальное завершение транзакции невозможно, осуществляется откат транзакции – ее результаты аннулируются.

     При выполнении транзакции система управления базами данных должна придерживаться определенных правил обработки набора команд, входящих в транзакцию. В частности, разработано четыре правила, известные как требования ACID, они гарантируют правильность и надежность работы системы.

     Свойства  транзакции:

     - атомарность – требует, чтобы транзакция (все операции (части) транзакции) выполнялась полностью либо не выполнялась совсем.

     - сериализуемость – представляет  собой возможность одновременного  выполнения нескольких транзакций. Т.е результат параллельного выполнения  транзакций точно такой же, как если бы они выполнялись последовательно;

     - изолированность – обеспечивает  такую изолированность одной  транзакции от другой, что промежуточные  результаты незавершенной транзакции  не доступны другой транзакции; т.е. данные, использующиеся в одной транзакции, не могут использоваться другой транзакцией до тех пор, пока первая не будет завершена;

     - долговечность – гарантирует,  что результаты зафиксированной  транзакции не могут быть потеряны  ни при каких обстоятельствах.  Т.е. после завершения транзакции БД должна переходить в устойчивое состояние и это состояние не должно нарушаться даже при сбоях системы.

     Характеристики  транзакций описываются в терминах ACID (Atomicity, Consistency, Isolation, Durability – неделимость, согласованность, изолированность, устойчивость).

     Транзакция  неделима в том смысле, что представляет собой единое целое. Все ее компоненты либо имеют место, либо нет. Не бывает частичной транзакции. Если может  быть выполнена лишь часть транзакции, она отклоняется.

     Транзакция  является согласованной, потому что не нарушает бизнес-логику и отношения между элементами данных. Это свойство очень важно при разработке клиент-серверных систем, поскольку в хранилище данных поступает большое количество транзакций от разных систем и объектов. Если хотя бы одна из них нарушит целостность данных, то все остальные могут выдать неверные результаты.

     Транзакция  всегда изолированна, поскольку ее результаты самодостаточны. Они не зависят от предыдущих или последующих  транзакций – это свойство называется сериализуемостью и означает, что транзакции в последовательности независимы.

     Транзакция  устойчива. После своего завершения она сохраняется в системе, которую  ничто не может вернуть в исходное (до начала транзакции) состояние, т.е. происходит фиксация транзакции, означающая, что ее действие постоянно даже при сбое системы. При этом подразумевается некая форма хранения информации в постоянной памяти как часть транзакции.

     Указанные выше правила выполняет сервер. Программист  лишь выбирает нужный уровень изоляции, заботится о соблюдении логической целостности данных и бизнес-правил. На него возлагаются обязанности по созданию эффективных и логически верных алгоритмов обработки данных. Он решает, какие команды должны выполняться как одна транзакция, а какие могут быть разбиты на несколько последовательно выполняемых транзакций. Следует по возможности использовать небольшие транзакции, т.е. включающие как можно меньше команд и изменяющие минимум данных. Соблюдение этого требования позволит наиболее эффективным образом обеспечить одновременную работу с данными множества пользователей.

     1.2 Управление транзакциями

 

     выполняются внутри реляционной СУБД. Прежде всего, имеется в виду выполнение операторов INSERT, UPDATE и DELETE. Например, после создания таблицы (выполнения оператора CREATE TABLE) не нужно фиксировать результат: создание таблицы фиксируется в базе данных автоматически. Точно так же с помощью отмены транзакции не удастся восстановить только что удаленную оператором DROP TABLE таблицу.

     После успешного выполнения команд, заключенных в тело одной транзакции, немедленного изменения данных не происходит. Для окончательного завершения транзакции существуют так называемые команды управления транзакциями, с помощью которых можно либо сохранить в базе данных все изменения, произошедшие в ходе ее выполнения, либо полностью их отменить. 1

     Существуют  три команды, которые используются для управления транзакциями:

     COMMIT – для сохранения изменений;

     ROLLBACK – для отмены изменений;

     SAVEPOINT – для установки особых точек возврата.

     После завершения транзакции вся информация о произведенных изменениях хранится либо в специально выделенной оперативной  памяти, либо во временной области  отката в самой базе данных до тех  пор, пока не будет выполнена одна из команд управления транзакциями. Затем все изменения или фиксируются в базе данных, или отбрасываются, а временная область отката освобождается.

     Команда COMMIT предназначена для сохранения в базе данных всех изменений, произошедших в ходе выполнения транзакции. Она  сохраняет результаты всех операций, которые имели место после выполнения последней команды COMMIT или ROLLBACK.

     Команда ROLLBACK предназначена для отмены транзакций, еще не сохраненных в базе данных. Она отменяет только те транзакции, которые были выполнены с момента выдачи последней команды COMMIT или ROLLBACK. 2

     Команда SAVEPOINT (точка сохранения) предназначена  для установки в транзакции особых точек, куда в дальнейшем может быть произведен откат (при этом отката всей транзакции не происходит). Команда  имеет следующий вид:

     SAVEPOINT имя_точки_сохранения

     Она служит исключительно для создания точек сохранения среди операторов, предназначенных для изменения  данных. Имя точки сохранения в  связанной с ней группе транзакций должно быть уникальным.

     Для отмены действия группы транзакций, ограниченных точками сохранения, используется команда ROLLBACK со следующим синтаксисом:

     ROLLBACK TO имя_точки_сохранения

     Поскольку с помощью команды SAVEPOINT крупное  число транзакций может быть разбито  на меньшие и поэтому более  управляемые группы, ее применение является одним из способов управления транзакциями.

     SQL Server предлагает множество средств  управления поведением транзакций. Пользователи в основном должны  указывать только начало и  конец транзакции, используя команды  SQL или API (прикладного интерфейса программирования). Транзакция определяется на уровне соединения с базой данных и при закрытии соединения автоматически закрывается. Если пользователь попытается установить соединение снова и продолжить выполнение транзакции, то это ему не удастся. Когда транзакция начинается, все команды, выполненные в соединении, считаются телом одной транзакции, пока не будет достигнут ее конец.

Информация о работе Транзакции