Amazon DocumentDB¶
Amazon DocumentDB — это полностью управляемая облачная служба базы данных, предоставляемая Amazon Web Services (AWS), предназначенная для работы с документами в формате JSON. Она совместима с MongoDB — популярной NoSQL-системой управления базами данных, что позволяет приложениям, написанным для MongoDB, мигрировать на Amazon DocumentDB с минимальными изменениями кода. Служба автоматизирует задачи администрирования, такие как резервное копирование, восстановление, масштабирование и обновление программного обеспечения, и обеспечивает высокую доступность и производительность за счет распределенной архитектуры.
¶История
Amazon DocumentDB была анонсирована компанией Amazon Web Services в ноябре 2018 года на конференции re:Invent. Релиз состоялся 9 января 2019 года. Создание сервиса было связано с необходимостью предоставить клиентам AWS альтернативу MongoDB Atlas — управляемой службе базы данных MongoDB, разработанной компанией MongoDB Inc. В отличие от MongoDB Atlas, которая базируется на открытом исходном коде MongoDB, Amazon DocumentDB является проприетарной реализацией, совместимой с драйверами и инструментами MongoDB на уровне API. Это позволило AWS предложить более тесную интеграцию с другими сервисами экосистемы AWS, такими как Amazon S3, AWS Lambda и Amazon CloudWatch.
В 2019 году Amazon DocumentDB поддерживала только версию 3.6 API MongoDB. В 2020 году была добавлена поддержка версии 4.0, а в 2022 году — версии 5.0. В 2023 году сервис получил поддержку эластичных кластеров, позволяющих масштабировать вычислительные ресурсы и хранилище независимо друг от друга.
¶Архитектура
Amazon DocumentDB построена на распределенной архитектуре, основанной на кластерах. Кластер состоит из одного или нескольких экземпляров базы данных, которые взаимодействуют с общим хранилищем.
¶Компоненты кластера
- Основной экземпляр (Primary Instance) — обрабатывает все операции записи. В каждый момент времени в кластере может быть только один основной экземпляр.
- Реплики (Replica Instances) — обрабатывают только операции чтения. Количество реплик может варьироваться от 0 до 15. Реплики синхронизируются с основным экземпляром асинхронно, что обеспечивает высокую производительность чтения.
- Хранилище (Storage Volume) — общее сетевое хранилище, которое автоматически реплицируется в шести копиях в трех зонах доступности (Availability Zones) одного региона AWS. Это обеспечивает отказоустойчивость и долговечность данных. Хранилище автоматически масштабируется от 10 ГБ до 64 ТБ без простоев.
¶Эластичные кластеры
В 2023 году была представлена архитектура эластичных кластеров, которая позволяет масштабировать вычислительные ресурсы (экземпляры) и хранилище независимо. В эластичных кластерах используется разделение данных на шарды (shards), что обеспечивает горизонтальное масштабирование (sharding). Каждый шард состоит из одного или нескольких экземпляров. Эластичные кластеры поддерживают автоматическое перераспределение данных между шардами при добавлении или удалении узлов.
¶Совместимость с MongoDB
Amazon DocumentDB реализует совместимость с MongoDB на уровне протокола провода (wire protocol) и API. Это означает, что большинство драйверов MongoDB, инструментов командной строки (например, mongo shell) и приложений, написанных для MongoDB, могут работать с Amazon DocumentDB без изменений. Однако существуют некоторые ограничения.
¶Поддерживаемые возможности
- CRUD-операции (создание, чтение, обновление, удаление документов).
- Индексы: одиночные, составные, текстовые, геопространственные (2dsphere), хешированные, TTL (Time-To-Live).
- Агрегационный конвейер (aggregation pipeline) с большинством стадий, включая
$match,$group,$sort,$project,$lookup(с ограничениями). - Транзакции с поддержкой ACID (атомарность, согласованность, изоляция, долговечность) для операций над несколькими документами в рамках одной коллекции.
- Change Streams — механизм отслеживания изменений в коллекциях в реальном времени.
- Аутентификация и авторизация на основе ролей.
¶Неподдерживаемые возможности
- MapReduce (рекомендуется использовать агрегационный конвейер).
- Некоторые стадии агрегации, такие как
$out(в некоторых версиях) и$merge. - Индексы типа
wildcardи2d(геопространственные). - Операции с GridFS (для хранения больших файлов).
- Полная поддержка MongoDB Stitch (серверless-платформа MongoDB).
¶Производительность и масштабирование
Amazon DocumentDB обеспечивает производительность, сопоставимую с MongoDB, за счет использования распределенного хранилища и оптимизации операций ввода-вывода (I/O). Ключевые особенности:
- Автоматическое масштабирование хранилища — объем хранилища увеличивается по мере добавления данных, без необходимости ручного вмешательства.
- Масштабирование чтения — добавление реплик увеличивает пропускную способность операций чтения. Реплики могут быть расположены в разных зонах доступности для повышения отказоустойчивости.
- Масштабирование записи — в эластичных кластерах производительность записи может быть увеличена за счет добавления шардов.
- Кэширование — Amazon DocumentDB использует кэш на уровне экземпляров для ускорения операций чтения часто запрашиваемых данных.
¶Безопасность
Amazon DocumentDB предоставляет несколько уровней безопасности:
- Шифрование данных — поддерживается шифрование данных в покое (at rest) с использованием AWS Key Management Service (AWS KMS) и шифрование данных в пути (in transit) с помощью TLS (Transport Layer Security).
- Сетевой контроль — доступ к кластеру может быть ограничен с помощью групп безопасности Amazon Virtual Private Cloud (VPC), которые определяют правила входящего и исходящего трафика.
- Аутентификация и авторизация — поддерживается аутентификация с помощью имени пользователя и пароля, а также интеграция с AWS Identity and Access Management (IAM) для управления доступом к ресурсам.
- Аудит — журналы аудита могут быть отправлены в Amazon CloudWatch Logs для мониторинга и анализа.
¶Управление и мониторинг
Amazon DocumentDB автоматизирует многие задачи управления:
- Автоматическое резервное копирование — создаются ежедневные резервные копии с возможностью восстановления на любой момент времени в пределах периода хранения (от 1 до 35 дней).
- Автоматическое обновление — AWS может автоматически обновлять версию программного обеспечения базы данных в соответствии с заданным расписанием.
- Мониторинг — метрики производительности, такие как использование ЦП, памяти, количество операций ввода-вывода, задержки, доступны через Amazon CloudWatch.
- Оповещения — можно настроить уведомления о превышении пороговых значений метрик (например, высокая загрузка ЦП).
¶Стоимость
Стоимость Amazon DocumentDB складывается из нескольких компонентов:
- Вычислительные ресурсы — оплата за каждый час работы экземпляра (основного и реплик). Цена зависит от типа экземпляра (например, db.r5.large, db.r6g.large).
- Хранилище — оплата за гигабайт данных в месяц, включая резервные копии.
- Операции ввода-вывода (I/O) — в некоторых моделях ценообразования взимается плата за каждую операцию чтения или записи. В модели с эластичными кластерами I/O обычно включены в стоимость хранилища.
- Передача данных — плата за передачу данных между зонами доступности и за пределы AWS.
¶Применение
Amazon DocumentDB используется в различных сценариях, где требуется гибкая схема данных и высокая производительность:
- Веб-приложения и мобильные приложения — хранение профилей пользователей, сессий, контента.
- Управление контентом — хранение и управление документами, блогами, медиафайлами.
- Каталоги товаров — хранение информации о продуктах с различными атрибутами.
- Аналитика в реальном времени — обработка и анализ потоковых данных с помощью Change Streams.
- Интернет вещей (IoT) — хранение данных от датчиков и устройств.
¶Ограничения
- Совместимость с MongoDB — неполная, что может потребовать доработки приложений при миграции.
- Транзакции — ACID-транзакции поддерживаются только в рамках одной коллекции, а не между несколькими коллекциями (в отличие от MongoDB 4.0+).
- Размер документа — максимальный размер документа составляет 16 МБ (как и в MongoDB).
- Региональная доступность — сервис доступен не во всех регионах AWS.
¶Источники
- Amazon Web Services. «Amazon DocumentDB (with MongoDB compatibility) Documentation». AWS.
- Amazon Web Services. «Amazon DocumentDB Developer Guide». AWS.
- Amazon Web Services. «Amazon DocumentDB Pricing». AWS.
- Amazon Web Services. «Announcing Amazon DocumentDB (with MongoDB Compatibility)». AWS News Blog, 2018.
- MongoDB Inc. «MongoDB Documentation». MongoDB.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

