MongoDB e DynamoDB armazenam e gerenciam dados uti­li­zando di­fe­ren­tes tipos de ar­qui­te­tura, além de dis­po­ni­bi­li­za­rem recursos distintos. O DynamoDB é to­tal­mente ge­ren­ci­ado pela AWS, o que configura sua mais in­te­res­sante vantagem. O MongoDB, por sua vez, oferece mais liberdade aos usuários.

Por que re­co­men­da­mos esses dois sistemas NoSQL?

No passado, não havia como fugir de bancos de dados SQL clássicos. Contudo, o de­sen­vol­vi­mento de apli­ca­ções cada vez maiores demandou a ela­bo­ra­ção de soluções de ge­ren­ci­a­mento e ar­ma­ze­na­mento de dados al­ter­na­ti­vas, como de sistemas NoSQL. Por não fun­ci­o­na­rem de forma re­la­ci­o­nal, o MongoDB e o DynamoDB, ambos NoSQL, são muito mais flexíveis e es­ca­lá­veis, ex­pan­dindo-se de acordo com a demanda de cada usuário. Em vez de tra­ba­lha­rem com tabelas, essas soluções baseiam-se pri­o­ri­ta­ri­a­mente em do­cu­men­tos, sendo capazes de armazenar dados não es­tru­tu­ra­dos e se­mi­es­tru­tu­ra­dos de forma ordenada e clara, o que também eco­no­mi­zando espaço.

O que é MongoDB?

O MongoDB, lançado em 2009 pela empresa 10gen (atual MongoDB, Inc.), tornou-se um dos sistemas de ge­ren­ci­a­mento de banco de dados NoSQL mais populares do mundo. De código aberto (mas com planos pagos que incluem suporte para empresas), a solução é dis­tri­buída sob a licença SSPL (Server Side Public Licence) e de­sen­vol­vida em C++. A linguagem de consulta é a MQL, do próprio MongoDB, já os dados são ar­ma­ze­na­dos no formato JSON binários (BSON). O nome MongoDB faz re­fe­rên­cia ao termo inglês huMONGOus, que significa gi­gan­tesco. Fle­xi­bi­li­dade e es­ca­la­bi­li­dade são suas prin­ci­pais ca­rac­te­rís­ti­cas.

O que é o DynamoDB?

O DynamoDB, de pro­pri­e­dade da Amazon, existe desde 2012 e consiste em um banco de dados NoSQL sem servidor, to­tal­mente ge­ren­ci­ado pela AWS (Amazon Web Services). A solução pro­pri­e­tá­ria, de­sen­vol­vida em Java, é capaz de gerenciar cres­cen­tes volumes de dados, inclusive da própria pla­ta­forma de comércio ele­trô­nico da Amazon. Orientado a do­cu­men­tos, esse banco de dados é con­si­de­rado o mais rápido e escalável entre os NoSQL. Embora também trabalhe com tabelas, estas não são re­la­ci­o­nais. Jus­ta­mente por essa estrutura, o sistema é par­ti­cu­lar­mente adequado a grandes empresas, apesar de também atender empresas menores que lidam com volumes de dados e cargas de trabalho que aumentam com o tempo.

MongoDB vs. DynamoDB: Adequação e es­ca­la­bi­li­dade

Ao com­pa­rar­mos MongoDB e DynamoDB, per­ce­be­mos que ambos os bancos de dados NoSQL têm fi­na­li­da­des parecidas: Tanto um quanto o outro podem ser usados para gerenciar grandes quan­ti­da­des de dados que precisam ser ar­ma­ze­na­dos de forma clara e objetiva. Para tanto, o MongoDB faz uso da técnica de es­ca­lo­na­mento ho­ri­zon­tal sharding, que divide e distribui, entre ser­vi­do­res, grandes volumes de dados e intensas cargas de trabalho. Como o sistema também suporta dados não es­tru­tu­ra­dos, ele é con­si­de­rado ideal para armazenar e gerenciar sites e apli­ca­ti­vos de comércio ele­trô­nico, já que todo o conteúdo ne­ces­sá­rio, inclusive imagens e vídeos, pode ser ar­ma­ze­nado em um único documento. Assim, re­cu­pe­ra­ções ocorrem ime­di­a­ta­mente e sem atraso per­cep­tí­vel.

