Модуль 2 Рассматриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов Архитектура JDBC слайд 2-1.

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



Advertisements
Похожие презентации
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Advertisements

Модуль 4 Рассматриваемые темы: Понятие транзакции Конкурентный доступ к данным Использование транзакций в JDBC API Транзакции в JDBC API слайд 4-1.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Лекция 22 Лекция 22 Локальные, сетевые и распределенные базы данных. Архитектура «файл- сервер». Двух и трехуровневая архитектура «клиент-сервер». Модель.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Лекция 23 Лекция 23 Схемы распределения данных и запросов. Обработка распределенных данных и запросов. Многопотоковые и многосерверные архитектуры. Типы.
Организация распределенных прикладных систем. Попытаемся ответить на вопросы Как устроены распределенные прикладные системы? Каковы наиболее важные их.
УПРАВЛЕНИЕ РАБОТОЙ ПОДСИСТЕМЫ «ВЕДЕНИЯ». Управление работой подсистемы «Ведения», в основном, сводится к следующему: Основные возможности управление доступом.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Поскольку каждая СУБД является отдельным программным продуктом, для подключения к ней Java использует специальный драйвер, который пишется разработчиками.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Программирование с БД Клиент-серверная архитектура API JDBC.
Опыт реализации отказоустойчивого сервера приложений и хранилища данных на базе СУБД ЛИНТЕР Михаил Ермаков, Дмитрий Мухоедов, РЕЛЭКС.
Модуль 5 Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации Дополнительные возможности JDBC API слайд 5-1.
Технология модели «клиент-сервер». Роли Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса Компьютер, желающий воспользоваться.
Администрирование информационных систем Основы сетевого администрирования.
Разработка и реализация системы семантически-ориентированного поиска с использованием Knowledge.NET Выполнил: Ким Сергей Владимирович
Слайд 1 из 11 Преимущества торговых решений на платформе 1С: Предприятие 8.2 Заржецкий Александр Руководитель департамента автоматизации непродовольственн.
М одели распределенных баз данных. Корпоративные (или intranet) сети являются сетями уровня предприятия, которые можно подключать к сети Internet. Они.
Проектирование информационно-управляющих систем Доцент каф. АСУ, к.т.н. Шилина Мария Анатольевна, asu.ugatu.ac.ru moodle.ugatu.su.
Транксрипт:

Модуль 2 Рассматриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов Архитектура JDBC слайд 2-1

Типы СУБД В данном курсе под СУБД мы будем понимать реляционные СУБД – РСУБД РСУБД могут быть: Клиент-серверными (распределенными) Файловыми (локальными) Типы СУБД слайд 2-2

Файловые СУБД слайд 2-3 Типы СУБД Приложения ОС Машина пользователя Файловый протокол Данные как набор файлов

Клиент-серверные СУБД слайд 2-4 Запрос к СУБД Данные Типы СУБД Прикладное ПО (клиент БД) СУБД

Файловые СУБД просты, но обладают целым рядом недостатков Клиент-серверные СУБД сложнее в разработке и поддержке Но они незаменимы при больших объемах данных и высоких нагрузках В данном курсе под СУБД мы будем понимать клиент-серверные СУБД Выводы по типам СУБД слайд 2-5 Типы СУБД

Схемы взаимодействия с СУБД Можно выделжить две основных схемы взаимодействия с клиент-серверной СУБД: Двухзвенная Трехзвенная слайд 2-6

Схемы взаимодействия с СУБД слайд 2-7 Двухзвенная схема «клиент-сервер» Пользователи СУБД Сетевой протокол Клиентское ПО СУБД (Stand-alone db-client)

Проста и эффективна Проблемы с надежностью Проблемы с нагрузочной масштабируемостью Проблемы с производительностью (в случае многопользовательского клиента) Проблематично реализовать распределенные транзакции Выводы: слайд 2-8 Двухзвенная схема

Схемы взаимодействия с СУБД слайд 2-9 Трехзвенная схема «клиент-сервер» Пользователи СУБД Клиентское ПО (Stand-alone db-client) Промежуточное ПО доступа к СУБД (DB middleware)

