Azure DocumentDB
Azure DocumentDB — это полностью управляемая облачная служба NoSQL-баз данных, предоставляемая корпорацией Microsoft в составе платформы Microsoft Azure. Она предназначена для хранения, обработки и запросов документов в формате JSON (JavaScript Object Notation) с поддержкой транзакций, индексации и масштабирования. Служба обеспечивает низкую задержку доступа к данным, высокую доступность и автоматическое масштабирование, что делает её пригодной для приложений, требующих быстрых и гибких операций с неструктурированными или полуструктурированными данными.
История
Azure DocumentDB была анонсирована корпорацией Microsoft в 2014 году на конференции Build. Первоначально служба позиционировалась как облачная база данных для работы с документами, поддерживающая SQL-подобный язык запросов. В 2015 году DocumentDB стала общедоступной (GA) в рамках платформы Microsoft Azure. В 2016 году Microsoft объявила о переименовании службы в Azure Cosmos DB, сохранив при этом обратную совместимость с API DocumentDB. Таким образом, Azure DocumentDB является предшественником и одной из основных технологических основ Azure Cosmos DB.
Архитектура и устройство
Модель данных
Azure DocumentDB хранит данные в виде документов в формате JSON. Каждый документ представляет собой автономную единицу, содержащую набор полей и значений. Документы могут быть вложенными, что позволяет моделировать сложные иерархические структуры данных. Схема данных не фиксирована — каждый документ может иметь собственный набор полей, что обеспечивает гибкость при работе с разнородными данными.
Индексация
Одной из ключевых особенностей DocumentDB является автоматическая индексация всех полей документов без необходимости явного определения схемы или индексов. Индексация выполняется по умолчанию для всех вновь добавляемых документов, что позволяет выполнять запросы к любым полям без предварительной настройки. Пользователь может настроить политику индексации, исключив из индекса определённые поля или пути, чтобы оптимизировать производительность и снизить затраты на хранение.
Запросы
DocumentDB поддерживает SQL-подобный язык запросов, который позволяет выполнять операции выборки, фильтрации, проекции, сортировки и агрегации над документами. Запросы выполняются на стороне сервера, что снижает нагрузку на клиентское приложение. Кроме того, DocumentDB поддерживает выполнение хранимых процедур, триггеров и пользовательских функций на JavaScript, которые выполняются в контексте транзакций.
Транзакции и согласованность
DocumentDB обеспечивает поддержку транзакций с гарантией ACID (атомарность, согласованность, изоляция, долговечность) в рамках одного документа. Транзакции выполняются с помощью хранимых процедур или триггеров. Для операций, затрагивающих несколько документов, транзакции не поддерживаются. Служба предлагает несколько уровней согласованности данных, включая строгую, ограниченную устаревшую, сессионную, согласованность префикса и возможную. Пользователь может выбрать подходящий уровень в зависимости от требований приложения.
Масштабирование
Azure DocumentDB спроектирована для горизонтального масштабирования. Данные распределяются по разделам (партициям) на основе ключа раздела, который задаётся пользователем. Каждый раздел обрабатывается отдельным набором серверов, что позволяет увеличивать пропускную способность и объём хранимых данных путём добавления новых разделов. Масштабирование выполняется автоматически или по запросу администратора.
Классификация
Azure DocumentDB относится к классу NoSQL-баз данных, а именно к категории документо-ориентированных баз данных. В отличие от реляционных баз данных, она не требует фиксированной схемы и поддерживает хранение вложенных структур. По модели развёртывания DocumentDB является облачной службой (PaaS — Platform as a Service), что означает, что пользователь не управляет серверной инфраструктурой, а только настраивает параметры базы данных.
Применение
Azure DocumentDB (и её преемник Azure Cosmos DB) применяется в различных сценариях, требующих высокой производительности, низкой задержки и гибкости работы с данными:
- Веб-приложения и мобильные приложения: хранение профилей пользователей, сессий, конфигураций, логов.
- Интернет вещей (IoT): сбор и обработка данных с датчиков и устройств.
- Игровая индустрия: хранение игровых профилей, достижений, внутриигровых транзакций.
- Электронная коммерция: каталоги товаров, корзины покупок, заказы.
- Аналитика и отчётность: хранение и запросы к большим объёмам неструктурированных данных.
Преимущества и недостатки
Преимущества
- Гибкость схемы: возможность хранить документы с различной структурой без миграции схемы.
- Автоматическая индексация: все поля индексируются по умолчанию, что упрощает разработку.
- Низкая задержка: типичное время отклика на запросы составляет единицы миллисекунд.
- Высокая доступность: служба обеспечивает соглашение об уровне обслуживания (SLA) с гарантией доступности 99,99% для операций чтения и записи.
- Глобальное распределение: данные могут быть реплицированы в несколько регионов Azure для обеспечения низкой задержки и отказоустойчивости.
Недостатки
- Стоимость: по сравнению с некоторыми другими NoSQL-решениями, DocumentDB может быть дороже, особенно при больших объёмах данных и высокой пропускной способности.
- Сложность настройки: для достижения оптимальной производительности требуется правильный выбор ключа раздела и политики индексации.
- Ограничения транзакций: транзакции поддерживаются только в рамках одного документа, что может быть ограничением для некоторых приложений.
Сравнение с другими технологиями
Azure DocumentDB часто сравнивают с другими популярными документо-ориентированными базами данных, такими как MongoDB и Amazon DynamoDB. В отличие от MongoDB, DocumentDB изначально интегрирована с экосистемой Microsoft Azure, поддерживает SQL-подобные запросы и автоматическую индексацию. По сравнению с Amazon DynamoDB, DocumentDB предлагает более гибкую модель данных (документы вместо пар «ключ-значение») и поддержку вложенных структур.
Интересные факты
- Azure DocumentDB стала первой облачной службой NoSQL-баз данных, которая предложила автоматическую индексацию всех полей без настройки схемы.
- В 2016 году Microsoft объявила, что Azure DocumentDB будет переименована в Azure Cosmos DB, а API DocumentDB станет одним из нескольких API, доступных в Cosmos DB.
- Azure DocumentDB поддерживает выполнение хранимых процедур и триггеров на JavaScript, что позволяет выполнять сложную бизнес-логику на стороне сервера.
Источники
- Microsoft Azure Documentation: Azure DocumentDB (архивная версия)
- Официальный блог Microsoft Azure: анонс Azure DocumentDB (2014)
- Документация Azure Cosmos DB: API DocumentDB
- Статья «Azure DocumentDB: A NoSQL Document Database as a Service» на TechNet
- Сравнительные обзоры NoSQL-баз данных на сайтах Gartner и Forrester
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →