Os bancos de dados são um componente essencial da maioria dos aplicativos e sites. Eles armazenam dados essenciais, como conteúdo e detalhes do usuário, e podem capturar eventos que ocorrem em um aplicativo. Há muitas tecnologias de bancos de dados diferentes disponíveis, e a que você escolher pode afetar tudo, desde a arquitetura do aplicativo até os processos de desenvolvimento.

Vamos analisar de perto o DynamoDB e o MongoDB, duas ofertas populares que não são bancos de dados relacionais tradicionais. Você pode decidir se essa abordagem “NoSQL” é adequada para o seu aplicativo e qual dessas duas plataformas de banco de dados fará o melhor trabalho.

Entendendo a tecnologia: DynamoDB vs MongoDB

Na última década, os bancos de dados NoSQL ganharam popularidade para atender à demanda por uma tecnologia mais flexível e dimensionável. O crescimento das redes sociais e do conteúdo gerado pelo usuário alimentou parcialmente essa demanda.

Durante anos, a maioria dos aplicativos usou bancos de dados SQL tradicionais, nos quais cada linha de dados descreve uma entidade distinta e seus relacionamentos com outras entidades. Ao responder a uma consulta, um banco de dados relacional une os dados de diferentes linhas e os retorna a um aplicativo cliente. Essa arquitetura é otimizada para reduzir o armazenamento e eliminar a duplicação de dados repetidos, já que cada elemento de um conjunto de resultados normalmente é armazenado apenas uma vez no banco de dados.

Por outro lado, os bancos de dados NoSQL geralmente armazenam a entidade base e os dados relacionados em um único documento. Isso significa que alguns dados são registrados várias vezes, aumentando os requisitos de armazenamento. Mas, como os custos de armazenamento diminuíram, a escalabilidade das soluções NoSQL ganhou precedência para muitos usos. Sua arquitetura subjacente torna os bancos de dados NoSQL excepcionalmente adequados para serem executados em clusters com dados distribuídos em vários nodes.

O que é o DynamoDB?

O DynamoDB é um banco de dados NoSQL sem servidor desenvolvido pela Amazon para dar suporte ao seu famoso destino de compras on-line, e então, em 2012, disponibilizado para os desenvolvedores em sua plataforma de hospedagem na nuvem, a Amazon Web Services (AWS). Assim como fez com a loja da Amazon, o DynamoDB responde a consultas sem a sobrecarga de computação necessária para fazer as junções às vezes complexas de um banco de dados relacional.

Otimizado para escalar, o DynamoDB é um armazenamento de itens de valor-chave em que todos os dados relacionados a uma chave específica são armazenados com ela. Não é necessário fazer junções! Tendo eliminado esse requisito, os engenheiros otimizaram o DynamoDB para retornar dados rapidamente.

A Amazon disponibiliza o DynamoDB por meio do AWS como um serviço totalmente gerenciado. É por isso que ele se tornou popular entre os desenvolvedores, que podem usá-lo com o mínimo de sobrecarga de banco de dados. Além disso, o serviço é dimensionado facilmente à medida que os aplicativos acumulam usuários. E se uma empresa usa outras ferramentas do AWS, o DynamoDB pode se conectar a elas sem problemas.

Logomarca do DynamoDB.
Logomarca do DynamoDB.

Como o DynamoDB funciona?

O DynamoDB é um armazenamento de itens de valor-chave NoSQL, e por ser um serviço gerenciado, sua arquitetura e infraestrutura subjacentes são abstraídas do desenvolvedor.

Na estrutura, os dados são particionados usando a chave primária, sendo que cada partição contém três nodes que mantêm uma cópia dos dados. Esse particionamento facilita o dimensionamento, pois os dados são distribuídos em vários servidores. Além disso, a replicação de dados oferece redundância se um determinado nó falhar.

Um dos três nodes é designado como nó líder, no qual todas as gravações são executadas antes de serem replicadas para os outros dois nós. Ao gravar primeiro no node líder, você permite que o DynamoDB mantenha gravações consistentes. Para uma consistência de leitura ideal, todas as leituras também devem usar o node líder.

Essa abordagem tem um custo de desempenho em aplicativos de leitura intensa, portanto, o DynamoDB oferece aos usuários a possibilidade de optar pela consistência “eventual”. Isso permite que as leituras sejam distribuídas por todos os nodes. No entanto, essa opção pode sacrificar a precisão se os dados não tiverem se propagado para todos os nodes antes de uma operação de leitura.

