- •Интернет-программирование
- •ИП. БД. Пути решения проблемы BD. Модель «хранителя»
- •ИП. Базы данных. Реляционная модель
- •ИП. Базы данных. Узкие места реляционной модели
- •ИП. Базы данных. Рост объема данных в мире
- •ИП. Базы данных. Пути решения проблемы Больших Данных
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Распределение вычислений МИЭТ, 2017
- •ИП. БД. Пути решения проблемы 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
BigData
Прекращение роста частоты
Реляционные SQL
Не реляционные SQL
2005 2008
1970 |
2000 |
2010 |
ИП. Базы данных. Модели и представители |
МИЭТ, 2017 |
ИП. БД. SQL и NoSQL
Базы данных
Реляционные |
Не реляционные |
SQL |
NoSQL |
Oracle, MySQL,
SQLLite, MSSQL,
Posgress
Ключ |
Семейство |
Документо |
-значение |
колонок |
-ориентированная |
Riak |
MongoDB |
Cassandra |
МИЭТ, 2017
Графовая
Neo4j
ИП. БД. Модель Ключ-Значение |
МИЭТ, 2017 |
ключ
значение
Особенности СУБД модели ключ-значение
СУБД не знает о структуре значения. Поэтому, допустимые операции со значением:
поиск слова внутри значения
СУБД может работать со сложными ключами. Допустимые операции с ключами:
выборку по ключу (точное совпадение)
фильтрация по значению ключа (например, выбрать все ключи, начинающиеся с f)
Сложные ключи позволяют осуществлять сегментацию данных по узлам. Например, первые n символов ключа можно определить как номер узла хранения
распределенной БД.
Преимущества: |
Недостатки: |
|
Наивысшая скорость |
Не подходит, когда нужно получать |
|
|
Наивысшая масштабируемость |
выборки по содержимому/структуре |
|
Отсутствие структуры значений |
значения |
Применение: хранение данных сессий, корзин, профилей
Представители: Riak, Redis
ИП. БД. Модель Документо-ориентированная |
МИЭТ, 2017 |
|
Значение, |
ключ |
это документ |
имеющий |
|
|
структуру |
Особенности СУБД документо-ориентированной модели
Значение это документ имеющий структуру (XML, JSON), при этом ограничений на единообразность структур не накладывается
СУБД может работать со значением. Поэтому, кроме операций допустимых с моделью ключ-значение допустимые дополнительные операции со значением:
выборки по значению и иерархии узлов документа
сериализия/десиарилизия (например в/из JSON)
СУБД может работать с ключами также как и в модели ключ-значение
Преимущества: Недостатки:
Хорошая скорость |
Плохо подходит, когда требуются операции |
|
|
Хорошая масштабируемость |
подразумевающие совместное зависимое |
|
Возможность работать со |
использование документов, а также при необходимости |
|
структурой значений |
централизованных изменений структур документов |
Применение: быстрая запись того, что возможно исследовать потом в «более спокойной» обстановке: регистрация событий (в том числе с изменяющейся
структурой) для последующего анализа, а также анализа в реальном времени (в этом случае идет обновление соответствующих документов)
Представители: MongoDB, CouchDB
ИП. БД. Модель семейство столбцов (колоночная) |
МИЭТ, 2017 |
Ключ строки |
Ключ столбца 1 |
Ключ столбца 2 |
Не заполнено |
Значение |
Значение |
||
|
Метка времени |
Метка времени |
|
Ключ строки |
Ключ столбца 1 |
Ключ столбца 3 |
Значение |
Не заполнено Значение |
|
|
Метка времени |
Метка времени |
Ключ строки 
Не заполнено |
Не заполнено |
Не заполнено |
Есть ограничения на структуру документов
Семейство столбцов
Не заполнено
Не заполнено
Ключ столбца 4 Значение = массив столбцов
Ключ столбца 4.1 |
Ключ столбца 4.2 |
Значение |
Значение |
Метка времени |
Метка времени |
Метка времени
ИП. БД. Модель семейство столбцов (колоночная) |
МИЭТ, 2017 |
Особенности СУБД документо-ориентированной модели
Значение это это семейство столбцов, каждый из которых имеет ключ и значение
Значение столбца может быть простым или ассоциативным массивом столбцов
СУБД может работать со значением. Поэтому, кроме операций допустимых с моделью ключ-значение допустимые дополнительные операции со значением:выборки по ключам столбцов
СУБД может работать с ключами также как и в модели ключ-значение
Преимущества: |
Недостатки: |
Приемлемая скорость |
Ограничения на структуру значений |
Хорошая масштабируемость |
Избыточное извлечение данных |
Работа со значениями |
Трудности изменения шаблонов |
Ограниченная модификация |
запросов (при изменении семейства |
структуры (add colum) |
колонок) |
Применение: хранения взаимосвязанных данных (документов) т.е. имеющих полные или частичные общие данные. Например: события, записи и комментарии блогов.
Представители: Cassandra, HBase
ИП. БД. Модель Ключ-Значение |
МИЭТ, 2017 |
|
узел |
узел |
|
(ключ) |
||
(ключ) |
узел |
|
|
||
|
(ключ) |
|
ключ |
ключ |
|
ключ |
||
|
Особенности СУБД графовой модели
Узлы и ребра могут иметь различные типы. Ребра могут иметь несколько свойств (вектор) Ребра не вычисляются, а хранятся готовыми
Преимущества: |
Недостатки: |
Наибольшая скорость обхода |
Не подходит, когда нужно получать |
графа |
выборки по содержимому/структуре |
|
значения |
Применение: хранение связей в социальных сетях, маршрутизация, диспетчеризация, Картография, справочники (типа: вашим друзьям также нравится...)
Представители: Neo4j, OrientDB
ИП. БД. SQL или NoSQL |
МИЭТ, 2017 |
Как видно из предыдущего рассмотрения NoSQL решений, все они в той или иной степени предназначены для решения вопросов быстрой работы с большими объемами данных, когда обеспечением требований ACID и формированием представлений можно разумно пренебречь.
Работа NoSQL решений строится на основе работы с ключами с различными ограниченными «вариациями на тему» возможностей работы с содержимым значений ключей (ключ-значение и документные) и ограниченными индивидуальными для БД SQL-подобными языками запросов (колоночные, например, Cassandra).
При этом NoSQL решения (из-за ориентацию на работу с ключами и распределенность БД) не поддерживают транзакционность в том смысле, в котором это принято для решений БД по реляционной модели: назначать множество операций, а затем решать закреплять их результат в БД или нет. Есть определение успешности или не успешности записи в БД только для одной операции (которое часто зависит и от количества узлов).
Очевидно, что скорость NoSQL-решений достигается за счет упрощения структуры БД и ориентацию на быструю выборку готовых данных по
ключам. Например данные из БД Riak можно извлечь напрямую по URL: http://mysite.ru/session/keys/trye643723
ИП. БД. Распространенность моделей |
МИЭТ, 2017 |
Распределение результатов (*1000) в Google по запросу: имя базы + "большие данные"
60
50
40
30
20
10
0
Oracle |
NoSQL |
|
Riak |
MemcacheDB |
HBase |
Hypertable |
Accumulo |
MongoDB |
|
OrientDB |
||
MySQL |
Postgres |
Redis |
Amazon DynamoDB BerkeleyDB |
Cassandra |
SimpleDB |
CouchDB |
Neo4j |
AllegroGraph |
||||
Распределение результатов (*1000) в Yandex по запросу: имя базы + "большие данные"
35
30
25
20
15
10
5
0
|
Oracle |
NoSQL |
|
Riak |
Memcache |
HBase |
Hypertable |
Accumulo |
MongoDB |
|
OrientDB |
||
MySQL |
Postgres (sql) |
Redis |
Amazon Dynamo BerkeleyDB |
Cassandra |
SimpleDB |
CouchDB |
Neo4j |
AllegroGraph |
|||||
