Транзакции

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

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

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

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

     = уровень 3 – запрещение фантомов. Если транзакция обращается к  данным, то никакая другая транзакция  не сможет добавить новые или  удалить имеющие строки, которые  могут быть считаны при выполнении  транзакции. Реализация этого уровня блокирования выполняется путем использования блокировок диапазона ключей. Подобная блокировка накладывается не на конкретные строки таблицы, а на строки, удовлетворяющие определенному логическому условию.

     2.3 Реализация транзакций

 

     Полноценная реализация уровней изоляции и свойств ACID представляет из себя нетривиальную задачу. Обработка поступающих данных приводит к большому количеству маленьких изменений, включая обновление как самих таблиц, так и индексов. Эти изменения потенциально могут потерпеть неудачу: закончилось место на диске, операция занимает слишком много времени (timeout) и т. д. Система должна в случае неудачи корректно вернуть базу данных в состояние до транзакции.

     Первые  коммерческие СУБД (к примеру, IBM DB2), пользовались исключительно блокировкой доступа к данным для обеспечения свойств ACID. Но большое количество блокировок приводит к существенному уменьшению производительности. Есть два популярных семейства решений этой проблемы, которые снижают количество блокировок: Журнализация изменений (write ahead logging, WAL) и механизм теневых страниц (shadow paging). В обоих случаях, блокировки должны быть расставлены на всю информацию, которая обновляется. В зависимости от уровня изоляции и имплементации, блокировки записи также расставляются на информацию, которая была прочитана транзакцией.

     При упреждающей журнализации, используемой в Sybase и MS SQL Server до версии 2005, все изменения  записываются в журнал, и только после успешного завершения —  в базу данных. Это позволяет СУБД вернуться в рабочее состояние после неожиданного падения системы. Теневые страницы содержат копии тех страниц базы данных на начало транзакции, в которых происходят изменения. Эти копии активизируются после успешного завершения. Хотя теневые страницы легче реализуется, упреждающая журнализация более эффективна.

     Дальнейшее  развитие технологий управления базами данных привело к появлению безблокировочных технологий. Идея контроля за параллельным доступом с помощью временных  меток (timestamp-based concurrency control) была развита и привела к появлению многоверсионной архитектуры MVCC. Эти технологии не нуждаются ни в журнализации изменений, ни в теневых страницах. Архитектура, реализованная в Oracle 7.х и выше, записывает старые версии страниц в специальный сегмент отката, но они все ещё доступны для чтения. Если транзакция при чтении попадает на страницу, временная метка которой новее начала чтения, данные берутся из сегмента отката (то есть используется «старая» версия). Для поддержки такой работы ведётся журнал транзакций, но в отличие от «упреждающей журнализации», он не содержит данных. Работа с ним состоит из трёх логических шагов:

     - Записать намерение произвести  некоторые операции.

     - Выполнить задание, копируя оригиналы  изменяемых страниц в сегмент отката.

     - Записать, что всё сделано без  ошибок.

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

     Если  повреждена запись, то сбой произошёл  во время проставления отметки в  журнале. Значит, ничего важного не потерялось, игнорируем эту ошибку.

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

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

     Firebird вообще не имеет ни журнала изменений, ни сегмента отката, а реализует MVCC, записывая новые версии строк прямо в активное пространство данных. Также поступает MS SQL 2005. Теоретически это даёт максимальную эффективность при параллельной работе с данными, но ценой является необходимость «сборки мусора», то есть удаления старых и уже не нужных версий строк. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     3 Классификация систем обработки транзакций

 

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

     3.1 Описание принципа обработки транзакций

 

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

     Обработка транзакций имеет следующие преимущества:

     - Она позволяет разделять ресурсы  компьютера между многими пользователями.

     - Она смещает время обработки  заданий, когда вычислительные  ресурсы менее заняты.

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

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

     - Транзакция — минимальная единица  обработки.

     Например, рассмотрим типичную банковскую транзакцию, которая включает в себя перемещение $ 700 с сберегательного счета клиента  на расчетный счет клиента. Эта транзакция является одной операцией для  банка, но она включает в себя, по крайней мере, две отдельные операции в компьютерных терминах: зачисляются на депозитный счет $ 700, а также кредитуется расчетный счет на $ 700. Если дебетовые операции прошли успешно, а кредитные нет (или наоборот), в книгах банка не будет остатка на конец дня. Поэтому должен быть способ гарантировать, что обе операции либо имели успех, либо провалились, так что никогда не бывает каких-либо несоответствий в базе данных банка в целом. Обработка транзакций предназначена для обеспечения этого.

     Обработка транзакций позволяет нескольким отдельным  операциям автоматически быть связанными друг с другом, как единая неделимая  транзакция. Системы обработки транзакций гарантирует, что либо все операции в транзакции завершены без ошибок, либо ни одна из них. Если некоторые из операций завершены, но с ошибками, а другие без, системы обработки транзакций дает команду на «откат» всех операций транзакции (в том числе удачных), что означает стирание всех следов операции и восстановление системы до согласованного известного состояния, которое было до начала процесса транзакции. Если все операции транзакции завершены успешно, то транзакция фиксируется в системе, и все изменения в базе данных становятся «постоянными» (commited); транзакции не могут быть отменены, если они уже были сделаны.

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

     Транзакции  оформлены в строгом хронологическом  порядке. Если сделка N+1 намерена коснуться той же части базы данных что и транзакция N, транзакция N+1 не начинается до момента совершения транзакции N. До совершения любых транзакций, все остальные транзакции, затрагивающие ту же часть системы, также должны быть завершены; не может быть никаких «дырок» в последовательности предыдущих транзакций. 

     3.2 Языки транзакций

 

     Ранее была рассмотрена Encina - монитор транзакций корпорации Transarc - который включает множество библиотек и макросов, составляющих среду разработки Transactional C. Альтернативный способ задания директив обработки транзакций состоит в применении специального языка5. В качестве примера рассмотрим язык InterBase Parallel Language (IPL), входящий в состав неоднородной распределенной cреды баз данных InterBase. IPL разработан с учетом поддержки высокой степени параллелизма и взаимодействия между субтранзакциями, принадлежащими общей глобальной транзакции. IPL предназначался для поддержки транзакций разных типов (т. е. смешанных транзакций), а также как системно-независимый декларативный язык, обеспечивающий прозрачность управления транзакциями.

     Программа на IPL представляет собой блок, обрамленный  ключевыми словами program - endprogram, и  включает декларации записей и описания субтранзакций. Поскольку IPL постоянно  развивается и в настоящее время в стадии исследований находится графический интерфейс, а также объектно-ориентированная версия этого языка, то за более полной информацией мы отсылаем читателя к материалам проекта InterBase, который ведется в Университете Пурдью.

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

     Значение  этих средств определяется отчасти  тем, что они способствуют интеграции концептуального моделирования  процессов и данных. Классические процедуры интеграции 1970-х годов ориентировались, например, на отображение диаграмм потоков данных (DFD - Data Flow Diagram), на сущности и атрибуты диаграмм сущность-связь (ERD - Entity-Relation Diagram). Объектно-ориентированное моделирование обеспечивает определение объектов вместе с присущими им операциями, но ни тот ни другой вид моделирования не содержит средств для описания семантики транзакций. Выработка языков описания транзакций по отношению к некоторой модели данных с последующим переносом языковых средств в среду, обеспечивающую графическое представление вложенных, многозвенных и других развитых моделей транзакций, даст в будущем значительное увеличение продуктивности и надежности проектирования систем обработки транзакций.

     3.3 Экстремальная обработка транзакций

 

     Экстремальная обработка транзакций (англ. Extreme Transaction Processing или сокращенно XTP) — исключительно  ресурсоемкая форма обработки транзакций. Данная форма предусматривает обработку  от 10 000 одновременных попыток доступа  (500 транзакций в секунду) и выше.6

     XTP-приложения  проектируются, разрабатываются,  используются и поддерживаются  на компьютерных кластерах и/или  распределенных грид-сетях. В  результате, XTP-приложения имеют  следующие преимущества:

  • производительность
  • масштабируемость
  • доступность
  • безопасность
  • управляемость
  • надёжность

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

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

     Программа Clearspace от Jive Software, например, построена  на основе системы Coherence от Oracle Corporation, компоненте Oracle Fusion Middleware, которая поддерживает XTP, в попытке усовершенствовать  обыкновенную обработку транзакций. Другим примером может послужить Управление цепочками потребностей в реальном времени от компании WareLites, основанное на WL-BOSS (программная платформа для XTP, управляемая грид-событиями). Еще примерами XTP может служить GigaSpaces XAP (eXtreme Application Platform) и IBM WebSphere eXtreme Scale.

     Заключение

 

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

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