Открыть сервис

документо-ориентированное хранилище

Документо-ориентированное хранилище — это подвид NoSQL-баз данных (нереляционных систем управления базами данных), предназначенный для хранения, поиска и управления данными в форме документов. В отличие от реляционных баз данных, где информация организуется в строгие таблицы со строками и столбцами, документо-ориентированное хранилище работает с документами — самодостаточными единицами данных, обычно в форматах JSON, BSON, XML, YAML или аналогичных.

Ключевая особенность таких систем — поддержка слабой или гибкой схемы (schema-less или schema-on-read). Это означает, что структура документов может различаться от записи к записи. Поля могут добавляться, удаляться или изменяться без необходимости оповещать базу данных о новом типе данных или проводить миграцию схемы, в отличие от ALTER TABLE в SQL.

Особенности модели данных

Документ как основная единица

Основной единицей хранения является документ — набор пар «ключ-значение». Внутри документа данные могут быть вложенными (объекты внутри объектов), что позволяет представлять сложные иерархические структуры без разбиения на отдельные таблицы и соединений (JOIN). Например, контакт пользователя может содержать внутри массив телефонных номеров и адресов, а не ссылаться на внешние справочные таблицы.

Идентификатор документа

Каждый документ в коллекции (аналог таблицы в терминологии документо-ориентированных СУБД) имеет уникальный идентификатор — первичный ключ (_id в MongoDB, id в CouchDB). Этот идентификатор используется для быстрого доступа по ключу (lookup) и часто создаётся автоматически.

Слабая схема (гибкая схема)

Документы в одной коллекции могут иметь разный набор полей. Например, в коллекции «Книги» один документ может содержать только «название» и «автор», а другой — полный набор метаданных, включая издательство, год, количество страниц, рейтинг и отзывы. Это даёт преимущество в разработке при быстро меняющихся требованиях.

Основные СУБД и их сравнение

На рынке существует несколько популярных документо-ориентированных баз данных, каждая со своей спецификой.

СистемаЯзык запросовФормат храненияДополнительные возможностиЛицензия
MongoDBMQL (MongoDB Query Language)BSON (Binary JSON)Поддержка транзакций (начиная с версии 4.0), полнотекстовый поиск, геопространственные запросы, Change StreamsСерверная лицензия SSPL (не подходит для коммерческого облачного проката)
CouchDBREST API (HTTP-запросы)JSONВстроенная репликация (multi-master), MVCC (мультиверсионность), поддержка конфликтовApache 2.0
RavenDBLINQ, SQL-подобныйJSON (на диске — двоичный)Транзакции ACID на уровне кластера, MapReduce, встроенные индексыКоммерческая (есть бесплатная CE версия для малых проектов)
Amazon DynamoDBPartiQL, API запросовJSONПолностью управляемый сервис AWS, Key-Value и Document модель, Auto ScalingПроприетарная (хостинг в AWS)
Firebase Firestore (Google)Собственный SDKJSONРеальное время (Real-time), офлайн-синхронизация, бессерверная архитектураПроприетарная (хостинг в GCP)

История развития

Концепция документных баз данных возникла из проектов Lotus Notes (IBM) и Object Design, но широкое распространение получила в середине 2000-х как реакция на ограничения реляционных моделей в веб-приложениях. Основными стимулами стали необходимость горизонтального масштабирования (шардинга), снижение накладных расходов на ORM (Object-Relational Mapping) и возможность быстрого прототипирования.

Преимущества и недостатки

Преимущества

Недостатки

Области применения

Веб-приложения и мобильные сервисы

Подходят для хранения профилей пользователей, сессионных данных, логов действий, комментариев, валютных пар и курсов.

Каталоги товаров и CMS

В интернет-магазинах и системах управления контентом каждый товар может иметь разный набор атрибутов (размер, цвет, вес, материал), что удобно реализовать через документы.

Аналитика в реальном времени

Системы мониторинга, сбора логов и событий (например, ELK-стек с Elasticsearch — документная БД на основе Lucene).

Интернет вещей (IoT)

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

Критика и ограничения

Основная критика документо-ориентированных систем связана с отсутствием сильной схемы (schema-on-write). В крупных проектах, таких как социальная сеть, несогласованность полей между версиями приложений может привести к ошибкам на этапе эксплуатации. Для решения этой проблемы компании внедряют инструменты центральной валидации (JSON Schema, библиотеки валидации в API).

Вторым важным ограничением является производительность на сложных запросах с несколькими коллекциями. В реляционных базах такие запросы (JOIN) выполняются эффективно благодаря оптимизатору, тогда как в документной модели разработчику нужно вручную реализовывать денормализацию или использовать агрегационный пайплайн (например, $lookup в MongoDB), что может быть медленнее.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →