ݺߣ

ݺߣShare a Scribd company logo
Стажировка-2015
Транзакции в БД, работа с БД
из Java-приложения
Занятие 12
Стажировка-2015
Пример: в БД студентов нужно
сменить старосту группы, не
нарушая условие, что в каждый
момент времени в группе
ровно 1 староста.
Транзакции
Стажировка-2015
Транзакция – группа
последовательных операций,
которая логически неделима, и
выполняется целиком или не
выполняется вовсе.
Транзакции
Стажировка-2015
Atomicity (атомарность) –
гарантирует, что транзакция
фиксируется в системе только
полностью (гарантируется
СУБД).
Свойства транзакций
Стажировка-2015
Consistency (согласованность) –
если система находилась в
согласованном состоянии до
транзакции, то будет в этом
состоянии и после фиксации
транзакции (зависит от
разработчиков).
Свойства транзакций
Стажировка-2015
Isolation (изолированность) –
гарантирует, что параллельно
исполняющиеся транзакции могут
видеть только разрешенные
данные друг друга (гарантируется
СУБД, управляется
разработчиками).
Свойства транзакций
Стажировка-2015
Durability (надежность) –
гарантирует, что результат
зафиксированной транзакции
останется в системе даже после
отключения питания
(гарантируется СУБД).
Свойства транзакций
Стажировка-2015
DB server
Соединение (connection)
Память
Параллельные транзакции
Стажировка-2015
select * from
student where id = 3;
delete from
student where id = 3;
Параллельные транзакции
Стажировка-2015
Non-repeatable read
(неповторяемое чтение) – при
повторном чтении данных в
рамках транзакции они могут
оказаться удаленными или
измененными другой
транзакцией.
Проблемы параллельных транзакций
Стажировка-2015
Phantom reads (фантомное
чтение) – при повторном чтении
одних и тех же данных в рамках
транзакции возможны отличия
(новые строки, значения столбцов
и т.д.).
Проблемы параллельных транзакций
Стажировка-2015
Lost update (потерянное
обновление) – при
параллельном обновлении
одних и тех же данных одно из
обновлений теряется.
Проблемы параллельных транзакций
Стажировка-2015
Dirty read («грязное» чтение) –
чтение незафиксированных
данных другой транзакции,
которая в последствии
откатится.
Проблемы параллельных транзакций
Стажировка-2015
Serializable (упорядоченный) –
идентичен ситуации, когда все
транзакции выполняются строго
последовательно. Решает все
упомянутые проблемы.
Уровни изолированности транзакций
Стажировка-2015
Repeatable read (повторяемое
чтение) – гарантирует
повторяемость чтения, отсутствие
«грязного» чтения и отсутствие
потерянных обновлений.
Возможны фантомные чтения.
Уровни изолированности транзакций
Стажировка-2015
Read commited (чтение
зафиксированных данных) –
гарантирует отсутствие «грязного»
чтения и потерянных обновлений.
Возможны фантомные и
неповторяемые чтения.
Уровни изолированности транзакций
Стажировка-2015
Read uncommited (чтение
незафиксированных данных) –
гарантирует отсутствие
потерянных обновлений.
Возможны «грязные», фантомные
и неповторяемые чтения.
Уровни изолированности транзакций
Стажировка-2015
«+» - предотвращает, «-» - нет
Уровни изолированности транзакций
Стажировка-2015
Операция установления
соединения с БД – очень
«дорогая» по времени и
ресурсам
Соединения приложения с БД
Стажировка-2015
Пул соединений (connection pool)
– модуль, осуществляющий
контроль за открытием,
переиспользованием и закрытием
подключений к БД
Соединения приложения с БД
Стажировка-2015
Транзакции приложений
работают в рамках
соединений.
Соединения приложения с БД
Стажировка-2015
Connection pool для Java: dbcp
Соединения приложения с БД
Стажировка-2015
Ссылка только для
авторизованных
Пример работы с БД в Spring
Стажировка-2015
Email: at@7bits.it
Skype: anna_tarasenko
Web: 7bits.ru
Вопросы?

More Related Content

Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из приложения