Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемОксана Эрастова
1 Saint Petersburg, 2012 Java Lecture # 7 DB. JDBC
2 Database Model Иерархическая (Hierarchical) Сетевая (Network) Объектная (Object ) Реляционная (Relational) Объектно-Реляционная (Object-relational) XML 2
3 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
4 Relational DB Э. Кодд 1970 Relations – Table; Tuple – Row; Attribute - Column Constrains PK FK Нормализация 1NF – 3NF BCNF (Бойса - Кодда) 4NF 5NF DKNF (Доменно-ключевая) 4
5 1 NF Отношение находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. (c) 5 СотрудникНомер телефона Иванов И. И Петров П. П СотрудникНомер телефона Иванов И. И Иванов И. И Петров П. П
6 2 NF Отношение находится в первой нормальной форме Любое неключевое поле полностью зависит от ключа 6 СотрудникДолжностьЗарплата Наличие компьютера ГришинКладовщик20000Нет Васильев Программис т 40000Есть ИвановКладовщик25000Нет СотрудникДолжностьЗарплата ГришинКладовщик20000 Васильев Программис т ИвановКладовщик25000 Должность Наличие компьютера КладовщикНет ПрограммистЕсть
7 3 NF & BCNF Отношение находится во второй нормальной форме Нет неключевых полей зависящих от значения других неключевых полей 7 СотрудникОтделТелефон ГришинБухгалтерия ВасильевБухгалтерия ПетровСнабжение
8 3 NF & BCNF BCNF Отношение находится в третьей нормальной форме Отсутствуют зависимости атрибутов первичного ключа от неключевых атрибутов 8 ОтделТелефон Бухгалтерия Снабжение СотрудникОтдел ГришинБухгалтерия ВасильевБухгалтерия ПетровСнабжение
9 Transactions ACID Atomicity в контексте транзакции либо выполняются все действия, либо не выполняется ни одно из них. Либо происходит commit (фиксация), либо rollback (откат). Consistency системные ресурсы должны пребывать в целостном и непротиворечивом состоянии как до начала транзакции, так и после ее окончания. 9
10 Transactions Isolation промежуточные результаты транзакции должны быть закрыты для доступа со стороны любой другой действующей транзакции до момента фиксации. Durability результат выполнения завершенной транзакции не должен быть утрачен ни при каких условиях. 10
11 Isolation problems Потерянное обновление (lost update): «Грязное» чтение (dirty read) чтение данных, которые были записаны откаченной транзакцией: 11
12 Isolation problems Неповторяющееся чтение (non-repeatable read); Фантомное чтение (phantom reads). 12
13 Isolation levels Read uncommitted Read committed Repeatable read Serializable 13
14 Isolation levels Read uncommitted: разрешает грязные чтения, но без потери обновлений. Одна транзакция может не писать в строку, если другая незафиксированная транзакция уже записывает туда. Однако, любая транзакция может читать любые строки. Read committed : разрешает неповторяемые чтения, но не грязные чтения. Это может быть достигнуто с помощью мгновенных общих блокировок чтения и эксклюзивной блокировки записи. Однако, незафиксированные пишущие транзакции блокируют все другие транзакции на доступ к строке. 14
15 Isolation levels Repeatable read : не допускает ни неповторяемого чтения, ни грязного чтения. Фантомное чтение может произойти. Это может быть достигнуто с использованием общих блокировок на чтение и эксклюзивной блокировки на запись. Serializable : обеспечивает строгую изоляцию транзакций. Эмулирует последовательное выполнение операций, как если бы операция была выполнена одна за другой последовательно, а не параллельно.. 15
16 Isolation levels Выбор уровня изоляции зависит от конкретной задачи 16
17 Блокировки Блокировка - это установка метки на запись, что запись заблокирована для изменений. Оптимистичная Реальной блокировки не происходит. Для реализации оптимистичной блокировки часто используется версионирование данных - в таблицу добавляется колонка, которая хранит текущую версию. Пессимистичная Для записи ставится эксклюзивная блокировка на уровне базы данных, запрещая таким образом доступ к данным из других транзакций. Блокировка при чтении Блокировка при записи 17
18 JDBC JDBC: Java Data Base Connectivity 18 Платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE. (c)
19 JDBC JDBC в архитектурном разрезе 19
20 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 нужно открывать
21 Connection 21 Основной интерфейс для работы с базой данных Является ограниченным невозобновляемым ресурсом
22 Connection 22 Connection нужно закрывать
23 Connection 23 Connection нужно закрывать правильно
24 Connection Pool Cache of database connections Повышается performance – connections создаются сразу, а не по запросу Уменьшает время ожидания Обычно используется в web и enterprise приложениях Управляется application serverом 24
25 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.
26 Statements 26 Statement – простое исполнение статических SQL запросов.
27 PreparedStatement 27 PreparedStatement – исполнение скомпилированных запросов Выполняется быстрее, чем Statement Предохраняет от SQL Injection Подобный шаблон используется в Hibernate и JPA
28 CallableStatement 28 CallableStatement – исполнение хранимых процедур
29 ResultSet 29 ResultSet: курсор текущего запроса Является мощным средством для итерации по набору данных
30 ResultSetMetaData 30 Предоставляет мета данные запроса
31 Общие правила На 1 Statement – 1 ResultSet Открыл – закрой Statement можно (и даже нужно) использовать повторно В серьезных проектах использовать только PreparedStatement Помнить про транзакцию 31
32 Архитектура доступа к данным Смешивание SQL кода и реализации является в Java антипаттерном (недействительно в Индии ) Ни в коем случае не допускается вызов SQL из view или controller (MVC) Соединения лучше пуллировать А еще лучше использовать типовые решения 32
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.