Vantagens e desvantagens do DynamoDB

As principais vantagens do DynamoDB são que ele é rápido, escalável e sem servidor. Você pode configurá-lo em minutos com o mínimo de sobrecarga de infraestrutura. O AWS cuida da segurança, das atualizações, do gerenciamento de servidores e da garantia de alta disponibilidade. Além disso, o DynamoDB pode ser dimensionado infinitamente (limitado apenas pelo tamanho físico do AWS) em um modelo de pagamento por uso. Por fim, o DynamoDB oferece leituras e gravações rápidas, com recursos de dimensionamento que garantem um desempenho rápido e contínuo à medida que o armazenamento de dados cresce.

Uma desvantagem são suas opções mínimas de consulta. Consultas de chaves são úteis, mas se você precisar de consultas mais complexas, como agregações, terá que exportar os dados para um banco de dados externo para análise. Além disso, o DynamoDB está disponível somente no AWS. Se você já estiver integrado ao ecossistema do AWS, isso não será um problema. Se a sua empresa quiser implantar localmente, terá de procurar em outro lugar.

O que é o MongoDB?

O MongoDB é um armazenamento de documentos NoSQL lançado inicialmente em 2009 como um banco de dados de código aberto com a opção de pacotes de suporte comercial. Ele armazena documentos JSON como objetos JSON binários (BSON), que podem armazenar estruturas de dados complexas, como propriedades e arrays aninhadas.

O MongoDB é executado nas plataformas Windows, macOS e Linux e oferece suporte a várias linguagens de programação. Você também encontrará o MongoDB disponível em plataformas de nuvem populares da Amazon, Google e Microsoft.

O MongoDB é popular principalmente por causa de sua flexibilidade. Oferece todas as vantagens de um banco de dados NoSQL e atende a requisitos mais complexos, como transações ACID para integridade de dados, consultas de agregação (aggregation-pipeline), e união de conjuntos de dados. E, devido ao seu suporte nativo a JavaScript, é um banco de dados de backend cada vez mais popular para sites que usam essa popular linguagem de programação.

Logo do MongoDB.
Logo do MongoDB.

Como o MongoDB funciona?

O MongoDB armazena objetos BSON que contêm um ou mais pares de valores-chave. Os valores podem ser tipos de dados simples, como strings e registros de data e hora, ou tipos complexos, como objetos e arrays aninhados.

O MongoDB armazena documentos em coleções, semelhantes a linhas em uma tabela. É uma prática comum que os documentos em uma coleção compartilhem um esquema semelhante, mas mesmo os documentos com as mesmas chaves podem ter esquemas diferentes — chaves com o mesmo nome, não precisam armazenar o mesmo tipo de dados. O MongoDB pode impor validação nas propriedades quando os registros são inseridos ou atualizados, e há um requisito para que os dados em determinadas chaves sejam de um tipo específico.

O MongoDB também oferece fragmentação (sharding), que é semelhante ao particionamento no DynamoDB. A fragmentação distribui os dados entre vários servidores com base em uma chave de fragmento (shard key). A distribuição de dados permite que as operações de leitura e gravação sejam espalhadas entre vários servidores, para que um único servidor não fique sobrecarregado.

Vantagens e desvantagens do MongoDB

Além dos benefícios típicos do NoSQL, o MongoDB oferece suporte a várias plataformas, o que é vital para as empresas que desejam flexibilidade na escolha do provedor de nuvem ou a capacidade de hospedar um banco de dados no local.

O MongoDB também oferece suporte a consultas e agregações complexas por meio de seu pipeline de agregação. Isso o torna excepcionalmente flexível em comparação com outras opções de NoSQL, pois oferece suporte a consultas analíticas, pesquisas de documentos e junção de dados. No entanto, o desempenho pode diminuir em grande escala. Além disso, o MongoDB Atlas oferece uma opção sem servidor para empresas que buscam eliminar a carga do gerenciamento de infraestrutura.

Uma das desvantagens do MongoDB é que sua pegada de dados pode ser muito grande, pois os documentos precisam armazenar os dados e as chaves. E, embora seus pipelines de agregação sejam ferramentas poderosas, o uso de uma sintaxe sob medida torna sua escrita e criação excepcionalmente complexas.