O DynamoDB oferece opções de im­ple­men­ta­ção se­me­lhan­tes às do con­cor­rente. Tanto é que a própria Amazon utiliza o banco de dados para armazenar e gerenciar apli­ca­ti­vos, mídias, jogos e a pla­ta­forma de comércio ele­trô­nico em si. A uti­li­za­ção dessa solução pela gigante do e-commerce é jus­ti­fi­cá­vel, já que o DynamoDB em nada fica para trás quando comparado ao MongoDB. Pelo menos te­o­ri­ca­mente, ele oferece infinitas pos­si­bi­li­da­des de es­ca­lo­na­mento.

A grande diferença entre esses dois sistemas NoSQL diz respeito à in­te­gra­ção destes com a pla­ta­forma de serviços AWS. O DynamoDB funciona somente nesse ecos­sis­tema. Isso quer dizer que ele só é adequado a usuários dispostos a trabalhar dentro dessa limitação. Apesar disso, o DynamoDB oferece abran­gen­tes recursos de ad­mi­nis­tra­ção, além de processos de leitura e gravação ex­tre­ma­mente rápidos, mesmo mediante aumentos rápidos do volume de dados.

MongoDB vs. DynamoDB: Fun­ci­o­na­mento

Embora os dois bancos de dados tenham fi­na­li­da­des parecidas, nossa com­pa­ra­ção MongoDB vs. DynamoDB conseguiu iden­ti­fi­car im­por­tan­tes di­fe­ren­ças de fun­ci­o­na­mento.

O MongoDB dispensa o uso de tabelas típicas de SQL, ar­ma­ze­nando dados em do­cu­men­tos que, por sua vez, são agrupados em coleções. Tais do­cu­men­tos, sempre no formato BSON, consistem em pares de valores-chave com di­fe­ren­tes esquemas. Estes podem ser alterados, adi­ci­o­nando-se ou excluindo-se um de seus campos. Embora chaves, no MongoDB, sejam formadas por cadeias de ca­rac­te­res, valores também podem ser formados por cadeias de ca­rac­te­res, além de por outros do­cu­men­tos, matrizes ou booleanos. Pesquisas, por sua vez, são re­a­li­za­das por índices de texto.

O DynamoDB funciona como um re­po­si­tó­rio de valores-chave NoSQL, ar­ma­ze­nando dados em discos rígidos SSD. Assim, dados podem ser ar­ma­ze­na­dos sem a ne­ces­si­dade de esquemas, como de valores numéricos, cadeias de ca­rac­te­res e binários. In­for­ma­ções são divididas entre tabelas não re­la­ci­o­nais, que consistem em artigos contendo ao menos um atributo. Para criar, ler, atualizar ou excluir gravações e leituras, você deverá fazer uso das operações “Create” “Read” “Update” e “Delete”, res­pec­ti­va­mente.

MongoDB vs. DynamoDB: Estrutura dos dados

MongoDB e DynamoDB também possuem di­fe­ren­tes es­tru­tu­ras e tamanhos de dados.

O formato de ar­ma­ze­na­mento do MongoDB, BSON, cor­res­ponde à forma binária do JSON (Ja­vaS­cript Object Notation), que não requer um esquema. Portanto, antes de criar um novo documento, você não precisará gerar uma nova coleção. É possível se criar do­cu­men­tos com comandos simples, que podem ser inseridos a coleções já exis­ten­tes ou a coleções au­to­ma­ti­ca­mente geradas.

