You are on page 1of 34

CSCB686 РАЗПРЕДЕЛЕНИ И ОБЕКТНО

– ОРИЕНТИРАНИ БАЗИ ОТ ДАННИ

МОДУЛ 2: УПРАВЛЕНИЕ НА
ТРАНСАКЦИИ

Лекция 3: Основни понятия. Проблеми при


конкурентно изпълнение на трансакции
ЛЕКТОР: ЮЛИАНА ПЕНЕВА

Департамент “Информатика” – НБУ

Е-mail: july_peneva@abv.bg
СЪДЪРЖАНИЕ НА ЛЕКЦИЯ №3

1. Трансакции – основни понятия.


2. Проблеми при обработването на
конкурентни трансакции.

Трябва да е усвоен Модул 1: Разпределени бази


от данни и архитектура “клиент-сървър”

CSCB686 - лекция 3 Юлиана Пенева 3


ОСНОВНИ ПОНЯТИЯ
Подсистема за управление
на трансакции на СУБД

1. Модул за управление
на трансакциите
(Transaction Manager).
2. Модул за създаване на
график за изпълнение
(Scheduler).
3. Модул за управление
на възстановяването
(Recovery Manager).
4. Модул за управление
на буферите (Buffer
Manager).

Юлиана Пенева CSCB686 - лекция 3 4


ОСНОВНИ ПОНЯТИЯ
1. Трансакция - логически неделима единица за
обработка на базата, включва една или повече
операции към базата: търсене, въвеждане,
модифициране или изтриване на данни.
2. Управление на едновременния достъп
(concurrency control)– процес, при който се
контролират действията на отделните
потребители, работещи едновременно с базата.
3. Възстановяване на базата (database recovery)-
процес, при който базата се възвръща към
коректно състояние, ако поради някакви
причини данните са несъстоятелни.
4. Двата процеса се осъществяват от СУБД чрез
съответни модули.
CSCB686 - лекция 3 Юлиана Пенева 5
ОСНОВНИ ПОНЯТИЯ

5. Едновременен достъп (concurrency)– бива:


 смесено обработване на процеси върху
единствен процесор (interleaved processing);
 едновременно, паралелно обработване на
процеси върху няколко процесора (parallel
processing).
6. Видове системи:
 еднопотребителски – системата се използва
само от един потребител;
 многопотребителски – системата се използва
едновременно от много потребители.

CSCB686 - лекция 3 Юлиана Пенева 6


ОСНОВНИ ПОНЯТИЯ
Опростен модел на базата от данни
1. База от данни е множество от именувани
полета, съдържащи данни.
2. Грануларност (granularity) на данните = размер
на полето с данни; може да бъде поле от
даден запис, цял запис или блок върху диска.
Разглежданите понятия не зависят от
грануларността на данните.
3. Основните операции за достъп до базата в
рамките на дадена трансакция са:
 Read(X) – чете се полето X от базата в програмна
променлива X;
 Write(X) – записва се съдържанието на
програмната променлива X в полето Х на базата.

CSCB686 - лекция 3 Юлиана Пенева 7


ОСНОВНИ ПОНЯТИЯ
1. Изпълнение на командата Read (X):
• намиране на адреса на блока, който
съдържа полето x;
• копиране на този блок в буфер от паметта;
• копиране полето Х в програмна променлива
с име Х.
2. Изпълнение на командата Write(X):
• намиране на адреса на блока, който съдържа
полето Х;
• копиране на този блок в буфер от паметта;
• копиране на програмната променлива Х на
съответното място в буфера;
• запис на обновения блок от буфера върху диска.
CSCB686 - лекция 3 Юлиана Пенева 8
ОСНОВНИ ПОНЯТИЯ

Модулът за управление на възстановяването


отбелязва операциите:
1. BEGIN_TRANSACTION
2. END_TRANSACTION
3. READ или WRITE
4. COMMIT_TRANSACTION
5. ROLLBACK (ABORT)
6. UNDO
7. REDO

CSCB686 - лекция 3 Юлиана Пенева 9


ОСНОВНИ ПОНЯТИЯ
Системен журнал (log)
1. Представлява специален файл където модулът за
управление на възстановяването отбелязва главните
операции на всяка трансакция.
2. За целта на всяка трансакция се присвоява уникален
идентификатор, записва се кои полета са променени,
техните стари и актуализирани стойности, как е
завършила. операциите за четене не се записват, тъй
като те не променят съдържанието на базата.
3. При откази или грешки системният журнал се
изследва. Ефектът от всяка операция за запис се
заличава чрез операцията UNDO, която връща
старите стойности в съответните полета.
4. При повреда в самия диск, след нейното
отстраняване, стойностите от журнала се прехвърлят
отново върху диска чрез операцията REDO.

CSCB686 - лекция 3 Юлиана Пенева 10


ОСНОВНИ ПОНЯТИЯ
Всяка трансакция по време на изпълнението
си преминава през определен брой състояния:
1. Active (активна).
2. Partially committed (частично приключила).
3. Committed (приключила).
4. Failed (неуспех).
5. Terminated (завършена).

CSCB686 - лекция 3 Юлиана Пенева 11


ОСНОВНИ ПОНЯТИЯ

Диаграма на преходите при изпълнение на трансакция

Юлиана Пенева
CSCB686 - лекция 3 12
ОСНОВНИ ПОНЯТИЯ

Диаграма на преходите при изпълнение на трансакция

Юлиана Пенева
CSCB686 - лекция 3 13
ОСНОВНИ ПОНЯТИЯ
A.C.I.D. свойства на трансакциите
1. Atomicity (атомарност, неделимост).
2. Consistency (състоятелност,
непротиворечивост.)
3. Independency (независимост).
4. Durability, persistence (устойчивост,
необратимост).

Тези свойства се осигуряват от методите за


управление на едновременния достъп и за
възстановяване на базата.

CSCB686 - лекция 3 Юлиана Пенева 14


ОСНОВНИ ПОНЯТИЯ

A.C.I.D. свойства на трансакциите


Юлиана Пенева
CSCB686 - лекция 3 15
ОСНОВНИ ПОНЯТИЯ

Изпълнение на приложение в среда “база от


данни”- редица от атомарни трансакции, като
между тях се изпълняват и други програми

Юлиана Пенева CSCB686 - лекция 3 16


ОСНОВНИ ПОНЯТИЯ
Трансакции се изпълняват по два начина:

1. Последователно, една след друга (end-to-end).

2. Едновременно, конкурентно (concurrently).

CSCB686 - лекция 3 Юлиана Пенева 17


ОСНОВНИ ПОНЯТИЯ
Пример 1: прехвърляне на пари от сметка Х в Y
begin transaction T1
read balance X
balance X = balance X - 100
if balance X < 0 then
begin
print ‘insufficient funds’
abort T1
end
write balance X
read balance Y
balance Y = balance Y + 100
write balance Y
commit T1
end transaction T1

CSCB686 - лекция 3 Юлиана Пенева 18


ОСНОВНИ ПОНЯТИЯ
Класификация на трансакциите
1. По област на приложение:
 разпределени;
 централизирани.
2. По начин на изпълнение:
 интерактивни (on-line);
 групови (batch).
3. По структура:
 обикновени (flat transactions);
 вложени (nested transactions);
 работни потоци (workflows).

CSCB686 - лекция 3 Юлиана Пенева 19


ОСНОВНИ ПОНЯТИЯ

Пример на работен поток


ОСНОВНИ ПОНЯТИЯ
Особености при разпределените трансакции
1. Дадена трансакция Т има достъп до данни,
разположени в различни възли.
2. Всяка трансакция се разделя на подтранзакции
към всеки възел.
3. Отделните подтранзакции се представят от
агенти (agents) във всеки един от възлите.
4. Трансакцията Т, както и отделните агенти по
възлите удовлетворяват A.C.I.D.-свойствата.
5. Агентите по възлите се синхронизират с всички
останали локални и глобални трансакции,
изпълняващи се на същия възел и по другите
възли.

CSCB686 - лекция 3 Юлиана Пенева 21


ОСНОВНИ ПОНЯТИЯ
begin transaction T1
begin transaction T1 A begin transaction T1 B
read balance X read balance Y
balance X = balance X - 100 balance Y = balance Y + 100
if balance X < 0 then write balance Y
begin commit T1B
print ‘insufficient funds’
abort T1 A
end
write balance X
commit T1A
commit T1
end transaction T1
Пример 2: разпределен вариант на Т1(Т1А, Т1В)

Юлиана Пенева CSCB686 - лекция 3 22


ОСНОВНИ ПОНЯТИЯ
Подходи за изпълнение на разпределени
трансакции
Свързват се със съответен модел на
управление:

1. Модел “master-slave” (господар-


подчинен).
2. Модел “triangle” (триъгълник).
3. Йерархичен модел.

CSCB686 - лекция 3 Юлиана Пенева 23


ОСНОВНИ ПОНЯТИЯ

Модел “master-slave”

Юлиана Пенева CSCB686 - лекция 3 24


ОСНОВНИ ПОНЯТИЯ

Модел “триъгълник”
ОСНОВНИ ПОНЯТИЯ
Изпълнението на дадена трансакция може да
приключи неуспешно поради:

1. Техническа авария на системата.


