Базы данных NoSQL предлагают некоторые функции, которые отсутствуют в традиционных реляционных системах управления базами данных; например, они позволяют хранить простые пары ключ-значение для кэширования в течение короткого периода времени, сохранять неструктурированные коллекции данных, с которыми нельзя работать с помощью языка структурированных запросов SQL, и т.п.
В данной статье речь пойдёт о популярных СУБД NoSQL, их функциях и целях.
Системы управления базами данных
Базы данных – это логически организованные хранилища для различных видов данных. Каждая БД имеет свою модель, которая определяет структуру данных. Системы управления базами данных – это приложения (или библиотеки), которые управляют различными базами данных.
Примечание: Чтобы узнать больше о системах управления базами данных, читайте эту статью.
Системы управления базами данных NoSQL
В прошлом десятилетии лучшим средством для хранения данных считались реляционные СУБД. Такие СУБД не очень гибкие, но позволяют создавать производительные и сложные базы данных. Раньше этого было более чем достаточно, однако сегодня у разработчиков возникают другие потребности.
Термин NoSQL появился более десяти лет назад как название для ещё одной реляционной БД. Однако эта БД основана на другой идее: она отказывается от использования стандартизированного SQL. В последующие годы появляются и другие подобные базы данных, и в результате они объединились под названием «нереляционные базы данных», или NoSQL.
По своей конструкции базы данных NoSQL не основаны ни на одной модели (в отличие от РСУБД, которые основаны на реляционной модели). Каждая база данных, в зависимости от целей и функциональности, использует свою модель.
Существует несколько различных операционных моделей и систем для баз данных NoSQL:
- Хранилище «ключ-значение» (Redis, MemcacheDB и т.п.).
- Хранилище колонок (Cassandra, HBase).
- Документо-ориентированные СУБД (MongoDB, Couchbase).
- Графовые СУБД (OrientDB, Neo4J).
Рассмотрим эти модели подробнее
Хранилище «ключ-значение»
Такие СУБД можно считать самой базовой реализацией NoSQL.
Они работают путём сопоставления ключей со значениями (как в словаре), между которыми нет ни структуры, ни отношений. Подключившись к серверу базы данных, (например, Redis), приложение может определить ключ (например, the_answer_to_life) и установить его значение (например, 42)ю позже эту пару можно извлечь посредством ключа.
СУБД типа «ключ-значение» часто используются для быстрого сохранения основной информации или второстепенных данных, полученных путём сложных вычислений. Они чрезвычайно производительны и, как правило, легко масштабируются.
Хранилища колонок
Эти хранилища основаны на подходе «ключ-значение», но расширяют и усложняют его.
Такие СУБД создают коллекции из пар «ключ-значение». В отличие от традиционных схем реляционных баз данных, хранилища колонок NoSQL не требуют предварительно структурированных таблиц для работы с данными. Каждая запись состоит из одной или больше колонок, в которых хранится информация, и каждая колонка каждой записи может отличаться от остальных.
В целом, хранилища семейств колонок NoSQL являются двумерными массивами, причем к каждому ключу (т.е. строке, записи) прикреплена одна или несколько пар «ключ-значение». Эти системы управления позволяют хранить и использовать очень большие объёмы неструктурированных данных.
Как правило, такие БД используются в случаях, когда обычного хранилища «ключ-значение» недостаточно и необходимо хранить очень большие объёмы данных. Кроме того, хранилища колонок легко масштабировать.
Документо-ориентированные базы данных
Документо-ориентированные базы данных NoSQL пользуются огромной популярностью среди пользователей. Эти СУБД похожи на хранилища колонок, однако позволяют создать более сложную структуру (документ в документе в документе…).
Документы устраняют некоторые ограничения хранилищ колонок. В целом они позволяют создать документ из произвольной структуры данных любой сложности.
Несмотря на высокую производительность и множество преимуществ, документо-ориентированные СУБД имеют некоторые недостатки и уязвимости по сравнению с другими СУБД NoSQL . Например, извлекая значение записи, вы получаете огромный объём данных, а обновление данных негативно влияет на производительность.
Графовые СУБД
Графовые базы данных представляют данные совсем иначе, чем предыдущие три модели. Они используют древовидные структуры – графы, которые состоят из узлов и рёбер.
Графовые СУБД соединяют и группируют полученные данные, благодаря чему они намного быстрее справляются с некоторыми операциями.
Эти базы данных обычно используются приложениями, которым необходимы четкие границы для подключений. К примеру, при регистрации в любой социальной сети ваш аккаунт связывается с аккаунтами ваших друзей, друзей ваших друзей и т.д. Такую операцию проще всего выполнить при помощи графовой БД.
Базы данных NoSQL на основе модели «ключ-значение»
Самыми популярными приложениями данной категории являются:
- Redis (открытое сетевое хранилище данных).
- Riak (открытая распределённая система управления базами данных).
- Memcached / MemcacheDB (распределённая СУБД).
Случаи использования:
- Кэширование: быстрое сохранение данных для их дальнейшего использования.
- Создание очередей: многие хранилища типа «ключ-значение» (например, Redis) поддерживают списки, наборы, очереди и многое другое.
- Распределение задач и данных: такие СУБД можно использовать для реализации Pub/Sub.
Базы данных NoSQL на основе хранилищ колонок
Популярные приложения:
- Cassandra: BigTable-подобная база данных, основанная на DynamoDB.
- HBase: BigTable-подобное хранилище данных для Apache Hadoop.
Случаи применения:
- Хранение неструктурированной информации: такие СУБД отлично подходят для длительного хранения больших коллекций атрибутов и значений.
- Масштабирование: СУБД на основе хранилищ колонок легко масштабировать.
Документо-ориентированные СУБД
Популярные приложения:
- Couchbase: Memcached-совместимая документо-ориентированная база данных на основе JSON.
- CouchDB: инновационное документо-ориентированное хранилище данных.
- MongoDB: широко распространённая и многофункциональная БД.
Случаи использования:
- Уплотнение информации: вы можете создавать очень сложные структуры данных.
- Совместимость с JavaScript и JSON: одна из наиболее важных функциональных возможностей таких СУБД.
Графовые СУБД
Популярные приложения:
- Neo4J: высокопроизводительная база данных на основе графов.
Случаи применения:
- Обработка сложных связей между данными: графовые БД очень продуктивны в обработке сложных и косвенных отношений между данными.
- Моделирование и обработка классификаций: графовые БД отлично справятся с любой ситуацией, в которой важны отношения между данными, в том числе с моделированием данных и классификацией различной информации.
Реляционные СУБД vs. NoSQL
Чтобы подвести итоги данной статьи, сравним реляционные и NoSQL СУБД.
- NoSQL легко справляется с гигантскими объёмами данных.
- Как правило, NoSQL быстрее выполняет операции записи (скорость операций чтения зависит от типа БД NoSQL и типа запрашиваемых данных).
- NoSQL очень гибкая (по сравнению с реляционными СУБД, которым изначально необходима структура)
- NoSQL предлагает автоматизированную репликацию и масштабирование. Сегодня NoSQL активно развивается и устраняет общие проблемы в работе с данными, среди которых репликация и масштабирование – одни из самых важных. NoSQL легко масштабируется и работает в кластере.
- Кроме того, NoSQL предлагает широкий выбор приложений и моделей для работы с различными типами данных.