За счет потенциальной избыточности: Повышение надежности Повышение нагрузочной масштабируемости Повышение производительности За счет централизации: Возможность распределенных транзакций Повышение безопасности Повышение производительности (в случае многопользовательского клиента) Усложнение схемы доступа к СУБД Выводы: слайд 2-10 Трехзвенная схема

слайд 2-11 Схемы доступа Веб-пользователи СУБД Клиентское ПО (веб-браузер) Промежуточное ПО доступа к СУБД (DB middleware) БД-пользователи Клиентское ПО (клиент СУБД) Сервер приложений (веб)

слайд 2-12 Схемы доступа На платформе J2EE: JDBC-сервис (расширение JDBC в J2EE) JDBC-сервис (расширение JDBC в J2EE) JDBC Browser 1..N

Архитектура JDBC Рассматриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов слайд 2-13

Java DataBase Connectivity API слайд 2-14 JDBC API JDBC – Java API для взаимодействия с СУБД JDBC API – стандартен, регламентируется компанией Sun JDBC – неотъемлемая часть платформы J2SE Технологически JDBC API представляет собой набор Java-классов и интерфейсов, включен в JRE ( rt.jar )

JDBC 1.2 поддерживает стандарты SQL/89, SQL/92 JDBC абстрагирует разработчика от нюансов конкретного типа СУБД Это повышает переносимость программ При желании разработчик может использовать специфические детали СУБД слайд 2-15 JDBC API JDBC – абстрактный API

(Расширения JDBC для J2EE находятся в пакете javax.sql ) слайд 2-16 Пакет java.sql

Разработчик в прикладной программе по большей части будет работать с интерфейсами Эти интерфейсы – часть JDBC API Такой подход способствует повышению переносимости программ слайд 2-17 JDBC API Интерфейсы

Архитектура JDBC Рассматриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов слайд 2-18

Драйвер реализует native-протокол взаимодействия с СУБД Разработчику драйвер афиширует стандартный (регламентированный в JDBC API) интерфейс Драйвер – это Java-класс JDBC-драйвер – необходимый элемент любой JDBC-программы слайд 2-19 JDBC-драйвер

слайд 2-20 JDBC-драйвер Сервер БД JVM Heap Экземпляры классов разработчика JDBC-интерфейс Экземпляр JDBC-драйвера DB-native протокол

Кто пишет класс JDBC-драйвера? Регламентирован ли протокол взаимодействия с СУБД? Унифицирован ли интерфейс драйвера? Как создавать объект драйвера так, чтобы не hardcod-жить имя класса драйвера в коде приложения? слайд 2-21 JDBC-драйвер Вопросы

Класс JDBC-драйвера пишет, как правило, разработчик СУБД или третья сторона, энтузиасты Протокол взаимодействия с СУБД – детали функционирования конкретной СУБД, зачастую он проприетарный Для загрузки класса драйвера удобно использовать механизм Reflection слайд 2-22 JDBC-драйвер Выводы

В случае использования нескольких драйверов возникает множество рутинных задач их отслеживания и менеджмента Это проблематично при компонентной разработке Выход – централизация всех драйверов в данной JVM слайд 2-23 JDBC-драйвера Проблемы

Класс DriverManager является уровнем управления в JDBC и находится между пользователем и драйверами Он отслеживает все доступные драйверы и управляет установлением соединений между БД и соответствующим драйвером Реализует шаблон Singleton слайд 2-24DriverManager Централизация всех драйверов в данной JVM

слайд 2-25DriverManager Сервер БД JVM Heap Экземпляры классов разработчика Экземпляры JDBC-драйверов DriverManager Каждый экземпляр драйвера зарегистрирован в DriverManager DriverManager. getConnection(…) DB-native протокол

Можно вручную зарегистрировать драйвер в DriverManager : Но можно автоматизировать этот процесс: В спецификации указано, что драйвер должен самостоятельно регистрировать себя в DriverManager при загрузке его класса Поэтому достаточно просто загрузжить класс драйвера слайд 2-26 Регистрация в DriverManager DriverManager.registerDriver( new MyDriver () ); MyDBClient.java