A estrutura dos dados do DynamoDB, por outro lado, lembra bem mais a estrutura de tabelas SQL clássicas. Tabelas do DynamoDB também contêm elementos com de­ter­mi­na­das pro­pri­e­da­des, embora o número pro­pri­e­da­des varie. Antes de fazer uso de uma tabela, você deverá criá-la e definir uma chave primária para a partição dos dados. Cada partição conterá três nós com a cópia dos dados. Como o banco de dados é to­tal­mente ge­ren­ci­ado pelo sistema, esse processo é to­tal­mente au­to­ma­ti­zado.

Outra diferença gritante diz respeito ao tamanho dos dados su­por­ta­dos. Enquanto o MongoDB aceita dados com tamanho máximo de 16MB, o DynamoDB tem limite de 400 KB.

MongoDB vs. DynamoDB: Dis­po­ni­bi­li­dade dos dados

Por padrão, o DynamoDB divide seus nós em três, sendo um nó primário (líder) e dois nós su­bor­di­na­dos. Todas as operações de leitura e gravação são re­a­li­za­das, em um primeiro momento, no nó primário. Somente depois a re­pli­ca­ção é executada nos nós su­bor­di­na­dos. No entanto, operações de leitura podem ser dis­tri­buí­das entre os três nós, para evitar perdas de de­sem­pe­nho.

O MongoDB, por sua vez, distribui dados em nós variados, evitando, assim, possíveis falhas do servidor. Se­me­lhan­te­mente à solução da Amazon, um nó principal recebe as operações de gravação e, somente então, transmite os dados aos nós su­bor­di­na­dos. Se um nó principal falhar, outro nó assumirá au­to­ma­ti­ca­mente o lugar, trans­for­mando-se em nó principal que já contém todos os dados, graças ao processo de re­pli­ca­ção — esse processo pode levar até 60 segundos.

MongoDB vs. DynamoDB: Ar­qui­te­tura, com­pa­ti­bi­li­dade e lin­gua­gens de pro­gra­ma­ção

Entre as di­fe­ren­ças mais ex­plí­ci­tas de MongoDB e DynamoDB estão suas ar­qui­te­tura e o for­ne­ci­mento de seus serviços.

O MongoDB é uma solução de código aberto to­tal­mente gratuita, apesar de oferecer pacotes pagos que incluem suporte para empresas. Além disso, esse sistema NoSQL é com­pa­tí­vel com a maioria dos sistemas ope­ra­ci­o­nais, soluções de nuvem e con­têi­ne­res. O grau de controle e de esforço ad­mi­nis­tra­tivo, en­tre­tanto, depende in­tei­ra­mente das escolhas de cada usuário, uma vez que esse banco de dados é con­fi­gu­rado e mantido de forma in­de­pen­dente. Esses processos podem exigir co­nhe­ci­mento e bastante tempo, mas oferece, em troca, total liberdade.

Cloud Compute Engine da IONOS

Empresas de médio e grande porte optam pela nuvem da Alemanha. Serviços IaaS e PaaS são para campeões.

  • Seguro
  • Confiável
  • Flexível

A abordagem do DynamoDB não poderia ser mais diferente: esse banco de dados é to­tal­mente ge­ren­ci­ado pela AWS, não sendo adequado a nenhum outro ambiente. Embora esse NoSQL funcione de forma ex­cep­ci­o­nal com as demais fer­ra­men­tas da Amazon, ele não combina com soluções de terceiros. Por outro lado, o DynamoDB vem to­tal­mente pronto para ser usado e realiza atu­a­li­za­ções, di­men­si­o­na­men­tos e outras tarefas au­to­ma­ti­ca­mente, apesar de seus usuários não poderem ter uma visão tão abran­gente do que ocorre nos bas­ti­do­res.

Acompanhe nossa tabela com­pa­ra­tiva MongoDB vs. DynamoDB para descobrir as lin­gua­gens de pro­gra­ma­ção su­por­ta­das por cada um dos sistemas:

