Прозрачность транзакций

Транзакция является логической единицей работы, выполняемой в базе данных. Она может быть представлена отдельной программой, являться частью алгоритма программы или даже отдельной командой (например, командой INSERT или UPDATE языка SQL и включать произвольное количество операций, выполняемых в базе данных. С точки зрения базы данных, выполнение программы некоторого приложе­ния может расцениваться как серия транзакций, в промежутках между которыми выполняется некоторая обработка данных, осуществляемая вне среды базы данных. Любая транзакция всегда должна переводить базу данных из одного согласованного состояния в другое.

В языке SQL транзакция начинается оператором - BEGIN TRANSACTION и завершается одним из 2-х возможных способов:

1. В случае успешного завершения результаты транзакции фиксируются в базе данных с помощью оператора СОММIТ и база данных переходит в новое согласованное состояние.

2. Если выполнение транзакции не увенчалось успехом, то она отменяется с помощью оператора ROLLBACK .

Рассмотрим примерыдля локальной и распределенной базы данных.

Для локальной базы данных:

Транзакция T1 – уменьшает исходную сумму со счёта balx на 100 рублей.

Время Транзакция Т1 Поле balx
t1 begin_trans
t2 read(balx)
t3 balx=balx-100
t4 write(balx)
t5 commit

Для многопользовательской базы данных транзакция Т2 – увеличивает исходную сумму счёта balx на 1000 руб.

Время Транзакция Т1 Транзакция Т2 Поле balx
t1   begin_trans
t2   read(balx)
t3   balx=balx+1000
t4   write(balx)
t5 begin_trans rollback
t6 read(balx)  
t7 balx=balx-100  
t8 write(balx)  
t9 commit  

 

Т1 и Т2-это параллельные транзакции.

Если бы транзакция Т1 была включена в момент времени t3, то была бы считана сумма balx = 2000 в момент времени t4 и отмена транзакции Т2 в момент времени t5 не была бы зафиксирована транзакцией Т1. Поэтому Т1 начинается в момент времени t5.

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

1. Механизмы поддержания транзакций;

2. Службы управления параллельностью( для многопользовательского режима);

3. Средства восстановления баз данных.

 

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