Создать его экземпляр: Воспользоваться механизмом Reflection: Какие плюсы и минусы этих подходов? слайд 2-27 Загрузка классов драйверов Для загрузки класса драйвера можно: new MyDriver (); MyDBClient.java Class.forName( MyDriver ); //или Class theDriver = MyDriver.class; MyDBClient.java

Использовать свойство (property) JVM jdbc.drivers : DriverManager подгружает их при инициализации Первый же вызов метода класса DriverManager повлечет за собой загрузку и регистрацию этих драйверов слайд 2-28 Загрузка классов драйверов Оптимальный вариант: java -Djdbc.drivers= MyDriver1 ; MyDriver2 MyDBClient Command prompt

Для инициализации JDBC-драйвера следует загрузжить его класс При загрузке класса драйвера он самостоятельно зарегистрирует себя в DriverManager Оптимальный вариант загрузки классов – не делать это вручную, а указать список драйверов в свойстве JVM jdbc.drivers при запуске программы слайд 2-29 Инициализация драйверов Выводы

DB-URL однозначно идентифицирует источник данных (базу данных) DB-URL принимается JDBC- драйвером Формат DB-URL рекомендуется компанией Sun разработчикам СУБД и JDBC-драйверов слайд 2-30 Установка соединения с СУБД Понятие DB-URL (или JDBC-URL)

subprotocol тип драйвера JDBC (производителя) и механизма взаимодействия с сервером БД subname идентификатор источника данных (базы данных) слайд 2-31 Установка соединения с СУБД Формат DB-URL jdbc:subprotocol:subname DB-URL

слайд 2-32 Установка соединения с СУБД Примеры DB-URL jdbc:pointbase:server://dbhost:9092/HRDATABASE Pointbase DBMS Oracle DBMS jdbc:odbc:myAccessDB Источник данных ODBC jdbc:msql://db_host:1114/db_test MySQL DBMS

