
- •Интернет-программирование
- •ИП. Базы данных. Реляционная модель
- •ИП. Базы данных. Узкие места реляционной модели
- •ИП. Базы данных. Рост объема данных в мире
- •ИП. Базы данных. Пути решения проблемы Больших Данных
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Распределение вычислений МИЭТ, 2017
- •ИП. БД. Пути решения проблемы BD. Архитектура вычислителя
- •ИП. БД. Пути решения проблемы BD. Модель «хранителя»
- •ИП. БД. Временная диаграмма развития моделей хранения данных МИЭТ, 2017
- •ИП. Базы данных. Модели и представители
- •ИП. БД. SQL и NoSQL
- •ИП. БД. Модель Ключ-Значение
- •ИП. БД. Модель Документо-ориентированная
- •ИП. БД. Модель семейство столбцов (колоночная)
- •ИП. БД. Модель семейство столбцов (колоночная)
- •ИП. БД. Модель Ключ-Значение
- •ИП. БД. SQL или NoSQL
- •ИП. БД. Распространенность моделей
- •ИП. БД. Распространенность моделей
- •ИП. БД. Подключение БД в приложении
- •ИП. БД. Работа с БД на примере MySQL в PHP
- •ИП. БД. Работа с БД на примере MySQL в Java
- •ИП. БД. Работа с БД на примере MySQL в Java
- •ИП. БД. Работа с БД в Java. JDBC
- •ИП. БД. Работа с БД в Java. Типы драйверов JDBC
- •ИП. БД. Работа с БД в Java. Подключение
- •ИП. БД. Работа с БД в Java. URL соединения
- •ИП. БД. Работа с БД в Java. Обработка ошибок
- •ИП. БД. Работа с БД в Java. Категоризация исключений
- •ИП. БД. Работа с БД в Java. ResultSet
- •ИП. БД. Работа с БД в Java. ResultSet. Получение данных
- •ИП. БД. Работа с БД в Java. ResultSet. Автокоммит
- •ИП. БД. Работа с БД в Java. Пакетные операции
- •ИП. БД. Работа с БД в Java. Подготовленные выражения
- •ИП. БД. Работа с БД в Java. Пакетные подготовленные выражения МИЭТ, 2017
- •ИП. БД. Работа с БД в Java. Подготовленные выражения
- •ИП. БД. Работа с БД в Java. Транзакции
- •ИП. БД. Работа с БД в Java. Точки сохранения (savepoint)
- •ИП. БД. Работа с БД в Java. Освобождение точек сохранения
- •ИП. БД. Работа с БД в Java. Параллельное использование БД
- •ИП. БД. Работа с БД в Java. Уровни изоляции транзакций

