Banco de dados MongoDB não precisa modelar!
- 23 de mai. de 2025
- 3 min de leitura
Atualizado: 1 de jun. de 2025
Achou que eu estava falando sério? Bom, mas tem muita gente que acredita que o MongoDB funciona bem assim. Sem modelar!
A parte principal e mais crítica na implementação de um banco de dados qualquer é o processo de modelagem, seja ele relacional ou não-relacional.
Por ser um banco de dados “schemaless”, ou seja, sem esquema de dados. É muito comum que desenvolvedores conectem sua aplicação ao banco e iniciem o processo de desenvolvimento sem avaliar quais serão os campos realmente necessários, qual será o volume de dados, os tipos de operações frequentes e a criticidade de cada uma dessas operações.
De início é ótimo porque rapidamente você consegue dar um start na sua aplicação e entregar seu produto sem ter que ficar horas e horas desenhando e modelando um banco de dados para deixar na terceira ou quarta forma normal, para só depois disso construir a aplicação. No MongoDB aplicação e banco de dados nascem juntos!
Mas o problema de não modelar vem depois. Conforme o tempo passa a base começa a crescer em volume de dados e operações por milissegundo, e é ai que os problemas começam a surgir. Em grande parte das vezes as empresas pagam caro com hardware um problema que poderia ser resolvido com uma modelagem adequada.
Acredito que dois dos principais erros no uso do MongoDB é não modelar ou modelar nos mesmos moldes de um banco relacional. Os dois cenários trarão péssimos desempenho para aplicação, e terão baixo aproveitamento do que a tecnologia MongoDb pode oferecer.
Agora a pergunta é, se o MongoDB é "schemaless" porque preciso modelar?
Quero fazer uma analogia aqui, pense em um edifício que acabou de ser entregue, e todos os pavimentos possuem apartamentos com a mesma planta. São mais de 50 apartamentos todos exatamente iguais, mesma quantidade de paredes, portas e janelas. Esse empreendimento foi entregue e as famílias começaram a se mudar, mas tem um detalhe ninguém fez nenhum tipo de alteração no apartamento, foi só entrar e morar. Bom, é bem capaz que depois de um tempo problemas de adaptabilidade e uso comecem a surgir, afinal cada familia tem uma disposição e uma necessidade.
Uma planta de 3 quartos para um casal sem filhos pode não funcionar, talvez pra eles o ideal seja derrubar um dos quartos e ampliar a sala, assim terão mais espaço para receber os amigos. Outra familia com apenas um filho pode perceber que 3 quartos não faz sentido e quer transformar um dos quartos em um closet para o casal. Em resumo cada familia vai adaptando e modelando aquela mesma planta para sua necessidade.
Este mesmo processo precisa ocorrer no banco de dados, cada aplicação terá sua necessidade, suas peculiaridades e pontos críticos que vão demandar certa atenção na hora de modelar. É por isso que não podemos criar um banco de dados sem antes projeta-lo para necessidade da nossa aplicação.
Então do ponto de vista de modelagem, qual vantagem do MongoDb?
Você não precisa ter todas as tabelas construídas para começar a inserir os dados no banco.
Ao contrário do relacional você não precisa ter a mesma estrutura de dados em toda a collection. Você pode ter campos específicos para documentos específicos.
Você não precisa ter o mesmo tipo de dados de um campo em todos os documentos.
Se sua aplicação muda você tem flexibilidade em alterar o modelo de dados rapidamente.
Com modelo de dados flexível você pode armazenar na mesma collections dados que busca junto, e assim evitar joins. O que melhora o desempenho e reduz a carga de trabalho.
A ausência de rigidez nos traz muito mais liberdade e flexibilidade na modelagem de dados e as mudanças geram menor "dor" e impacto para aplicação.
Os ganhos da modelagem
Um banco bem modelado é um banco performático e uma aplicação com excelente desempenho, e para o cliente final, um produto de qualidade.
Querys bem estruturas, hardware compatível ao uso da aplicação, workset que caiba dentro da RAM reduzindo o uso do disco, quantidade de chamadas ao banco de dados adequada as operações executadas e índices performáticos.
Uma dica!A consideração mais importante que se deve fazer na hora de modelar é como seus dados são acessados por sua aplicação.
De fato, modelar é o segredo do sucesso! Não negligencie essa atividade e construa aplicações cada vez melhores.



Comentários