Виды и применение NoSQL баз данных

Виды и применение NoSQL баз данных

Agility Hackers

Термин NoSQL (not only SQL) объединяет разные типы нереляционных баз данных, которые масштабируются на несколько серверов, в то время как SQL лежат на одной машине и могут увеличиваться только при увеличении объёма самой машины. Еще одна особенность NoSQL – высокая скорость обработки запросов. Они не могут полностью заменить SQL, но позволяют решать некоторые проблемы реляционных баз данных и подходят под определённые виды проектов. Вот когда NoSQL действительно необходимы:

1. Хранение больших объемов неструктурированной информации. Типы данных могут быть какие угодно, а новые нужно добавлять в процессе работы.

2. Использование agile-методов разработки, когда необходимо находить информацию без долгой подготовки или цель проекта дорабатывается в ходе работы. 

3. Наличие облачных вычислений и хранилищ. В этом случае данные должно быть легко распределить между серверами для обеспечения масштабируемости. 


Всего существует 4 вида NoSQL баз данных, которые отличаются моделью данных, подходом к распределенности и репликации. 

  1. «Ключ-знание»

Массив данных, в котором каждому значению соответствует уникальный ключ.

➕ Связи между значениями нет никакой и не требуются схемы построения. Количество элементов ограничено лишь вычислительными мощностями. 

➖Многие операции со значениями недоступны. Так, выполнить поиск по ним требует больше времени, чем в реляционных базах данных. Поэтому трудно анализировать массив и выводить статистику. 

Применение: кэширование объектов и другие хранилища, в которых связи между элементами базы не существенна. 

СУБД: Redis, Riak, Amazon DynamoBD, Berkeley DB


2. Документоориентированные

Усложненный вариант баз данных типа «ключ-значение». Характерна структура дерева, начинающаяся с корневого узла и имеющая несколько внутренних и листовых узлов. Последние содержат конечные данные, которые при добавлении заносятся в индексы. 

➕Можно выполнять выборку по запросу без полной загрузки всего документа в оперативную память. Быстрый поиск, как целых документов, так и их частей. Возможность объединять коллекции документов одного типа или тематики. Каждый документ может состоять из любого количества полей, в то время как в реляционных базах данных появляются пустые поля из-за разнородности данных. Гибкость сочетается с горизонтальной масштабируемостью. 

➖Нет множества связей между данными. Сложно и долго постоянно собирать статистику.

Применение: хранение JSON-данных, сгруппированных в коллекции.

СУБД: CouchDB, MongoDB, Couchbase, MarLogic


3. Bigtable базы данных или семейства колонок

Данные в виде матрицы, где строки и столбцы используются в виде ключей. 

➕Быстрая запись, масштабируемость, простое управление кластером, отказоустойчивость. 

➖Проблемы с репликацией каунтеров, их сортировкой и повторным созданием. Подробнее в этой статье.

Применение: веб-индексирование и решение других задач по работе с огромными массивами данных. 

СУБД: HBase, Cassandra, Hypertable


4. Графовые базы данных 

Обобщение сетевой модели данных с сильными связями между узлами. 

➕Высокая производительность, простота внесения данных и наглядность представления информации. У некоторых СУБД есть механизм оптимизации с SDD-накопителями. Можно хранить самые разные типы данных. 

➖Узкая ориентация на конкретные модели проектов. Занимает много места на диске. 

Применение: проекты, где предполагается естественная графовая структура, как социальные сети или семантические паутины. 

СУБД: ArangoDB, FlockDB, Neo4j. 


Learn NoSQL, 

Agility Hackers