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

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

  • Upload
    7bits

  • View
    216

  • Download
    5

Embed Size (px)

Citation preview

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

Стажировка-2015

Транзакции в БД, работа с БД из Java-приложения

Занятие 12

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

Стажировка-2015

Пример: в БД студентов нужно сменить старосту группы, не нарушая условие, что в каждый момент времени в группе ровно 1 староста.

Транзакции

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

Стажировка-2015

Транзакция – группа последовательных операций, которая логически неделима, и выполняется целиком или не выполняется вовсе.

Транзакции

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

Стажировка-2015

Atomicity (атомарность) – гарантирует, что транзакция фиксируется в системе только полностью (гарантируется СУБД).

Свойства транзакций

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

Стажировка-2015

Consistency (согласованность) – если система находилась в согласованном состоянии до транзакции, то будет в этом состоянии и после фиксации транзакции (зависит от разработчиков).

Свойства транзакций

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

Стажировка-2015

Isolation (изолированность) – гарантирует, что параллельно исполняющиеся транзакции могут видеть только разрешенные данные друг друга (гарантируется СУБД, управляется разработчиками).

Свойства транзакций

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

Стажировка-2015

Durability (надежность) – гарантирует, что результат зафиксированной транзакции останется в системе даже после отключения питания (гарантируется СУБД).

Свойства транзакций

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

Стажировка-2015

DB server

Соединение (connection)

Память

Параллельные транзакции

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

Стажировка-2015

select * fromstudent where id = 3;

delete fromstudent where id = 3;

Параллельные транзакции

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

Стажировка-2015

Non-repeatable read (неповторяемое чтение) – при повторном чтении данных в рамках транзакции они могут оказаться удаленными или измененными другой транзакцией.

Проблемы параллельных транзакций

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

Стажировка-2015

Phantom reads (фантомное чтение) – при повторном чтении одних и тех же данных в рамках транзакции возможны отличия (новые строки, значения столбцов и т.д.).

Проблемы параллельных транзакций

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

Стажировка-2015

Lost update (потерянное обновление) – при параллельном обновлении одних и тех же данных одно из обновлений теряется.

Проблемы параллельных транзакций

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

Стажировка-2015

Dirty read («грязное» чтение) – чтение незафиксированных данных другой транзакции, которая в последствии откатится.

Проблемы параллельных транзакций

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

Стажировка-2015

Serializable (упорядоченный) – идентичен ситуации, когда все транзакции выполняются строго последовательно. Решает все упомянутые проблемы.

Уровни изолированности транзакций

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

Стажировка-2015

Repeatable read (повторяемое чтение) – гарантирует повторяемость чтения, отсутствие «грязного» чтения и отсутствие потерянных обновлений. Возможны фантомные чтения.

Уровни изолированности транзакций

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

Стажировка-2015

Read commited (чтение зафиксированных данных) – гарантирует отсутствие «грязного» чтения и потерянных обновлений. Возможны фантомные и неповторяемые чтения.

Уровни изолированности транзакций

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

Стажировка-2015

Read uncommited (чтение незафиксированных данных) – гарантирует отсутствие потерянных обновлений. Возможны «грязные», фантомные и неповторяемые чтения.

Уровни изолированности транзакций

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

Стажировка-2015

«+» - предотвращает, «-» - нет

Уровни изолированности транзакций

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

Стажировка-2015

Операция установления соединения с БД – очень «дорогая» по времени и ресурсам

Соединения приложения с БД

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

Стажировка-2015

Пул соединений (connection pool) – модуль, осуществляющий контроль за открытием, переиспользованием и закрытием подключений к БД

Соединения приложения с БД

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

Стажировка-2015

Транзакции приложений работают в рамках

соединений.

Соединения приложения с БД

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

Стажировка-2015

Connection pool для Java: dbcp

Соединения приложения с БД

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

Стажировка-2015

Ссылка только для авторизованных

Пример работы с БД в Spring

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

Стажировка-2015

Email: [email protected]: anna_tarasenkoWeb: 7bits.ru

Вопросы?