ИП. БД. Распространенность моделей |
МИЭТ, 2017 |
Распределение результатов (*1000) в Google по запросу: имя базы + "big data"
10000
9000
8000
7000
6000
5000
4000
3000
2000
1000
0
Oracle |
NoSQL |
|
Riak |
MemcacheDB |
HBase |
Hypertable |
Accumulo |
MongoDB |
|
OrientDB |
||
MySQL |
Postgres |
Redis |
Amazon DynamoDB BerkeleyDB |
Cassandra |
SimpleDB |
CouchDB |
Neo4j |
AllegroGrap |
Распределение результатов (*1000) в Yandex по запросу: имя базы + "big data"
60
50
40
30
20
10
0
|
Oracle |
NoSQL |
|
Riak |
Memcache |
HBase |
Hypertable |
Accumulo |
MongoDB |
|
OrientDB |
||
MySQL |
Postgres (sql) |
Redis |
Amazon Dynamo BerkeleyDB |
Cassandra |
SimpleDB |
CouchDB |
Neo4j |
AllegroGrap |
ИП. БД. Подключение БД в приложении |
МИЭТ, 2017 |
Некоторые БД (например, Riak) обеспечивают HTTP интерфейс для работы, что позволяет работать с такими БД как из приложения на сервере, так и
напрямую c веб-страницы загруженой в броузер пользователя с помощью JavaScript и Ajax
Но все обеспечивают работу с серверными приложениями с помощью явно или неявно устанавливаемых драйверов.
Неявная установка это подключение драйвера в среде исполнения приложения.
PHP, файл php.ini, запись - extension=php_mysqli.dll
Явная установка это привязка драйвера к приложению через импорт. Java, файл mysql-connector-java-5.1.24-bin.jar, запись в коде приложения -
Connection conn = DriverManager.getConnection("jdbc:mysql://url:port/db", ...)
ИП. БД. Работа с БД на примере MySQL в PHP |
МИЭТ, 2017 |
//открываем соединение
$link = mysqli_connect('хост','пользователь','пароль','база'); //проверка соединения
if(mysqli_connect_errno()) { //если ошибка
еcho 'Ошибка соединения: '.mysqli_connect_error(); } else {
//если успешно
$res = mysqli_query($link,"SELECT * FROM `таблица`"); if($res) {
//если запрос успешный
while($row = mysqli_fetch_assoc($res)) { //выводим данные
print_r($row);
}
//очищаем память mysqli_free_result($res);
}
//закрываем соединение mysqli_close($link);
}
ИП. БД. Работа с БД на примере MySQL в Java |
МИЭТ, 2017 |
Скачиваем и подключаем в проект библиотеку mysql-connector-java-5.1.24-bin.jar
package javadb;
import java.sql.*;
import java.util.Properties;
public class JavaDB {
public static void main(String[] args) throws SQLException {
Properties props = new Properties(); //готовим логин-пароль props.setProperty("user", "root"); props.setProperty("password", "");
//Открываем соединение
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", props); //Создаем объект, реализующий интерфейс Statement
Statement stmt = conn.createStatement();
//Выполняем запрос и получаем результат в объект типа ResultSet ResultSet rs = stmt.executeQuery("select * from test");
try {
while (rs.next()) {
System.out.printf("%s | %s", rs.getString(1), rs.getString(2));
}
} finally { rs.close(); stmt.close();
}
}
}

ИП. БД. Работа с БД на примере MySQL в Java |
МИЭТ, 2017 |

ИП. БД. Работа с БД в Java. JDBC |
МИЭТ, 2017 |
Java приложение
Клиентское приложение
JDBC драйвер
Сервер СУБД
СУБД
Цель JDBC — унифицировать работу с СУБД для Java приложений
ИП. БД. Работа с БД в Java. Типы драйверов JDBC |
МИЭТ, 2017 |
Тип 1. Реализация доступа к другому какому либо DB API (например, ODBC). Драйвер как правило реализован в виде «нативного» кода. Например: JDBC-ODBC bridge.
Тип 2. Драйвер реализован частично на Java. Пример: Oracle OCI драйвер
Тип 3. Драйвер на «чистой» («pure») Java, реализующий интерфейс к промежуточному серверу по общему протоколу.
Тип 4. Драйвер на «чистой» Java, реализующий конкретный протокол СУБД.
ИП. БД. Работа с БД в Java. Подключение |
МИЭТ, 2017 |
Два способа подключения:
Класс DriverManager
Класс Datasource
Properties props = new Properties(); props.setProperty(«user», «roort»); props.setProperty(«password», «123»);
Connection conn = DriverManager.getConnection(«jdbc:mysql://localhost:3306/mydb», props);
Connection conn = DriverManager.getConnection(«jdbc:derby:db/mydb;create=true», props);
ИП. БД. Работа с БД в Java. URL соединения |
МИЭТ, 2017 |
URL соединения указывает драйверу куда и как подключаться. Синтаксис зависит от драйвера.
Java DB (Derby): dbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
Mysql: jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1] [=propertyValue1][&propertyName2][=propertyValue2]...
ИП. БД. Работа с БД в Java. Обработка ошибок |
МИЭТ, 2017 |
Исключение SQLException:
getMessage() - возвращает сообщение об ошибке
getSQLState() - возвращает код и обозначение ошибки по ISO/ANSI
getErrorCode() - возвращает код ошибки
getNextException() - возвращает следующее исключение в цепочке исключений
try {
//код
}catch(SQLException se) { System.out.println(se.getSQLState());
}catch(Exception e) { System.out.println(e.getMessage());
}