Saint Petersburg, 2012 Java Lecture # 7 DB. JDBC.

Презентация:



Advertisements
Похожие презентации
Saint Petersburg, 2011 Java Lecture #A01 JDBC. Транзакции ACID: Atomicity, Consistency, Isolation, Durability Atomicity: в контексте транзакции либо выполняются.
Advertisements

Уровень баз данных Введение в РСУБД. Содержание Что такое база данных? СУБД и РСУБД Транзакции ACID свойства транзакций Уровни изоляции в транзакциях.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.

Лекция 25 Лекция 25 Понятие целостности базы данных. Условия целостности. Транзакции. Обработка транзакций. Свойства транзакций. Модель ANSI/ISO. Назначение.
Транзакции Транзакция - это последовательность операций, производимых над базой данных и переводящих базу данных из одного непротиворечивого (согласованного)
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Расширенные темы 1. SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими.
Типовые расчёты Растворы
Нормализация таблиц реляционной базы данных © Панова И.В
ACID – свойства транзакций 1.Атомарность 2.Согласованность 3.Изолированность 4.Долговечность create table AccountInfo(Name varchar2(100), Account number(10));
Модуль 4 Рассматриваемые темы: Понятие транзакции Конкурентный доступ к данным Использование транзакций в JDBC API Транзакции в JDBC API слайд 4-1.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Базы данных Лекция 05 Основные понятия реляционных баз данных.
1 Трудные случаи таблицы умножения и деления 2 Приношу свои извинения, но придётся начать заново!
1. Определить последовательность проезда перекрестка
Маршрутный лист «Числа до 100» ? ? ?
Транксрипт:

Saint Petersburg, 2012 Java Lecture # 7 DB. JDBC

Database Model Иерархическая (Hierarchical) Сетевая (Network) Объектная (Object ) Реляционная (Relational) Объектно-Реляционная (Object-relational) XML 2

Database Requirements Data structure Data modeling DDL (CREATE, DROP, ALTER) Manipulate data DML (SELECT, INSERT, UPDATE, DELETE) QL (e.g. SQL) Data protection Availability Performance Isolation Recovery Backup and restore 3

Relational DB Э. Кодд 1970 Relations – Table; Tuple – Row; Attribute - Column Constrains PK FK Нормализация 1NF – 3NF BCNF (Бойса - Кодда) 4NF 5NF DKNF (Доменно-ключевая) 4

1 NF Отношение находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. (c) 5 СотрудникНомер телефона Иванов И. И Петров П. П СотрудникНомер телефона Иванов И. И Иванов И. И Петров П. П

2 NF Отношение находится в первой нормальной форме Любое неключевое поле полностью зависит от ключа 6 СотрудникДолжностьЗарплата Наличие компьютера ГришинКладовщик20000Нет Васильев Программис т 40000Есть ИвановКладовщик25000Нет СотрудникДолжностьЗарплата ГришинКладовщик20000 Васильев Программис т ИвановКладовщик25000 Должность Наличие компьютера КладовщикНет ПрограммистЕсть

3 NF & BCNF Отношение находится во второй нормальной форме Нет неключевых полей зависящих от значения других неключевых полей 7 СотрудникОтделТелефон ГришинБухгалтерия ВасильевБухгалтерия ПетровСнабжение

3 NF & BCNF BCNF Отношение находится в третьей нормальной форме Отсутствуют зависимости атрибутов первичного ключа от неключевых атрибутов 8 ОтделТелефон Бухгалтерия Снабжение СотрудникОтдел ГришинБухгалтерия ВасильевБухгалтерия ПетровСнабжение

Transactions ACID Atomicity в контексте транзакции либо выполняются все действия, либо не выполняется ни одно из них. Либо происходит commit (фиксация), либо rollback (откат). Consistency системные ресурсы должны пребывать в целостном и непротиворечивом состоянии как до начала транзакции, так и после ее окончания. 9

