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

Документ-ориентированная база данных

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

История

Концепция документ-ориентированных баз данных возникла как реакция на ограничения реляционной модели при работе с большими объёмами разнородных данных, характерных для веб-приложений и систем управления контентом. Первые коммерческие реализации появились в начале 2000-х годов. Одним из пионеров стала система Lotus Notes (1989), которая использовала документную модель для хранения электронной почты и документов. Однако современный этап развития начался с появлением CouchDB (проект Apache, 2005) и MongoDB (2009). MongoDB, использующая бинарный формат BSON, быстро стала наиболее популярной документ-ориентированной СУБД благодаря своей производительности и простоте разработки. В 2010-х годах рост облачных вычислений и микросервисной архитектуры стимулировал дальнейшее развитие таких систем, как Amazon DocumentDB (2019) и Azure Cosmos DB (2017), которые предлагают документную модель как часть облачных сервисов.

Основные характеристики

Гибкая схема (Schemaless)

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

Документ как единица хранения

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

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

Каждый документ имеет уникальный идентификатор (обычно поле _id), который служит первичным ключом. Этот идентификатор может генерироваться автоматически или задаваться пользователем.

Индексирование

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

Языки запросов

Запросы к данным обычно выполняются с помощью API, основанного на JSON или подобных структурах. Например, в MongoDB используется формат {field: value}. Системы поддерживают фильтрацию, проекцию, сортировку, агрегацию (через конвейеры агрегации) и полнотекстовый поиск.

Классификация и виды

Документ-ориентированные базы данных можно классифицировать по нескольким признакам:

По способу хранения данных

По архитектуре

По модели согласованности

Устройство и архитектура

Типичная документ-ориентированная система состоит из следующих компонентов:

  1. Коллекции (Collections): Группы документов. Аналог таблиц в реляционных базах, но без строгой схемы.
  2. Документы (Documents): Основные единицы данных, представленные в виде пар «ключ-значение». Ключи — строки, значения могут быть любого типа (строка, число, массив, вложенный документ).
  3. Индексы: Структуры данных (B-деревья, хэш-таблицы), ускоряющие поиск.
  4. Ядро СУБД: Отвечает за выполнение запросов, управление памятью, транзакциями (в современных системах — поддержка ACID для одного документа и многодокументных транзакций).
  5. Система хранения: Обычно файловая система или специализированное хранилище (например, WiredTiger в MongoDB).
  6. Репликация: Механизм копирования данных на несколько узлов для обеспечения отказоустойчивости.

Применение

Документ-ориентированные базы данных находят широкое применение в различных областях:

Примеры систем

MongoDB

Наиболее популярная документ-ориентированная СУБД с открытым исходным кодом (с 2018 года — SSPL-лицензия). Использует BSON. Поддерживает шардинг, репликацию, полнотекстовый поиск, агрегацию. Широко применяется в веб-разработке.

Couchbase

Комбинирует документную модель с кэшированием (memcached). Ориентирована на высокую производительность и низкую задержку. Используется в real-time приложениях.

Amazon DocumentDB

Облачный сервис от Amazon Web Services (AWS), совместимый с MongoDB. Предлагает автоматическое масштабирование и резервное копирование.

Azure Cosmos DB

Облачная база данных от Microsoft, которая поддерживает несколько моделей данных, включая документную (через API для MongoDB или SQL API).

Firestore

База данных от Google Firebase, ориентированная на мобильные и веб-приложения. Использует документную модель с автоматической синхронизацией.

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

Несмотря на преимущества, документ-ориентированные базы данных имеют ряд недостатков:

Интересные факты

Источники

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

На главную BFOmetr →