- •Основы бд
- •1. Основные понятия, термины.
- •2. Модели данных.
- •3. Иерархическая модель.
- •4. Сетевая модель.
- •5. Реляционная модель
- •Операции реляционной алгебры
- •Реляционное исчисление кортежей
- •Проектирование схем реляционной бд
- •1. Основные положения
- •2. Избыточность данных и аномалии обновления
- •3. Функциональная зависимость
- •4. I нормальная форма
- •5. II нормальная форма
- •7. Нормальная форма Бойса-Кодда
- •8. Обзор процесса нормализации
- •9. Многозначные зависимости
- •Методология проектирования бд
- •Основные понятия.
- •Методология концептуального проектирования.
- •Методология логического проектирования.
- •1. Основные понятия.
- •2. Методология концептуального проектирования
- •3. Методология логического проектирования
- •4. Методология физического проектирования бд
- •Пример проектирования бд
- •Пример физического проектирования бд
- •2. Управление транзакций
- •3. Обработка запросов
2. Управление транзакций
Транзакция – это серия действий, которые выполняются одним пользователем или прикладной программой, и осуществляет изменения содержимого БД или доступ к данным.
Транзакция может быть представлена отдельной программой, частью какого либо алгоритма, либо отдельной программой (Insert, Update).
Чтобы разобраться с механизмом управления транзакций, рассмотрим пример:
Staff – сотрудник
Property for Rent – объекты недвижимости
Staff (sno, fname, lname, Adr, tel № , Position, Dop, Sex, salary. Nin, Pn)
Property for Rent (pno, Street, Area, City, Pcode, Type, Rooms, Ono, Sno, bno).
Необходимо сотруднику увеличить заработную плату.
Вариант А:
Read (sno=x, Salary)
Salary = Salary*1.1
Write (sno=x, view_ Salary)
Вариант В: (удаляется информация о сотруднике с заданным номером)
Delete (sno=x)
For all Property for Rent
Begin
Read (Pno=Pno, sno)
If (sno = x) then
Begin
Sno=new_sno
Write (pno=pno, sno)
End
End.
Если для транзакции для варианта А при выполнении изменений не все будут выполнены до конца БД по прежнему будут находиться в согласованном состоянии.
При выполнении транзакции В, если все указанные изменения будут выполнены до конца БД перейдет в несогласованное состояние, т.е. за объект недвижимости будет отвечать не существующий работник. Поэтому любая транзакция завершается одним из следующих возможных способов:
В случае успешного завершения транзакции результаты фиксируются в БД, и БД переходит в новое согласованное состояние;
Если транзакция не завершена либо произошло аварийное завершение, она отменяется и БД переходит в прежнее состояние. Этот процесс называется откат.
Зафиксированную транзакцию не возможно отменить, тогда надо выполнить другую транзакцию, которая отменит действие предыдущей. Этот процесс называется компенсирующей транзакцией.
Ни одна СУБД не в состоянии оценить какие действия могут быть восприняты как единое целое и образуют единую логическую транзакцию. Поэтому в большинстве языков для манипулирования данных используются специальные операторы, которые позволяет установить границы транзакции:
- BEGIN TRANSACTION
- COMMIT
- ROLL BACK
Если эти операторы не использовались, то вся выполняемая программа расценивается как единая транзакция и СУБД автоматически выполняет команду COMMIT – при успешном завершении, ROLL BACK – при аварийном завершении транзакции.
Любая транзакция должна обладать следующими свойствами:
Атомарность – это неделимая единица, которая может быть либо выполнена полностью, либо не выполнена совсем.
Согласованность, каждая транзакция должна переводить БД из одного согласованного состояния в другое согласованное состояние.
Изолированность, все транзакции выполняются независимо друг от друга и результаты независимой транзакции не должны быть доступны другим пользователям.
Продолжительность, результаты успешного завершения транзакции должны быть постоянны и не должны быть утеряны в процессе сбоя.
Рассмотрим подсистему обработки транзакции типичной СУБД.
Менеджер транзакций осуществляет координацию работы. Он взаимодействует с планировщиком, который отвечает за реализацию выбранной стратегии управления параллельностью, которая отвечает за реализацию выбранной стратегии. Его называют еще менеджер блокировок, если для управления параллельностью выбрана система блокировок.
Цель работы планировщика заключается в достижении максимальности управления параллельностью.
Задача менеджера восстановления является предоставления гарантий того, что БД будет возвращена в то состояние, в котором она находиться до начала транзакций.
Менеджер буфера отвечает за период данных между основной памятью компьютера и вторичной дисковой памятью.
Важный момент в управлении транзакций является управление параллельностью, т.е. управление процессом организации одновременно выполнение в БД различных операций и гарантии того, что будет исключаться их взаимное влияние друг на друга.
При параллельном выполнении транзакций могут возникнуть следющие проблемы:
Проблема потерянного обновления
Проблема обработки
Проблема зависимости от нефиксированных результатов.
Пример первой проблемы
время |
Транзакция 1 |
Транзакция 2 |
Поле bals |
T1 |
|
Begin transaction |
100 |
T2 |
Begin transaction |
Read (bals) |
100 |
T3 |
Read (bals) |
Bals=bals+100 |
100 |
T4 |
Bals=bals+100 |
Write bals |
200 |
T5 |
Write bals |
commit |
90 |
T6 |
Commit |
|
90 |
Пример второй проблемы
время |
Транзакция 1 |
Транзакция 2 |
Поле bals |
Bals y |
Bals z |
sum |
T1 |
|
Begin transaction |
100 |
50 |
25 |
|
T2 |
Begin transaction |
Sum=0 |
100 |
50 |
25 |
|
T3 |
Read (bal x) |
Read (bals) |
100 |
50 |
25 |
0 |
T4 |
Bals=bal x-10 |
Sum=sum+ bal x |
100 |
50 |
25 |
0 |
T5 |
Write bal x |
Read (bal y) |
100 |
50 |
25 |
0 |
T6 |
Read (bal x) |
Sum=sum+ bal y |
90 |
50 |
25 |
100 |
T7 |
Write bal y |
|
90 |
50 |
25 |
150 |
T8 |
Balz=balz+10 |
|
90 |
50 |
25 |
150 |
T9 |
Write Balz |
Read (bal z) |
90 |
50 |
25 |
150 |
T10 |
Commit |
Sum=sum+balz |
90 |
50 |
25 |
185 |
T11 |
|
Commit |
90 |
50 |
25 |
185 |
Пример третьей проблемы
время |
Транзакция 1 |
Транзакция 2 |
Поле bal x |
T1 |
|
Begin transaction |
100 |
T2 |
|
Read bal x |
100 |
T3 |
|
Bal x=bap x+100 |
100 |
T4 |
Begin transaction |
Write bal x |
200 |
T5 |
Read bal x |
|
|
T6 |
bal x= bal x-10 |
Rall back |
100 |
T7 |
Write bal x |
|
190 |
T8 |
commit |
|
190 |