слайд 2-33 Установка соединения с СУБД Каракас типичной программы import java.sql.*; public static void main(String[] args){ try{ Class.forName( com.pointbase.jdbc.jdbcUniversalDriver ); Connection connection = DriverManager.getConnection( jdbc:pointbase:server:// :9092/HRDB ); //Бизнес-логика omitted connection.close(); }catch(Exception e){ e.printStackTrace(); } } MyDBClient.java

слайд 2-34 Установка соединения с СУБД Исключения Почти каждый метод в JDBC API выбрасывает явные (explicit) исключения Поэтому разработчик обязан обрабатывать их На данном этапе нас интересуют два исключения: ClassNotFoundException SQLException ,

слайд 2-35 Установка соединения с СУБД Сервер БД JVM Heap Экземпляры классов разработчика Экземпляры JDBC-драйверов DriverManager Каждый экземпляр драйвера зарегистрирован в DriverManager DriverManager.getConnection( jdbc:pointbase: ) DB-native протокол

Как DriverManager узнает, через какой именно драйвер устанавливать соединение? Их же может быть загружено множество? слайд 2-36 Установка соединения с СУБД Вопрос по 6 этапу

DriverManager.getConnetion() получает DB-URL DriverManager опрашивает все зарегистрированные драйвера, кто из них отвечает за данный под протокол Первый откликнувшийся и будет использован для установки соединения Возвращается интерфейс Connection слайд 2-37 Установка соединения с СУБД Выводы по 6 этапу jdbc:pointbase:server://dbhost:9092/HRDATABASE Pointbase DB-URL

слайд 2-38 Установка соединения с СУБД Сервер БД Экземпляры классов разработчика Загруженные экземпляры JDBC-драйверов DriverManager опрашивает драйвера, кто отвечает за данный под протокол. Первый откликнувшийся и будет использован для установки соединения. DriverManager.getConnection( jdbc:pointbase: ) Стандартный интерфейс драйвера Возвращается объект, реализующий стандартный интерфейс Connection. Класс реализации - ? 8 8

DriverManager.getConnection() имеет три варианта: Свойства – это пары «ключ-значение» Наборы свойств специфичны для СУБД слайд 2-39 Установка соединения с СУБД Свойства соединения DriverManager.getConnection(String DBURL ) DriverManager.getConnection(String DBURL, Properties props ) DriverManager.getConnection(String DBURL, String user, String password )

слайд 2-40 Установка соединения с СУБД Свойства соединения – примеры Драйвер Свойства соединения Oracleuser, password, servername Sybaseuser, password, servername, portnumber MSSQL4user, password, servername Informixuser, password, databasename, informixserver, servername, portnumber PointBasecache.size, crypto.communication, database.home, databse.pagesize

Разработчик может не закрывать соединение явно. Это сделает сборщик мусора JVM при удалении java-объекта соединения Но разработчику следует явно закрывать соединения Почему? слайд 2-41 Установка соединения с СУБД Закрытие соединения connection.close(); MyDBClient.java

Разработчику следует явно закрывать соединения Каждое соединение – ресурсы на стороне БД Ресурсы эти ограничены Следует минимизировать время использования соединения в клиенте БД Но слишком частые открытия/закрытия соединений будут затормаживать работу клиента (для двухзвенной схемы) Следует соблюдать баланс слайд 2-42 Установка соединения с СУБД Закрытие соединения

слайд 2-43 Установка соединения с СУБД Выводы import java.sql.*; public static void main(String[] args){ try{ Class.forName( com.pointbase.jdbc.jdbcUniversalDriver ); Connection connection = DriverManager.getConnection( jdbc:pointbase:server:// :9092/HRDB, admin, admin ); //Бизнес-логика omitted connection.close(); }catch(Exception e){ e.printStackTrace(); } } MyDBClient.java

Архитектура JDBC Рассмотриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов слайд 2-44

слайд 2-45 Типы JDBC-драйверов Спецификация регламентирует четыре типа JDBC-драйверов:

слайд 2-46 Типы JDBC-драйверов Type 1 – JDBC-ODBC Bridge Сервер БД JVM Heap Экземпляры классов разработчика JDBC-интерфейс JDBC-драйвер 1 типа DB-native протокол ОС Windows ODBC Драйвер ODBC Драйвер Источник данных ODBC, использующий ODBC-драйвер Протокол ODBC

слайд 2-47 Типы JDBC-драйверов Type 1 – JDBC-ODBC Bridge Класс этого драйвера включен в JRE Для его использования необходимо настрожить источник данных ODBC в Windows В коде клиента необходимо использовать следующую DB-URL: jdbc:odbc:MyODBCDataSource DB-URL для ODBC

слайд 2-48 Типы JDBC-драйверов Type 2 – JDBC-native Bridge Сервер БД JVM Heap Экземпляры классов разработчика JDBC-интерфейс JDBC-драйвер 2 типа DB-native протокол ОС Native драйвер или native-API Native драйвер или native-API Driver-native протокол

слайд 2-49 Типы JDBC-драйверов Type 2 – JDBC-native Bridge Класс этого драйвера пишется производителем СУБД или третьей стороной Сначала необходимо на выбранной ОС правильно установжить и сконфигурировать native-драйвер для выбранной СУБД (или native-API) Возникают сложности с переносимостью

слайд 2-50 Типы JDBC-драйверов Type 4 – Pure-java driver (thin driver) Сервер БД JVM Heap Экземпляры классов разработчика JDBC-интерфейс JDBC-драйвер 4 типа DB-native протокол ОС

слайд 2-51 Типы JDBC-драйверов Type 4 – Pure-java driver (thin driver) Драйвер целиком написан на Java Достигается отличная переносимость клиентов

слайд 2-52 Типы JDBC-драйверов Type 3 – JDBC-Net driver Сервер БД JVM Heap Экземпляры классов разработчика JDBC-интерфейс JDBC-драйвер 3 типа ОС DB middleware Сервер БД Middleware-native протокол DB-native протокол

слайд 2-53 Типы JDBC-драйверов Type 3 – JDBC-Net driver Реализует трехуровневую схему доступа к СУБД Взаимодействует с JDBC-сервисом J2EE-контейнера

слайд 2-54 Типы JDBC-драйверов Выводы

Архитектура JDBC Рассмотренные темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов слайд 2-55