2. Грешки в транзакцията.
3. Настъпване на особени условия.
4. Аварийно приключване, наложено от метода за
управление на едновременния достъп.
5. Повреди в диска.
6. Възникване на екстремална ситуация.

CSCB686 - лекция 3 Юлиана Пенева 26


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
1. Проблем “загубено обновяване” (lost update) - възниква
когато операциите за обновяване на базата в рамките на две
трансакции се размесят по такъв начин, че в базата се
получават некоректни данни

Юлиана Пенева CSCB686 - лекция 3 27


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
2. Проблем “зависимост от липса на приключване”
(uncommitted dependency)- възниква когато дадена
трансакция обновява базата и след това приключи аварийно
поради настъпването на някакво събитие.

Юлиана Пенева CSCB686 - лекция 3 28


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
3. Проблем “мръсно четене” (dirty read) - възниква когато на
трансакция, която само чете от базата и изчислява сумарни
резултати, се позволи да чете междинни резултати, получени при
изпълнението на други трансакции в момент, в който базата се
обновява.

CSCB686 - лекция 3
Юлиана Пенева 29
ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
4. Проблем “нарушаване на ограниченията за цялост”
(integrity violation) -възниква при несинхронизирано
изпълнение на трансакции, които обновяват едновременно
различни данни от едно и също отношение в базата.
Пример
SCHEDULE
Surgeon-name Operation Date
Румен Танев Tonsilectomy 3.5.03
Елена Кирова Tonsilectomy 7.5.03
....... ....... .......

SURGEON
Name Qualification
Румен Танев Tonsilectomy
Мариана Пеева Tonsilectomy
Румен Танев Appendectomy
....... ......

Юлиана Пенева CSCB686 - лекция 3 30


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
Пример – продължение
1. Трансакция T3 – тя сменя типа на операцията за 3.5.03 от “Tonsilectomy”
на “Apendectomy” поради някаква причина, за целта трябва да се
провери дали д-р Румен Танев може да оперира “Apendectomy”.
2. Трансакция T4 - оказва се, че д-р Танев е зает и хирургът също трябва
да бъде сменен с друг, който може да оперира “Tonsilectomy”; свободен
за този ден е хирургът Мариана Пеева.

Юлиана Пенева CSCB686 - лекция 3 31


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО
НА КОНКУРЕНТНИ ТРАНСАКЦИИ
Резултат: получава несъстоятелна база - Мариана Пеева ще
оперира на 3.5.03, защото е свободна, но няма нужната
квалификация за това!!!!
Защо?
1. Двете трансакции не са синхронизирани обновяват
едновременно различни полета на една и съща таблица,
т.е. те се изпълняват независимо една от друга!
2. Никоя трансакция не отчита работата на другата, понеже
всяка от тях обновява различно поле в една и съща
таблица!
3. Резултат - нарушават се ограниченията за цялостност на
базата.

CSCB686 - лекция 3 Юлиана Пенева 32


ПРОБЛЕМИ ПРИ ОБРАБОТВАНЕТО НА
КОНКУРЕНТНИ ТРАНСАКЦИИ
1. Управлението на едновременния достъп има за цел да
предотврати смесването на операции от отделни
трансакции, за да не възникват разгледаните проблеми.
2. От особена важност е да се осигури независимото
изпълнение на всяка от трансакциите.
3. За целта се дефинират т.нар. нива на изолация
(isolation levels) или степени 0, 1, 2 и 3 на
непротиворечивост на базата.
4. Всяко следващо ниво налага по-силни ограничения,
спомагащи за независимото изпълнение на
трансакцията.
5. Алгоритмите за управление на едновременния достъп
предпазват от четенето на междинни резултати и
осъществяват получаването на коректни данни в базата
все едно, че трансакциите се изпълняват една след
друга.
CSCB686 - лекция 3 Юлиана Пенева 33
ЗА ЛЮБОЗНАТЕЛНИ И ПИТАЩИ
СТУДЕНТИ
1. Разпределени трансакции:
 http://msdn.microsoft.com/en-us/library/windows/desktop/ms681205(v=v
s.85).aspx
 http://docs.wso2.org/display/DSS263/Distributed+Transaction+Support

2. Вложени трансакции:
 http://docs.oracle.com/cd/E17076_02/html/gsg_txn/JAVA/nestedtxn.html
 http://msdn.microsoft.com/en-us/library/windows/desktop/ms716985(v=v
s.85).aspx

3. Работен поток:
 http://docs.oracle.com/cd/E18727_01/doc.121/e13406/T373258T377073.h
tm
 http://ceur-ws.org/Vol-789/paper4.pdf
 http://doc.utwente.nl/38258/1/00000080.pdf

CSCB686 - лекция 3 Юлиана Пенева 34

You might also like