Основной целью NoSQL баз данных является предоставление дополнительного функционала.
Базы данных представляют собой логически смоделированные хранилища, которые предназначены для разных типов данных. Каждой базой данных, в отличие от безсхемных (NoSQL), используется модель, описывающая структуру данных.
СУБД являются специальными приложениями или набором библиотек для работы с разными базами данных.
NoSQL системы управления базами данных
Термин NoSQL изначально подразумевал избежание использования стандартов SQL. Впоследствии его стали применять в отношении нереляционных БД.
В NoSQL БД и СУБД не подразумеваются внутренние связи. Они не основаны на одной модели, а каждой БД зависимо от целей используются разные модели.
Разновидности моделей и функциональных систем для NoSQL БД:
- База данных на основе графов (Neo4J, OrientDB и т.д.)
- Документо-ориентированные СУБД предназначаются для хранения документов (Couchbase, MongoDB и т.д.)
- Распределённое хранилище предназначено для огромных объемов данных (HBase, Cassandra и т.д.)
- Хранилище ключ-значение хранит данные в памяти (MemcacheDB, Redis и т.д.)
Хранилище ключ-значение
Самым основным решением NoSQL является хранилище ключ-значение, которое обрабатывает данные типа ключ-значение (к примеру, как словарь). В нем нет структуры и связей. Подключившись к серверу, приложение задает ключ и его значение, а затем получает необходимую информацию по запросу.
Обычно подобные СУБД используют для быстрого сохранения основных данных. Они очень быстрые, работоспособные или легко масштабируются. Такие базы данных удобно использовать для хранения кэша, сессий, счётчиков просмотров или посещений и т.д.).
Распределённое хранилище
БД создают коллекции из одного ключ-значение или нескольких их пар, соответствующих в сумме одной записи.
СУБД не требуют предварительно описывать структуры данных. Каждая запись состоит из одного или более столбцов с данными, а каждый столбец в разных записях может содержать различные типы данных.
Распределённое хранилище является двумерным массивом, в котором каждый ключ (запись) хранит одну или более пар ключ-значение, которые привязаны к нему. Такая СУБД может хранить и обрабатывать огромные объемы неструктурированных данных. Такие БД обычно используют, если недостаточно простых пар ключ-значение, а необходимо хранить большой объем записей с разной информацией.
Документо-ориентированные хранилища
Такие NoSQL СУБД работают по принципу предыдущих, но в них допускается большая сложность и вложенность структуры данных (к примеру, документ вложен в документ, который вложен в документ). Можно описать сколько угодно сложную структуру данных типа документ и сохранить в такой базе данных.
СУБД обладают способностью доступа к данным по одному ключу и имеют довольно большой функционал. Несмотря на это, имеют ряд проблем. К примеру, пользователь получает в ответ на запрос полностью весь документ, не смотря на то, что ему нужно только какое-то одно поле, что сказывается на производительности.
Базы данных на основе графов
В базах данных на основе графов данные хранятся в совсем другом виде. В них используются древовидные структуры с узлами и связями, которые их соединяют. Некоторые операции, как и в математике, намного удобнее выполнять с такими данными из-за связей между ними и их группировки (к примеру, связи между городами).
Подобные базы данных часто используют в приложениях, в которых необходимо иметь четко установленные связи. К примеру, если пользователь зарегистрировался в социальной сети, то хранить связь между ним и его друзьями намного легче при использовании БД на основе графов.