Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Концепция транзакций




 

Существует множество определений транзакции, каждое из которых по-своему правильно. Приведем некоторые из них.

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

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

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

Транзакция обладает свойствами атомарности, согласованности, изоляции и долго­временности. Рассмотрим это более подробно. Операции, о которых идет речь в опре­делении – это INSERT/UPDATE/DELETE и, конечно, SELECT. Если транзакция объеди­няет какие-то операции в единый блок, то говорят, что эти действия выполняются в контексте данной транзакции.

Вторая часть первого определения гласит: "Позволяющий подтвердить или отменить результаты работы всех операций в блоке". Это очень важная часть, содержащая в себе суть идеи транзакций. Эта часть определения иллюстрируется следующим примером транзакции: при добавлении студента в БД колледжа информация о нем должна быть добавлена в две таблицы – “stud_info” и “students”. Если информация будет добавлена только в первую из них, то получится, что в колледже зарегистрирован студент, не числящийся ни в какой группе. Даже непонятно – обучается он на бюджетной или коммерческой основе. Если же добавить информацию только в таблицу “students”, то получится, что в колледже обучается студент, о котором ничего не известно! Уж не шпион ли он? Чтобы избежать таких неопределенностей и был придуман механизм транзакции. Он может обеспечить выполнений двух этих изменений в БД как одного целого!

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

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

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

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

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

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

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

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

 


Поделиться:

Дата добавления: 2015-04-04; просмотров: 90; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты