Виды и применение NoSQL баз данных
Agility HackersТермин NoSQL (not only SQL) объединяет разные типы нереляционных баз данных, которые масштабируются на несколько серверов, в то время как SQL лежат на одной машине и могут увеличиваться только при увеличении объёма самой машины. Еще одна особенность NoSQL – высокая скорость обработки запросов. Они не могут полностью заменить SQL, но позволяют решать некоторые проблемы реляционных баз данных и подходят под определённые виды проектов. Вот когда NoSQL действительно необходимы:
1. Хранение больших объемов неструктурированной информации. Типы данных могут быть какие угодно, а новые нужно добавлять в процессе работы.
2. Использование agile-методов разработки, когда необходимо находить информацию без долгой подготовки или цель проекта дорабатывается в ходе работы.
3. Наличие облачных вычислений и хранилищ. В этом случае данные должно быть легко распределить между серверами для обеспечения масштабируемости.
Всего существует 4 вида NoSQL баз данных, которые отличаются моделью данных, подходом к распределенности и репликации.
- «Ключ-знание»
Массив данных, в котором каждому значению соответствует уникальный ключ.
➕ Связи между значениями нет никакой и не требуются схемы построения. Количество элементов ограничено лишь вычислительными мощностями.
➖Многие операции со значениями недоступны. Так, выполнить поиск по ним требует больше времени, чем в реляционных базах данных. Поэтому трудно анализировать массив и выводить статистику.
Применение: кэширование объектов и другие хранилища, в которых связи между элементами базы не существенна.
СУБД: 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