- •3) Особенности построения адаптируемых интегрированных систем состоят в следующем.
- •Достоинства PostgreSql
- •Недостатки PostgreSql
- •Когда использовать PostgreSql
- •Когда не следует использовать PostgreSql
- •NoSql системы управления базами данных
- •Хранилище ключ-значение
- •Распределённое хранилище
- •Документо-ориентированные хранилища
- •Базы данных на основе графов
- •Субд Ключ-Значение (Key-Value)
- •NoSql распределённые субд
- •Документо-ориентированные субд
- •NoSql базы данных типа граф
- •Сравнение NoSql субд и реляционных субд
- •Понятие конвейеров ввода и вывода графической информации
- •Рис 3. Связное хранение линейного списка. Пример реализации односвязного списка на Java
- •Методы оценки результатов моделирования
- •1) Модель "Черный ящик"
- •3) Модель структуры системы.
- •4) Модель динамики системы.
- •5) Кибернетические модели.
- •Принцип Δt
- •Принцип особых состояний
- •Принцип последовательной проводки заявок
Хранилище ключ-значение
Начнем наше рассмотрение с типа хранилища ключ-значение, так как это самое основное решение из семейства NoSQL. Этот тип БД работает с данными типа ключ-значение, например как словарь. Здесь нет места ни структуре, ни связям. После подключения к серверу (например Redis) приложение может задать ключ и его значение, а в последствии получать эти данныe по запросу.
Такие СУБД обычно используются для быстрого сохранения базовых данных, а иногда не таких уж и базовых, если подсчитать затраты процессора и памяти. Они, обычно, очень быстры, работоспособны или легко масштабируемы (хорошо использовать такие БД для хранения сессий, кеша, счётчиков посещений или просмотров и т.д.).
Заметка: когда дело касается компьютеров, словарь это особый тип данных. Он представляет собой массив коллекций с различными ключами и соответствующими им значениями.
Распределённое хранилище
По сути это следующий шаг после СУБД типа ключ-значение. Несмотря на довольно сложную для понимания сущность, эти базы данных отлично работают просто создавая коллекции из одного или нескольких пар ключ-значение, которые в сумме соответствуют одной записи.
В отличии от привычных таблиц в реляционных моделях, эти СУБД не требует предварительного описания структуры данных. Каждая запись состоит из одного или нескольких столбцов содержащих данные, а каждый столбец разных записей может хранить разные типы данных.
В целом, распределённое хранилище ни что иное как двумерный массив, где каждый ключ (запись) содержит одну или несколько пар ключ-значение привязанных к нему. Такая система позволяет хранить и использовать большие объемы неструктурированных данных. (одна запись с большим количество дополнительной информации) . Такие базы данных обычно используются, когда недостаточно простых пар ключ-значение, а хранить необходимо большой объем записей с различной информацией. Такие СУБД при соответствующем использовании могут быть очень производительными.
Документо-ориентированные хранилища
Такие NoSQL СУБД очень быстро захватили свой рынок. Они работают так же как и предыдущие системы, но они допускают гораздо большую вложенность и сложность структуры данных. (например, документ вложенный в документ, вложенный в документ). Документы снимают ограничения вложенности первого и второго уровней типа ключ-значение в распределённых хранилищах. В целом, можно описать сколь угодно сложную структуру данных как документ и сохранить в такой БД.
Несмотря на довольно большой функционал и способность доступа к данным по одному ключу, такие СУБД имеют ряд своих проблем. Например, при доступе к одному документу вы полностью получаете его в ответ на запрос, даже если вам необходимо какое-то одно поле, что не может не сказаться на производительности.
Базы данных на основе графов
На последок мы оставили самое интересное. БД на основе графов хранят данные в совсем другом виде. Они используют древовидные структуры с узлами и связями соединяющими их. Так же как и в математике, некоторые операции гораздо удобнее выполнять с такими данными благодаря связям между ними и их группировке (например, связи между людьми).
Такие базы данных часто используются в приложениях, где нужно иметь четко установленные связи. Например, когда вы регистрируетесь в какой либо социальной сети, хранить связи между вами и вашими друзьями хранить гораздо проще при использовании баз данных на основе графов.