Transactions Isolation промежуточные результаты транзакции должны быть закрыты для доступа со стороны любой другой действующей транзакции до момента фиксации. Durability результат выполнения завершенной транзакции не должен быть утрачен ни при каких условиях. 10

Isolation problems Потерянное обновление (lost update): «Грязное» чтение (dirty read) чтение данных, которые были записаны откаченной транзакцией: 11

Isolation problems Неповторяющееся чтение (non-repeatable read); Фантомное чтение (phantom reads). 12

Isolation levels Read uncommitted Read committed Repeatable read Serializable 13

Isolation levels Read uncommitted: разрешает грязные чтения, но без потери обновлений. Одна транзакция может не писать в строку, если другая незафиксированная транзакция уже записывает туда. Однако, любая транзакция может читать любые строки. Read committed : разрешает неповторяемые чтения, но не грязные чтения. Это может быть достигнуто с помощью мгновенных общих блокировок чтения и эксклюзивной блокировки записи. Однако, незафиксированные пишущие транзакции блокируют все другие транзакции на доступ к строке. 14

Isolation levels Repeatable read : не допускает ни неповторяемого чтения, ни грязного чтения. Фантомное чтение может произойти. Это может быть достигнуто с использованием общих блокировок на чтение и эксклюзивной блокировки на запись. Serializable : обеспечивает строгую изоляцию транзакций. Эмулирует последовательное выполнение операций, как если бы операция была выполнена одна за другой последовательно, а не параллельно.. 15

Isolation levels Выбор уровня изоляции зависит от конкретной задачи 16

Блокировки Блокировка - это установка метки на запись, что запись заблокирована для изменений. Оптимистичная Реальной блокировки не происходит. Для реализации оптимистичной блокировки часто используется версионирование данных - в таблицу добавляется колонка, которая хранит текущую версию. Пессимистичная Для записи ставится эксклюзивная блокировка на уровне базы данных, запрещая таким образом доступ к данным из других транзакций. Блокировка при чтении Блокировка при записи 17

JDBC JDBC: Java Data Base Connectivity 18 Платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE. (c)

JDBC JDBC в архитектурном разрезе 19

JDBC 20 Строка соединения с базой: jdbc: : Subprotocol: oracle, mysql, odbc, firebird jdbc:odbc:dsn_name;UID=your_uid;PWD=your_pwd jdbc:mysql://host_name:port/dbname ce_name Connection нужно открывать

Connection 21 Основной интерфейс для работы с базой данных Является ограниченным невозобновляемым ресурсом

Connection 22 Connection нужно закрывать

Connection 23 Connection нужно закрывать правильно

Connection Pool Cache of database connections Повышается performance – connections создаются сразу, а не по запросу Уменьшает время ожидания Обычно используется в web и enterprise приложениях Управляется application serverом 24

Statements 25 Statement - the object used for executing a static SQL statement and returning the results it produces Prepared Statement - an object that represents a precompiled SQL statement Callable Statement - the interface used to execute SQL stored procedures.

Statements 26 Statement – простое исполнение статических SQL запросов.

PreparedStatement 27 PreparedStatement – исполнение скомпилированных запросов Выполняется быстрее, чем Statement Предохраняет от SQL Injection Подобный шаблон используется в Hibernate и JPA

CallableStatement 28 CallableStatement – исполнение хранимых процедур

ResultSet 29 ResultSet: курсор текущего запроса Является мощным средством для итерации по набору данных

ResultSetMetaData 30 Предоставляет мета данные запроса

Общие правила На 1 Statement – 1 ResultSet Открыл – закрой Statement можно (и даже нужно) использовать повторно В серьезных проектах использовать только PreparedStatement Помнить про транзакцию 31

Архитектура доступа к данным Смешивание SQL кода и реализации является в Java антипаттерном (недействительно в Индии ) Ни в коем случае не допускается вызов SQL из view или controller (MVC) Соединения лучше пуллировать А еще лучше использовать типовые решения 32