Linguagem de pro­gra­ma­Ã§Ã£o Suportada por Mongo DB Suportada por DynamoDB
Ac­ti­ons­cript ✓ ✗
C ✓ ✗
C# ✓ ✗
C++ ✓ ✗
Clojure ✓ ✗
Cold­Fu­sion ✓ ✓
D ✓ ✗
Dart ✓ ✗
Delphi ✓ ✗
Erlang ✓ ✓
Go ✓ ✗
Groovy ✓ ✓
Haskell ✓ ✗
Java ✓ ✓
Ja­vaS­cript ✓ ✓
Kotlin ✓ ✗
Lisp ✓ ✗
Lua ✓ ✗
MatLab ✓ ✗
.net ✗ ✓
Perl ✓ ✓
PHP ✓ ✓
PowerShell ✓ ✗
Prolog ✓ ✗
Python ✓ ✓
R ✓ ✗
Ruby ✓ ✓
Scala ✓ ✗
Smalltalk ✓ ✗
Swift ✓ ✗

MongoDB vs. DynamoDB: Segurança

Entre as ati­vi­da­des au­to­ma­ti­ca­mente re­a­li­za­das pelo DynamoDB estão tarefas de segurança. Por fazer parte da pla­ta­forma de serviços AWS e do modelo IAM (Identity and Access Ma­na­ge­ment), esse banco de dados é for­te­mente protegido. Ainda, ele não realiza conexões diretas com a internet, já que todas as so­li­ci­ta­ções são pri­mei­ra­mente roteadas por um gateway de API.

Com­pa­ra­ti­va­mente, a ma­nu­ten­ção da segurança é sig­ni­fi­ca­ti­va­mente maior no MongoDB. Au­to­ri­za­ções de acesso, papéis e firewalls devem ser im­ple­men­ta­dos e cuidados de forma in­de­pen­dente pelos usuários, pelo menos na versão gratuita. Planos ge­ren­ci­a­dos fornecem recursos de segurança adi­ci­o­nais, que reduzem os esforços de proteção.

Dica

A solução mais segura para você é o Managed MongoDB da IONOS. Obtenha o ambiente NoSQL perfeito para os seus dados e beneficie-se dos co­nhe­ci­men­tos e da ex­pe­ri­ên­cia dos nossos es­pe­ci­a­lis­tas, em consultas gratuitas!

Empresas que utilizam o MongoDB ou o DynamoDB

Grandes empresas fazem uso do sistema NoSQL do MongoDB. Entre as mais co­nhe­ci­das estão:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Fours­quare
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

Entre as empresas e pla­ta­for­mas que gerenciam seus dados com o sistema do DynamoDB estão:

  • Airbnb
  • Amazon
  • Comcast
  • Disney
  • Dropbox
  • Netflix
  • Nike
  • Redfin
  • Samsung
  • Tinder
  • Zoom

MongoDB vs. DynamoDB: Qual escolher?

Nossa com­pa­ra­ção MongoDB vs. DynamoDB é taxativa ao afirmar que ambos são sistemas de ge­ren­ci­a­mento de banco de dados NoSQL avançados, flexíveis e es­ca­lá­veis. Eles se di­fe­ren­ciam, no entanto, nas abor­da­gens adotadas.

Se você está pro­cu­rando por um sistema per­fei­ta­mente integrado à pla­ta­forma de serviços AWS, que dispõe de uma ar­qui­te­tura sólida e que cuida da maioria das tarefas ad­mi­nis­tra­ti­vas de forma au­to­má­tica, o DynamoDB será ideal. Se, por outro lado, você busca por liberdade de escolha em ambientes e con­fi­gu­ra­ções de nuvem, o MongoDB pode ser a melhor solução.

Dica

No nosso Digital Guide, você encontra vários outros artigos com­pa­ra­ti­vos entre bancos de dados. Descubra, por exemplo, se­me­lhan­ças e di­fe­ren­ças entre MariaDB e MySQL. Conheça os melhores bancos de dados de código aberto e comece a trabalhar com bancos de dados NoSQL com total segurança, com o nosso tutorial MongoDB.

Ir para o menu principal