В связи с потребностью в более гибких серверных решениях базы данных NoSQL приобрели огромную популярность. Они работают с приложениями, которым требуется более гибкая структура данных, чем могут предоставить традиционные структурированные базы данных.
Двумя наиболее популярными лидерами рынка баз данных NoSQL являются MongoDB и DynamoDB, которые предоставляют надежные многофункциональные платформы баз данных NoSQL.
В этой статье мы сравним эти две базы данных, чтобы помочь вам выбрать правильную базу данных для вашего проекта.
- Что такое MongoDB?
- Основные компоненты MongoDB
- Что такое DynamoDB?
- Основные компоненты DynamoDB
- Отличия MongoDB от DynamoDB
- Среда и стратегия развертывания
- Модель данных и схема
- Запрос данных и индексов
- Безопасность базы данных
- Резервное копирование и восстановление базы данных
- Выбор MongoDB или DynamoDB
- Заключение
Что такое MongoDB?
MongoDB — это распределенная база данных NoSQL общего назначения на основе документов. Это предлагает:
- Бесплатная и готовая к работе версия для сообщества
- Корпоративная версия с прямой поддержкой MongoDB Inc.
MongoDB Atlas — это облачная база данных. В отличие от других предложений, MongoDB Atlas не зависит от облака и может быть развернут на любом крупном облачном провайдере с гарантированной доступностью и масштабируемостью, при этом соблюдая все стандарты соответствия и безопасности. Он также предоставляет бесплатный кластер MongoDB, который можно использовать для разработки приложений.
Основные компоненты MongoDB
Вот основные компоненты MongoDB и их использование:
MongoDB | Аналог РСУБД | Описание |
Коллекция | Стол | Набор документов MongoDB. |
Документ | Ряд | Сбор данных, хранящихся в формате BSON |
Поле | Поле / столбец | Один элемент в документе MongoDB, содержащий значения в виде пар полей и значений. |
Что такое DynamoDB?
DynamoDB — это собственная база данных NoSQL от Amazon, которая поддерживает данные типа «ключ-значение» и документы, предлагаемые через веб-службы Amazon. Это облачное предложение AWS обеспечивает масштабируемую, высокодоступную и безопасную управляемую платформу базы данных для любого приложения.
DynamoDB предлагает ограниченное хранилище, всегда бесплатные экземпляры баз данных пользователям AWS, использующим уровень бесплатного пользования AWS для тестирования и разработки.
Основные компоненты DynamoDB
Это основные компоненты DynamoDB:
DynamoDB | Аналог РСУБД | Описание |
Стол | Стол | Сгруппированная коллекция элементов DynamoDB. |
Элемент | Ряд | Записи данных, содержащие данные. Каждый элемент состоит из одного или нескольких атрибутов. |
Атрибут | Поле / столбец | Базовый элемент DynamoDB содержит одно значение данных. |
Отличия MongoDB от DynamoDB
И MongoDB, и DynamoDB предлагают аналогичные функции и наборы функций. Однако, когда дело доходит до выбора между этими двумя, есть несколько ключевых факторов.
Среда и стратегия развертывания
Наиболее существенное различие между этими двумя базами данных:
- MongoDB не зависит от платформы.
- DynamoDB ограничен AWS.
С помощью MongoDB вы можете настроить базу данных для работы практически в любом месте — от локального компьютера, контейнера или локального развертывания до любого облачного провайдера.
Напротив, вы можете настроить и использовать DynamoDB только через AWS. Как собственное приложение AWS DynamoDB имеет более тесную интеграцию с другими инструментами и сервисами, предлагаемыми AWS. Несмотря на то, что DynamoDB предлагает загружаемую версию для тестирования и разработки, производственные развертывания зависят от AWS.
DynamoDB — это полностью управляемая база данных, которая позволяет пользователям сразу начать использовать базу данных, поскольку AWS будет управлять всем масштабированием, доступностью и обновлениями. Он позволяет всего за несколько щелчков мышью подготовить многорегиональную базу данных с высокой доступностью, что значительно снижает потребность в специализированном управлении инфраструктурой.
С другой стороны, MongoDB требует, чтобы пользователи управляли всей инфраструктурой и конфигурациями для развертывания MongoDB на основе. Хотя это дает пользователям максимальную степень контроля над базой данных, она имеет повышенную сложность.
К счастью, MongoDB Atlas предоставляет решение этой сложной проблемы, предлагая полностью управляемую облачную службу базы данных, которую можно развернуть в AWS, Google Cloud и Microsoft Azure. Он также предоставляет самый простой вариант для создания многооблачной многорегиональной базы данных NoSQL.
Обе эти базы данных могут быть интегрированы с инструментами CI / CD и управляться как часть процесса DevOps. Оба поддерживают Terraform, инструмент » Инфраструктура как код» для легкого предоставления и управления инфраструктурой баз данных.
Модель данных и схема
MongoDB использует формат BSON для хранения своих данных в документах с поддержкой большего количества типов данных, начиная от строк, временных меток и заканчивая различными целочисленными и десятичными типами. Кроме того, он поддерживает размеры документов до 16 МБ — и вы можете расширить этот предел, разбив данные на несколько документов с помощью GridFS.
Напротив, DynamoDB предлагает ограниченное количество доступных типов данных, в то время как отдельные элементы ограничены 400 КБ.
MongoDB — это база данных без схемы. Тем не менее, он позволяет пользователям применять схему с помощью встроенной проверки схемы, если возникает необходимость. Эти схемы можно использовать для проверки:
- Структура документа
- Типы данных
- Поля
- И т.п.
И наоборот, DynamoDB — это база данных без схемы, но без возможности принудительно применять схемы.
Обе базы данных поддерживают транзакции ACID.
Запрос данных и индексов
MongoDB предлагает большую гибкость при запросе данных, поскольку он позволяет пользователям агрегировать и запрашивать данные в исходном виде несколькими способами, такими как:
- Одиночные ключи
- Диапазоны
- Обход графа
- ПРИСОЕДИНЯЕТСЯ
- И т.п.
Напротив, DynamoDB изначально поддерживает только запросы «ключ-значение», но позволяет пользователям выполнять сложные агрегаты с использованием других сервисов AWS, таких как Amazon Redshift и Elastic MapReduce. Однако использование этих различных услуг увеличивает:
- Расходы
- Задержка
- Сложность
Когда дело доходит до индексации, MongoDB поддерживает создание индексов для любого поля в документе с полной поддержкой вторичных индексов. Кроме того, он поддерживает различные типы индексации, такие как составной, TTL, хэш, подстановочный знак, текст, массив и т. Д…. И индексы строго соответствуют базовым данным.
Между тем DynamoDB поддерживает два типа вторичных индексов:
- Глобальный вторичный индекс (GSI), который охватывает все данные в базовой таблице по всем разделам и может храниться и масштабироваться отдельно от базовой таблицы данных.
- Локальный вторичный индекс (LSI), который ограничивает область действия базовой таблицей, где значение ключа раздела таблицы совпадает с ключом раздела LSI.
Обе эти базы данных поддерживают многодокументные транзакции, но с ключевыми отличиями:
- MongoDB поддерживает чтение и запись в одни и те же документы и поля в одной транзакции базы данных.
- DynamoDB не поддерживает несколько операций в рамках одной транзакции.
Безопасность базы данных
DynamoDB включает встроенные передовые методы безопасности, поскольку их сервис управляется AWS. Модель аутентификации и авторизации основана на AWS Identity and Access Management (IAM), которая предлагает пользователям детальный контроль над пользователями, ролями и политиками, которые используются для взаимодействия с DynamoDB.
Кроме того, DynamoDB не подключен напрямую к Интернету, поскольку запросы маршрутизируются через шлюз API, авторизация которого управляется AWS.
В стандартной установке MongoDB пользователи несут ответственность за большинство практик безопасности, включая управление доступом, маршрутизацию трафика, брандмауэры и т.д. Хотя это обеспечивает больший контроль над базой данных, это сложная и трудоемкая задача, которая не масштабируется в быстро меняющиеся жизненные циклы разработки.
Тем не менее, MongoDB Atlas с самого начала предоставляет гораздо лучшие практические рекомендации по безопасности, такие как сетевые решения и шифрование для RBAC для аутентификации и авторизации. Обе базы данных поддерживают шифрование данных в состоянии покоя.
Резервное копирование и восстановление базы данных
DynamoDB предлагает репликацию данных в нескольких регионах и нескольких зонах доступности прямо из коробки как часть своего сервиса AWS. Это поддерживает как резервное копирование по требованию, так и автоматическое (непрерывное) резервное копирование с восстановлением на определенный момент времени. Любые другие резервные копии можно легко настроить с помощью инструментов AWS, таких как «AWS Backup», и сохранить в самой AWS.
MongoDB Atlas также поддерживает непрерывное облачное резервное копирование и резервное копирование по запросу, но для правильной настройки всего потребуется больше конфигураций, чем DynamoDB. Кроме того, пользователи несут единоличную ответственность за все задачи резервного копирования и восстановления при локальном или ручном развертывании MongoDB, что ведет к дополнительным операционным расходам.
Выбор MongoDB или DynamoDB
Выбор подходящей базы данных — непростой выбор. Это зависит от множества факторов:
- Требования пользователя
- Развертывание
- Требования к хранилищу
- Функциональность
- Прочие факторы
Даже при сравнении MongoDB и DynamoDB мы не можем сравнивать их напрямую. Поскольку они ориентированы на разные варианты использования.
Например, DynamoDB — это управляемая служба базы данных NoSQL, а MongoDB — это программное обеспечение базы данных NoSQL. Таким образом, ближайшее прямое сравнение будет с MongoDB Atlas, управляемой базой данных, предлагаемой MongoDB Inc и DynamoDB.
Если вы в настоящее время используете эхо-систему AWS для развертывания приложений и управления ими, DynamoDB предлагает лучшее:
- Совместимость
- Легкость использования
- Интеграции
Однако его основным недостатком является блокировка пользователей поставщиком без возможности легко изменить среду развертывания.
С другой стороны, MongoDB Atlas позволяет пользователям использовать любого поддерживаемого облачного провайдера для:
- Создание кластеров базы данных MongoDB
- Переход на локальную базу данных MongoDB с минимальными настройками
MongoDB Atlas предлагает простую платформу для подготовки и управления кластерами MongoDB в мультиоблачных средах. Но при этом не имеет тесной интеграции встроенного продукта, такого как DynamoDB.
Как зрелая платформа, MongoDB имеет преимущество в доступном наборе функций для управления базовым набором данных с помощью собственных проверок схемы, поддержки нескольких типов индексов и т.д. Кроме того, вы можете настроить ее для удовлетворения большинства потребностей базы данных.
Обратитесь к официальной документации MongoDB и DynamoDB как отличной базе для более глубокого изучения каждой базы данных.
Заключение
MongoDB и DynamoDB — это надежные базы данных NoSQL для поддержки различных потребностей пользователей. Однако при выборе наилучшего варианта требуется тщательное рассмотрение. В мире AWS нетрудно использовать собственное решение NoSQL AWS, если в DynamoDB доступны все необходимые функции и возможности.
С другой стороны, MongoDB предлагает надежные корпоративные базы данных NoSQL с богатым набором функций. Которые поддерживают развертывание в нескольких облаках от разных поставщиков без блокировки пользователей проприетарным решением.