При сравнении MongoDB и DynamoDB особенно заметен другой подход к хранению и управлению данными. Кроме того, DynamoDB полностью встроен в AWS, а MongoDB предлагает больше свободы.
- MongoDB против DynamoDB: два рекомендуемых сервиса NoSQL
- Что такое MongoDB?
- Что такое DynamoDB?
- MongoDB против DynamoDB: назначение и масштабируемость
- Функциональность
- Структура данных
- Доступность данных
- Инфраструктура, совместимость и языки программирования
- Безопасность
- Какая услуга соответствует вашим потребностям?
MongoDB против DynamoDB: два рекомендуемых сервиса NoSQL
Хотя в прошлом практически не было возможности обойти классическую базу данных SQL, появление все больших объемов данных означает, что приложениям и веб-сайтам нужен новый способ обработки данных. Во многих случаях решением являются так называемые системы NoSQL (не только SQL), такие как MongoDB и DynamoDB, которые не работают реляционно и поэтому гораздо более гибки и, прежде всего, лучше масштабируются. Вместо таблиц эти решения в основном полагаются на документы, а это означает, что они также могут хранить неструктурированные или полуструктурированные данные в компактном и понятном виде. Если требования компании растут, база данных также без проблем растет вместе с ними.
Что такое MongoDB?
MongoDB была выпущена в 2009 году компанией 10gen (теперь MongoDB, Inc.) и с тех пор стала одним из самых популярных решений в области систем управления базами данных SQL. Программное обеспечение написано на C++ и сохраняет данные в виде двоичных документов JSON (BSON). MongoDB имеет открытый исходный код, распространяется по лицензии Server Side Public License (SSPL) и предлагает дополнительные пакеты коммерческой поддержки. База данных, получившая свое название от английского термина «huMONGOus» (Гигант), известна своей гибкостью и масштабируемостью. MongoDB использует язык запросов MongoDB (MQL) для запросов.
Что такое DynamoDB?
DynamoDB существует с 2012 года. Бессерверная база данных NoSQL поступает от Amazon и предоставляется AWS (Amazon Web Services) как полностью управляемый сервис. Приложение является запатентованным и изначально было написано на Java для управления растущими объемами данных внутренней электронной коммерции. База данных документоориентирована и считается одним из самых быстрых и масштабируемых решений в сегменте NoSQL. DynamoDB также использует таблицы, но они не являются реляционными. Структура системы делает ее особенно подходящей не только для крупных компаний, но и для небольших компаний, чьи объемы данных и рабочие нагрузки со временем увеличиваются.
MongoDB против DynamoDB: назначение и масштабируемость
При сравнении MongoDB и DynamoDB, конечно, можно увидеть схожие области применения двух баз данных NoSQL: обе системы можно использовать везде, где необходимо хранить большие объемы данных и четко управлять ими. MongoDB использует технику, называемую шардингом, для горизонтального масштабирования. Большие наборы данных автоматически разделяются и нагрузка распределяется между несколькими серверами. Поскольку система может легко работать с неструктурированными данными, она идеально подходит для управления и развертывания веб-сайтов и приложений электронной коммерции. Весь необходимый контент, включая изображения и видео, сохраняется в одном документе. Извлечение происходит немедленно и без заметных задержек во время текущей работы.
DynamoDB предлагает аналогичные варианты развертывания. Сама Amazon рекомендует, среди прочего, свою собственную базу данных для приложений, мультимедийных рабочих нагрузок, электронной коммерции и игровых платформ. Это утверждение вполне понятно: системе не приходится прятаться от сравнения MongoDB с DynamoDB, и она предлагает – по крайней мере теоретически – бесконечные возможности масштабирования.
Однако одним из самых больших различий между двумя системами является интеграция с AWS. DynamoDB не работает за пределами этой экосистемы и поэтому подходит только для пользователей, которые могут жить и работать с этим ограничением. Вы получаете широкие возможности администрирования и получаете выгоду от чрезвычайно быстрых процессов чтения и записи даже при быстро растущих объемах данных.
Функциональность
Хотя обе базы данных могут преследовать схожие цели, если вы сравните MongoDB и DynamoDB более внимательно, вы быстро увидите разные подходы: MongoDB полностью обходится без таблиц, типичных для SQL, и вместо этого хранит данные в документах, которые, в свою очередь, объединяются в коллекции. Эти документы в формате BSON состоят из пар ключ-значение, могут иметь разные схемы и могут быть изменены путем добавления или удаления поля. Хотя ключи всегда состоят из строк, значения также могут содержать строки, другие документы, массивы или логические значения, среди прочего. Текстовый поиск в MongoDB осуществляется через текстовый индекс.
DynamoDB работает как хранилище значений ключей NoSQL, которое хранит данные на жестких дисках SSD. Данные могут храниться в виде числовых значений, строк или двоичных значений без какой-либо схемы. Информация разделена на нереляционные таблицы, состоящие из статей, которые должны содержать хотя бы один атрибут. Операции «Создать», «Чтение», «Обновить» и «Удалить» доступны для записи и чтения.
Структура данных
Существуют также различия при сравнении MongoDB и DynamoDB с точки зрения структуры данных и максимального размера данных. Формат хранения MongoDB называется BSON и представляет собой двоичную форму нотации объектов JavaScript (JSON), не требующую схемы. Если вы хотите создать новый документ, вам не обязательно заранее создавать собственную коллекцию. Вместо этого вы создаете документ с помощью простой команды, которая затем либо вставляется в существующую коллекцию, либо создается автоматически. Система допускает передачу данных максимальным размером 16 МБ.
С другой стороны, структура данных DynamoDB гораздо больше напоминает табличную форму классических решений SQL. Здесь тоже есть таблицы, содержащие элементы с определенными свойствами, хотя количество этих свойств может варьироваться. Прежде чем вы сможете использовать таблицу, вы должны сначала создать ее и определить первичный ключ, который разделяет данные. Каждый из этих разделов содержит три узла с копией данных. Поскольку база данных полностью управляется системой, этот процесс полностью автоматизирован. Также есть заметная разница между MongoDB и DynamoDB в размере хранимых документов: у сервиса Amazon ограничение составляет максимум 400 КБ.
Доступность данных
По умолчанию DynamoDB делит три упомянутых узла на основной узел (лидерный узел) и два дочерних узла. Первичный узел — это место, где в первую очередь выполняются все операции записи и чтения. Только после этого репликация происходит на двух подчиненных узлах. Однако существует также возможность распределения процессов чтения по всем трем узлам, чтобы предотвратить потери производительности.
Немного более старое решение в сравнении MongoDB и DynamoDB также распределяет данные по нескольким узлам и, таким образом, предотвращает проблемы, вызванные сбоем сервера. Подобно конкурентам Amazon, существует основной узел, который получает записи, а затем делает данные доступными для дочерних узлов. При выходе из строя основного узла один из остальных узлов автоматически занимает его место и становится ведущим узлом, который уже содержит все данные благодаря репликации. Однако этот процесс может занять до 60 секунд.
Инфраструктура, совместимость и языки программирования
Одним из самых явных различий между MongoDB и DynamoDB является развертывание и инфраструктура этих двух сервисов. MongoDB — это полностью бесплатное решение с открытым исходным кодом и собственной поддержкой. Система управления базами данных совместима с большинством облачных решений, операционных систем и контейнеров. Сколько усилий по контролю и администрированию необходимо и возможно, полностью зависит от пользователя. База данных должна настраиваться и обслуживаться независимо. С одной стороны, это может потребовать много усилий и времени, но с другой стороны, это также дает большую свободу.
DynamoDB использует другой подход: база данных является частью экосистемы AWS и не работает вне этой среды. Хотя DynamoDB оптимально работает с другими инструментами Amazon, приложение лишь незначительно совместимо с другими решениями. Полностью управляемая база данных готова к немедленному использованию и автоматически выполняет обновления, масштабирование и другие задачи. Однако пользователи имеют лишь ограниченное представление о работе «за кулисами».
В следующей таблице приведены языки программирования, которые поддерживают обе системы:
| Язык программирования | Работает на базе Mongo DB | Работает на базе DynamoDB |
|---|---|---|
| Action script | ✓ | ✗ |
| C | ✓ | ✗ |
| C# | ✓ | ✗ |
| C++ | ✓ | ✗ |
| Clojure | ✓ | ✗ |
| ColdFusion | ✓ | ✓ |
| D | ✓ | ✗ |
| darts | ✓ | ✗ |
| Delphi | ✓ | ✗ |
| Erlangen | ✓ | ✓ |
| Go | ✓ | ✗ |
| Groovy | ✓ | ✓ |
| Haskell | ✓ | ✗ |
| Java | ✓ | ✓ |
| JavaScript | ✓ | ✓ |
| Kotlin | ✓ | ✗ |
| Lisp | ✓ | ✗ |
| Lua | ✓ | ✗ |
| MatLab | ✓ | ✗ |
| .net | ✗ | ✓ |
| Pearl | ✓ | ✓ |
| PHP | ✓ | ✓ |
| PowerShell | ✓ | ✗ |
| prolog | ✓ | ✗ |
| python | ✓ | ✓ |
| R | ✓ | ✗ |
| Ruby | ✓ | ✓ |
| Scala | ✓ | ✗ |
| Small talk | ✓ | ✗ |
| Swift | ✓ | ✗ |
Безопасность
Задачи, которые DynamoDB берет на себя для своих пользователей, также включают все действия по обеспечению безопасности. База данных, являющаяся частью AWS Cosmos и модели IAM (Управление идентификацией и доступом), очень хорошо защищена и встроена. Кроме того, отсутствует прямое подключение к Интернету, поскольку запросы изначально направляются через шлюз API.
По сравнению с MongoDB и DynamoDB рабочая нагрузка при использовании MongoDB значительно выше, если вы хотите обеспечить безопасность своей базы данных. Авторизация доступа, роли и межсетевые экраны должны реализовываться и поддерживаться независимо, по крайней мере, в стандартных версиях системы. В этом могут помочь управляемые решения, обеспечивающие все необходимые функции безопасности.
MongoDB против DynamoDB: какие компании доверяют этим двум базам данных?
К компаниям, которые полностью или частично полагаются на MongoDB, относятся:
- Adobe
- Amadeus
- AppScale
- Craftbase
- Disney
- Etsy
- Foursquare
- Lyft
- MTV
- The New York Times
- Via Varejo
Примеры компаний и платформ, которые управляют своими данными с помощью DynamoDB, включают:
- Airbnb
- Amazon
- Comcast
- Disney
- Dropbox
- Netflix
- Nike
- Redfin
- Samsung
- Tinder
- Zoom
Какая услуга соответствует вашим потребностям?
MongoDB и DynamoDB — две очень мощные системы управления базами данных, которые остаются гибкими и масштабируемыми благодаря подходу NoSQL. Однако подход этих двух решений отличается друг от друга. Если вы ищете систему, которая идеально интегрирована в пространство AWS, имеет надежную архитектуру безопасности и берет на себя большинство задач управления, DynamoDB — очень хороший выбор. Однако, если вам нужна свобода выбора в отношении облачной среды и конфигурации, MongoDB — отличный сервис.








