Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Транзакции баз данных




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

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

банк должен снять $500 с вашего депозитного счета;

затем банк должен добавить $500 на ваш текущий счет.

Вряд ли вам бы понравилось, если бы деньги были сняты с депозитного счета, но не переведены (из-за какой-то банковской ошибки) на текущий счет. Но если эти шаги упаковать в транзакцию базы данных, то СУБД гарантирует, что все взаимосвязанные шаги будут выполнены как единое целое. Если любая часть транзакции выполнится неудачно, то будет произведен откат (rollback) всей транзакции в исходное состояние. А если все шаги будут выполнены успешно, то транзакция будет зафиксирована (committed).

Если вы уже читали о транзакциях, то, возможно, вам встречалось сокращение ACID. Оно означает четыре ключевых свойства классической транзакции: атомарность (Atomic — все или ничего), целостность (Consistent — на протяжении транзакции данные остаются в непротиворечивом состоянии), изолированность (Isolated — транзакции не мешают одна другой) и устойчивость (Durable — транзакции сохраняются и протоколируются).

Оказывается, в платформе.NET есть несколько способов поддержки транзакций. Здесь мы рассмотрим объект транзакции для поставщика данных ADO.NET (SqlTransaction в случае System.Data.SqlClient). Библиотеки базовых классов ADO.NET также обеспечивают поддержку транзакций в многочисленных API-интерфейсах, которые перечислены ниже:

System.EnterpriseServices Это пространство имен (из сборки System.EnterpriseServices.dll) содержит типы, позволяющие выполнить интеграцию с уровнем времени выполнения СОМ+, в том числе и поддержку распределенных транзакций.
System.Transactions Это пространство имен (из сборки System.Transactions.dll) содержит классы, позволяющие писать собственные транзакционные приложения и диспетчеры ресурсов для различных служб (MSMQ, ADO.NET, СОМ+ и т.д.).
Windows Communication Foundation WCF API предоставляет службы для работы с транзакциями с различными классами распределенного связывания.
Windows Workflow Foundations WF API предоставляет транзакционную поддержку для рабочих потоков.

Кроме встроенной поддержки транзакций в библиотеках базовых классов.NET, можно пользоваться и возможностями языка SQL используемой СУБД. Например, можно написать хранимую процедуру, в которой задействованы операторы BEGIN TRANSACTION, ROLLBACK и COMMIT.




Поделиться с друзьями:


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


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.