DynamoDB против MongoDB: какой вариант NoSQL лучше?

Опубликовано: 4 Марта, 2023
DynamoDB против MongoDB: какой вариант NoSQL лучше?

Многие из нас выросли, используя системы управления реляционными базами данных, которые использовали таблицы, строки и столбцы для организации данных и полагались на языки запросов, такие как SQL, для извлечения и хранения данных. Хотя она хорошо работала для хранения базовых структурированных данных, РСУБД не могла обеспечить производительность, масштабируемость и гибкость современных приложений, интенсивно использующих данные. Чтобы удовлетворить этот спрос, появились базы данных NoSQL. Эти базы данных могут хранить неструктурированные данные, такие как данные пользователей и сеансов, журналы, чаты, видео, изображения и данные с устройств IoT. Сегодня существует множество баз данных NoSQL, из которых DynamoDB и MongoDB являются одними из самых популярных.

Что такое DynamoDB?

DynamoDB от Amazon — это полностью управляемая база данных NoSQL, известная своей быстрой и предсказуемой производительностью. Удобным аспектом является то, что вы можете переложить рутинные административные задачи, такие как подготовка оборудования и масштабирование кластера, на команду DynamoDB, чтобы вы могли сосредоточиться на основных аспектах своего бизнеса.

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

Что такое MongoDB?

MongoDB — это кроссплатформенная база данных с открытым исходным кодом, которая использует JSON-подобные документы в качестве схем. Разработанный компанией MongoDB Inc., он написан на C, C++ и JavaScript.

Некоторые из характерных особенностей MongoDB:

  • Индексы — вы можете индексировать поля с первичными и вторичными полями.
  • Запросы — MongoDB поддерживает широкий спектр запросов, таких как поля, диапазонные запросы, выражения, функции JavaScript и многое другое.
  • Наборы реплик — он обеспечивает высокую доступность с помощью наборов реплик, и каждый набор может действовать как первичная или вторичная реплика в любое время.
  • Масштабирование — эта база данных масштабируется горизонтально с помощью процесса, называемого сегментированием.
  • Хранилище файлов — MongoDB также можно использовать в качестве системы хранения файлов. Это дает вам возможность реплицировать файлы на нескольких машинах.
  • Ограниченные коллекции — он поддерживает коллекции фиксированного размера, также называемые ограниченными коллекциями.

Эти функции делают его стабильным и популярным выбором для хранения неструктурированных данных.

Теперь, когда у нас есть четкое представление о том, что такое DynamoDB и MongoDB, давайте посмотрим, чем они отличаются.

DynamoDB против MongoDB

И DynamoDB, и MongoDB хорошо работают в большинстве ситуаций. Но вот некоторые области, где они отличаются.

Настраивать

Это одна из областей, в которой DynamoDB значительно превосходит MongoDB.

Поскольку DynamoDB является частью AWS, вы можете просто перейти в консоль AWS и запустить мастер для создания баз данных. Это действительно так просто!

MongoDB, с другой стороны, представляет собой полный лабиринт инструкций. Это особенно не лучший выбор для новичков, так как многие ошибки аутентификации не говорят сами за себя. Даже у опытных пользователей настройка MongoDB может занять несколько часов.

Это сложно, потому что нет четкого документа, который говорит вам, как исправить ошибки. Хотя на сайте есть несколько документов, это все равно бесполезно. И что еще хуже, большая часть этого работает только на терминале Ubuntu. Так что, если у вас какая-либо другая операционная система, будьте готовы потратить значительное время и силы на процесс установки.

Хорошей альтернативой является платная версия под названием MongoDB Atlas, которая размещена в облаке и проще в установке, чем MongoDB.

Библиотека программирования

Здесь MongoDB выигрывает у DynamoDB.

Вам придется писать длинные фрагменты кода даже для самых простых задач в DynamoDB. Вот пример кода из документации AWS для создания таблицы и загрузки данных. В нем более тысячи строк кода!

Вдобавок ко всему, все основные методы DynamoDB являются асинхронными, поэтому, если вы хотите заниматься синхронным программированием, вас ждет масса разочарований. Выполнение запросов тоже болезненно, так как обычный запрос принимает только один параметр. Представьте себе ситуацию, когда вам придется искать все предметы с определенным атрибутом — это просто кошмар!

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

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

экономика

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

Вы можете использовать DynamoDB бесплатно в этих пределах.

  • 25 ГБ индексированного хранилища данных.
  • Максимум 200 миллионов запросов в месяц, включая 25 единиц емкости записи и 25 единиц емкости чтения соответственно.
  • Возможность развертывания таблиц DynamoDB максимум в двух регионах AWS.

Если вы выйдете за эти пределы, вам придется платить за то, что вы используете.

MongoDB также работает по аналогичной модели. Первые 25 ГБ бесплатны, после этого вы платите за то, что используете. Это для стежка MongoDB.

Если вы хотите использовать атлас MongoDB, вот структура ценообразования.

  • M5 стоит 0,035 доллара в час.
  • M10 стоит 0,09 доллара в час.
  • M20 стоит 0,23 доллара в час.
  • M30 стоит 0,59 доллара в час.

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

Безопасность и доступ

В последнее время MongoDB упоминается в новостях по неправильным причинам. Было много случаев, когда хакеры получали доступ к базам данных MongoDB. По данным TheRegister, злоумышленникам удалось взломать более 27 000 баз данных MongoDB всего за несколько часов. Эти злоумышленники используют уязвимости в MongoDB, такие как отсутствие аутентификации и удаленного доступа, чтобы удалить исходную базу данных и сохранить ее копию для выкупа.

Но дело в том, что сама MongoDB не является небезопасной, это то, как она настроена и используется. Конфигурация по умолчанию небезопасна, и многие пользователи даже не подозревают об этом! Джон Мазерли, основатель Shodan, в 2015 году предупредил, что около 30 000 баз данных MongoDB уязвимы для злоумышленников. С тех пор он вырос, и когда злоумышленники-вымогатели обнаружили уязвимость, они быстро нажились.

Даже сегодня эта уязвимость существует, поскольку по умолчанию аутентификация отключена. Как только вы включите аутентификацию с помощью имени пользователя и пароля, это будет достаточно безопасно.

DynamoDB — это безопасная база данных, так как доступ предоставляется через IAM. Он также поставляется с обычными мерами безопасности AWS.

Как лучше?

Ну, это субъективно.

DynamoDB имеет высокие оценки по безопасности и хранению, а MongoDB — по простоте использования. Кроме того, если вы программисты, знакомые с асинхронным программированием, DynamoDB будет хорошим вариантом.

Выбор действительно зависит от того, что важно для вас и вашей организации.

Дайте нам знать, какой ваш выбор и почему в разделе комментариев.