Por fim, há uma sobrecarga de infraestrutura para quem não usa o MongoDB Atlas, especialmente para sistemas de produção que usam replicação e fragmentação para garantir o desempenho do sistema. Isso inclui o monitoramento, o gerenciamento da distorção dos dados e a realização de upgrades, e gerenciamento da segurança.

Conclusão: DynamoDB vs MongoDB

Embora o DynamoDB e o MongoDB sejam bancos de dados NoSQL, eles diferem substancialmente. Seu tipo de uso influencia fortemente qual deles você deve escolher.

Primeiro, o DynamoDB tem menos opções de tipos de dados disponíveis no nível do esquema. Por exemplo, ele não oferece suporte a datas, o que significa que os desenvolvedores precisam manter a lógica em seus aplicativos para analisá-las e manipulá-las. O MongoDB oferece suporte a muitos outros tipos de dados, inclusive datas.

Em segundo lugar, o DynamoDB permite a consulta por meio de pesquisas de valores-chave e varreduras de tabelas. No entanto, seu desempenho de varredura de tabela é insuficiente. Para consultas mais complexas ou de estilo ad hoc, a melhor opção é exportar para outro banco de dados. Em contrapartida, o MongoDB oferece suporte a pesquisas de chaves, além de consultas analíticas e junção de dados. Oferece suporte mais flexível a índices, pois permite adicionar índices secundários a qualquer campo. Embora o DynamoDB ofereça suporte a índices secundários, eles são limitados por sua complexidade conceitual e pelo número que você pode criar.

No que diz respeito à segurança, o DynamoDB se beneficia da plataforma AWS. A autenticação com o DynamoDB passa pelos controles de acesso de usuário do AWS. Isso torna a proteção de um banco de dados DynamoDB bastante simples. Com o MongoDB, você é responsável por todas as restrições de segurança, incluindo a criação de contas de usuário e o gerenciamento do acesso à rede. Isso significa uma sobrecarga muito maior. No entanto, o MongoDB Atlas transforma o MongoDB em uma solução gerenciada, eliminando esses desafios.

Como uma solução gerenciada, o DynamoDB apresenta recursos integrados de backup e recuperação, incluindo a capacidade de réplicas de várias regiões e recuperação simples de backups. Por padrão, o MongoDB não gerencia esses processos, exigindo configuração manual. O MongoDB Atlas facilita um pouco o processo, mas exige configuração adicional para isso.

Em um relance: DynamoDB vs MongoDB

Recurso DynamoDB MongoDB
Tipos de dados A maioria dos tipos de dados padrão, exceto datas Qualquer tipo de dados na especificação BSON, incluindo datas
Consulta Pesquisas de chaves com consultas limitadas a vários documentos Pesquisas de chaves, consultas, junções e agregações
Segurança Integrado ao AWS com pouca sobrecarga Autogerenciado, a menos que você use o MongoDB Atlas
Escalabilidade Integrado ao AWS com pouca sobrecarga Autogerenciado, a menos que você use o MongoDB Atlas
Backup e recuperação Integrado ao AWS com pouca sobrecarga Autogerenciado, a menos que você use o MongoDB Atlas

De modo geral, o MongoDB é a opção mais flexível, pois pode ser implantado em qualquer lugar e oferece um conjunto mais rico de ferramentas para armazenar e consultar dados. No entanto, para um banco de dados enxuto com forte integração com o AWS e custos indiretos reduzidos de infraestrutura e segurança, o DynamoDB é uma escolha provável.

Resumo

O MongoDB e o DynamoDB são ofertas NoSQL de alto desempenho cujos pontos fortes relativos os tornam adequados para usos muito diferentes. Para uma solução simples e enxuta, o DynamoDB é uma boa opção. Mas o MongoDB é o vencedor se você precisar de esquemas mais complexos, consultas de agregação e melhor suporte a índices.

Lembre-se de que o preço da flexibilidade é o aumento da sobrecarga da infraestrutura. Porém, se você precisar da flexibilidade do MongoDB e quiser reduzir a sobrecarga, o MongoDB Atlas geralmente representa um compromisso acessível.

É claro que, na frente do seu banco de dados, você vai querer um aplicativo atraente. Você pode desenvolver o seu na plataforma de Hospedagem de Aplicativos da Kinsta, até mesmo começando gratuitamente com a nossa camada Hobby, e aumentando a escala quando os usuários começarem a se juntar em torno da sua obra-prima.

Steve Bonisteel Kinsta

Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.