Работа с реляционной базой строится на общепринятом языке SQL. У NoSQL СУБД нет единого стандарта: у каждой такой базы индивидуальный подход к записи, хранению и извлечению данных. Поиск информации может вестись, например, по парам «ключ — значение» или по наборам столбцов.
Для реляционных БД необходима фиксированная схема — точное описание структуры таблицы, её полей и ограничений. Данные в строках таблиц должны быть нормализованы, а добавление нового свойства влечёт за собой изменение всей схемы. Этот подход эффективен, когда необходима стабильность и чёткая структура. Нереляционные СУБД существуют по другим принципам и законам, в них структура не регламентирована, отсюда и принципиальное отличие NoSQL от реляционных БД — их гибкость.
СУБД без SQL позволяют записывать и получать неструктурированную информацию, дают возможность менять схемы и запросы в соответствии с требованиями к данным. Когда речь идёт о работе с time-series data, информацией без взаимосвязи, о хранении документов с разной структурой и высокой степенью вложенности, то именно NoSQL показывают большую скорость и производительность.
При разработке NoSQL были смягчены жесткие требования к транзакциям. Основные принципы ACID гарантируют, что целостность и согласованность данных в реляционных хранилищах будет обеспечена даже при сбоях. Поскольку для ряда задач в строгом следовании ACID нет никакой необходимости, NoSQL-базы чаще всего предлагают компромисс и принципы BASE:
-
система обеспечивает базовую доступность (Basic Availability), т. е. каждый запрос будет обязательно завершён, успешно или нет;
-
система пребывает в гибком состоянии (Soft-state) — очерёдность записей соблюдать необязательно, реплики могут какое-то время находиться в несогласованном состоянии, а система может самостоятельно изменяться для достижения согласованности;
-
все данные всё равно достигнут согласованности (Eventual Consistency).
NoSQL-подход разрешает группировать любой набор данных и их связей. Объект данных при этом может быть многосоставным: нормализация в NoSQL не требуется. Это свойство будет полезно, например, стартапам, когда модель хранилища данных меняется во время разработки самого продукта и в начале работы не удаётся спрогнозировать финальную архитектуру БД.
Благодаря механизмам отказоустойчивости секций, в том числе репликации и шардированию, NoSQL способна в любой момент обслужить входящий запрос и вернуть не ошибочный ответ. Избыточность и отказоустойчивость достигаются благодаря репликации данных на узлах. И даже если реплики окажутся недоступны, можно произвести запись в базу данных. По мере доступности узлов каждая реплика будет обновлена.
Поскольку между записями в NoSQL нет жёсткой связи, данные можно дробить и хранить на нескольких независимых серверах. Горизонтальное масштабирование легче и дешевле, чем вертикальное, присущее SQL-моделям. Производительность реляционной системы БД увеличивается с помощью дополнительного дорогого оборудования (и то не бесконечно), а в нереляционных БД — с помощью добавления новых узлов. Это делает NoSQL более удобными при взаимодействии с большими или меняющимися наборами данных.
Благодаря оптимизации баз под определённые виды моделей данных скорость представления информации часто превосходит скорость SQL-базы. Например, если необходимые записи хранятся в одном документе, больше нет потребности в операции JOIN. Это упрощает процесс, когда необходимо провести аналитику над данными, агрегацию или расчёты внутри сущности.
Горизонтальное масштабирование позволяет сократить количество дорогостоящих серверов. А поскольку большинство NoSQL являются open source проектами, можно экономить на подписке и поддержке. Или развернуть и эксплуатировать базы данных в облачном сервисе: NoSQL благодаря распределённости и горизонтальной масштабируемости прекрасно для этого подходят.
Yandex Cloud, например, предлагает сервисы для управления нереляционными базами данных: MongoDB, Redis™, Elasticsearch, ClickHouse.
Компания Elastic ограничила доступ к сервису Elasticsearch для пользователей Yandex Cloud с апреля 2024 года. В связи с этим Yandex Managed service for Elasticsearch стал недоступен на платформе. Мы рекомендуем использовать Yandex Managed service for OpenSearch, который сопоставим по функциональности с Elasticsearch. Чтобы легко перенести данные в сервис Yandex Managed Service for OpenSearch, воспользуйтесь нашей инструкцией.
Если реляционные СУБД на протяжении многих лет были универсальным решением, то с развитием NoSQL у разработчиков появился выбор: теперь базы данных реально подобрать под конкретные задачи.
NoSQL-СУБД различаются моделями данных, а также подходом к распределённости и репликации. Выделяют четыре основные категории нереляционных БД.
В этой БД записи хранятся в парах «ключ — значение», где ключ выступает уникальным идентификатором. Ключи и значения фиксируются в виде простой или составной информации. Эти хранилища максимально быстро реагируют на запросы информации и прекрасно масштабируются.
Key-value СУБД часто используется для систем, в которых скорость является приоритетом, а данные не слишком сложные. Например, для хранения кеша данных, онлайн-списков, обработки истечения срока действия, разделения сеансов, построения рейтинга и прочих задач.