Curso
O que é o MongoDB? Principais conceitos, casos de uso e práticas recomendadas
Se você já teve dificuldades com esquemas de banco de dados rígidos ou problemas de dimensionamento complicados, não está sozinho. É aí que entra o MongoDB. Como um banco de dados NoSQL flexível e de alto desempenho, o MongoDB mudou a forma como os desenvolvedores pensam sobre o armazenamento e o trabalho com dados. Ainda me lembro da primeira vez que o usei: a consulta de documentos do tipo JSON foi intuitiva.
Neste artigo, explicarei o que é o MongoDB, por que ele é tão popular e como você pode usá-lo.
O que é o MongoDB?
O MongoDB é um banco de dados NoSQL de código aberto projetado para trabalhar com dados orientados a documentos. Em vez das tradicionais linhas e colunas, ele armazena dados em documentos flexíveis, semelhantes a JSON, o que o torna ideal para aplicativos que precisam evoluir rapidamente.
O nome "MongoDB" vem de humongous, o que diz a você que ele foi criado para lidar com grandes quantidades de dados. Ele foi lançado em 2009 pelo pessoal da 10gen (agora MongoDB Inc.) e vem crescendo desde então. O MongoDB é perfeito para lidar com conjuntos de dados grandes e distribuídos, mantendo o alto desempenho.
O MongoDB vem em algumas versões, dependendo do que você precisa. Há a Community Edition gratuita, que é excelente para projetos menores. E se você não quiser lidar com a infraestrutura, o MongoDB Atlas é um serviço de nuvem totalmente gerenciado que é executado no AWS, no Google Cloud e no Azure. Essa flexibilidade realmente ajudou o MongoDB a decolar em diferentes setores.
> Se você não conhece o MongoDB e as bases de dados NoSQL, confira este tutorial NoSQL para iniciantes para entender os principais conceitos antes de se aprofundar. Você também pode explorar os cursos mais amplos de Introdução ao NoSQL e Conceitos de NoSQL para ver como o MongoDB se encaixa no ecossistema NoSQL mais amplo.
Recursos do MongoDB
O MongoDB vem repleto de recursos que o tornam a opção ideal para os desenvolvedores que trabalham com aplicativos modernos e com uso intensivo de dados. Vamos analisá-los nesta seção.
Armazenamento orientado a documentos
O MongoDB armazena dados em coleções de documentos semelhantes a JSON usando um formato chamado BSON (Binary JSON).
O JSON é um formato baseado em texto legível por humanos que oferece suporte a tipos de dados básicos, como strings, números e matrizes. O BSON, sua contraparte binária, amplia o JSON com tipos adicionais, como datas, dados binários e formatos numéricos precisos (por exemplo, inteiros, flutuantes).
Embora o JSON seja ideal para facilitar a leitura, o BSON é otimizado para armazenamento, velocidade e manuseio avançado de dados, o que o torna o formato preferido para o MongoDB.
Ao interagir com o MongoDB, os desenvolvedores trabalham com as estruturas de dados nativas de sua linguagem de programação (por exemplo, objetos JavaScript ou dicionários Python). O driver do MongoDB lida com a conversão entre essas estruturas e o BSON, garantindo o armazenamento e a recuperação de dados sem interrupções.
Como o MongoDB armazena dados como BSON. Fonte da imageme: MongoDB.
Design sem esquema
O MongoDB organiza os dados em coleções e documentos:
- Uma coleção agrupa documentos relacionados, semelhante a uma tabela, mas mais flexível. As coleções não impõem um esquema para que os documentos possam ter estruturas e campos diferentes. As coleções existem nos bancos de dados do MongoDB, e cada banco de dados pode conter várias coleções.
- Documentos são a unidade básica de dados, consistindo em pares de valores de campo. Os documentos podem conter cadeias de caracteres, números, datas, matrizes e até mesmo outros documentos incorporados. Isso permite modelos de dados sofisticados que representam relações complexas em um único documento, o que se alinha à forma como os objetos são estruturados na maioria das linguagens de programação.
O design sem esquema do MongoDB é um de seus recursos mais poderosos, oferecendo flexibilidade excepcional para lidar com dados diversos e em evolução.
Ao contrário dos bancos de dados relacionais tradicionais, em que a adição de um novo campo exige a alteração de toda a estrutura da tabela, o MongoDB permite que os documentos da mesma coleção tenham campos e estruturas completamente diferentes. Isso elimina a necessidade de esquemas rígidos e facilita o armazenamento de dados variados sem forçar a uniformidade.
Vamos dar uma olhada mais de perto em como as alterações de esquema funcionam no MongoDB em comparação com os bancos de dados relacionais tradicionais:
Em um banco de dados relacional, se você quiser adicionar um novo campo (por exemplo, discount_price
) a uma tabela products
, precisará fazê-lo:
- Altere o esquema da tabela para que você adicione a nova coluna.
- Atualizar cada linha, mesmo que a maioria das linhas não use o novo campo, o que leva a tabelas esparsas com muitas colunas vazias.
No MongoDB, você pode simplesmente adicionar o campo discount_price
apenas aos documentos relevantes na coleção products
. Por exemplo:
// Document 1
{
"_id": 1,
"name": "Laptop",
"price": 1200
}
// Document 2
{
"_id": 2,
"name": "Smartphone",
"price": 800,
"discount_price": 750 // New field added only where needed
}
Essa flexibilidade é inestimável em ambientes de rápida movimentação, nos quais os requisitos de dados mudam com frequência. Ele permite que os desenvolvedores se adaptem rapidamente sem tempo de inatividade ou migrações complexas, tornando o MongoDB ideal para o desenvolvimento ágil e aplicativos modernos.
Alto desempenho
O MongoDB foi projetado para armazenamento e recuperação de dados de alto desempenho, o que o torna ideal para aplicativos que exigem velocidade e escalabilidade.
Um de seus principais recursos é o uso de arquivos mapeados na memória, que permitem que o sistema operacional lide com o cache de forma eficiente, reduzindo a latência e melhorando as operações de leitura/gravação. O MongoDB também oferece suporte a vários tipos de indexação, incluindo índices de campo único, compostos, geoespaciais, de texto e hashed, para acelerar o desempenho das consultas.
O MongoDB oferece um mecanismo de armazenamento na memória para casos de uso de latência ultrabaixa, permitindo acesso mais rápido aos dados ao manter tudo na RAM. Além disso, o otimizador de consultas do MongoDB garante uma execução eficiente das consultas, selecionando automaticamente os melhores índices e planos de execução.
Esses recursos, combinados com dimensionamento horizontal via sharding, fazem do MongoDB uma opção robusta para aplicativos de alto rendimento, como análise em tempo real, aplicativos móveis e sistemas de IoT.
Como começar a usar o MongoDB
Se você é novo no MongoDB, não se preocupe - a configuração é simples e você pode escolher entre uma instalação local ou uma opção na nuvem. Vamos explorar essas opções aqui.
Instalação do MongoDB
1. Instale o MongoDB localmente: Você pode instalar o MongoDB Community Edition em seu computador local fazendo o download emm no site oficial do MongoDB. As instruções de instalação do Instestão disponíveis para Windows, macOS e Linux, e o processo de configuração normalmente envolve apenas algumas etapas. Essa opção oferece a você controle total sobre o seu ambiente e é ideal para desenvolvimento e testes.
2. Use o MongoDB Atlas (baseado em nuvem): Se você preferir ignorar a configuração local, o MongoDB Atlas é uma excelente alternativa. É o serviço de nuvem totalmente gerenciado do MongoDB e é executado no AWS, Azure e Google Cloud. O Atlas cuida da infraestrutura para você - backups, dimensionamento e atualizações são feitos automaticamente. Além disso, há um generoso nível gratuito, o que facilita para você começar a usar sem custo.
Quer você prefira o controle de uma instalação local ou a conveniência da nuvem, o MongoDB facilita a escolha do caminho que se adapta ao seu fluxo de trabalho.
Conectando-se ao MongoDB
Depois que o MongoDB estiver instalado, a próxima etapa é conectar-se a ele, seja para testes rápidos no shell ou para integrá-lo aos seus aplicativos.
Usando o shell do Mongo:
Você pode se conectar ao MongoDB usando o Mongo shell, uma interface de linha de comando para interagir com o banco de dados. Basta executar mongosh
em seu terminal para iniciar o shell.
mongosh
Isso inicia o shell e conecta você à instância local do MongoDB por padrão.
Conectando-se a partir de um aplicativo:
Para o desenvolvimento de aplicativos, você pode se conectar por meio de linguagens de programação como Python, JavaScript (Node.js) ou Java usando os drivers oficiais do MongoDB. Por exemplo, em Python, você pode usar a biblioteca pymongo
para estabelecer uma conexão:
from pymongo import MongoClient
uri = "your_mongodb_connection_string"
client = MongoClient(uri)
try:
# Test the connection
client.admin.command('ping')
print("Connected to MongoDB!")
except Exception as e:
print(e)
finally:
client.close()
Substitua "your_mongodb_connection_string"
pelo seu URI de conexão local ou do Atlas. Uma vez conectado, você estará pronto para começar a inserir e consultar documentos.
> Você trabalha com Python? O curso Introduction to Using MongoDB for Data Science with Python é um ótimo lugar para você aprender a conectar, consultar e analisar dados do MongoDB usando Python.
Comandos básicos do MongoDB
O MongoDB fornece um conjunto de comandos para que você interaja com bancos de dados, coleções e documentos. Aqui estão alguns comandos principais para você começar:
- Mudar para um banco de dados:
use myDatabase
Esse comando alterna para um banco de dados chamado myDatabase
. Se ele ainda não existir, o MongoDB o criará quando você adicionar dados pela primeira vez.
- Crie uma coleção:
db.createCollection("myCollection")
Cria uma nova coleção chamada myCollection
no banco de dados atual.
- Insira um documento:
db.myCollection.insertOne({ name: "Alice", age: 30 })
Adiciona um novo documento à coleção myCollection
.
- Localizar documentos:
db.myCollection.find({ age: { $gt: 25 } })
Recupera todos os documentos em que o campo age
é maior que 25.
Esses comandos são apenas a ponta do iceberg - o MongoDB tem recursos avançados de consulta, indexação e agregação. Você pode explorar a lista completa de comandosna documentação oficial do MongoDB.
> Se você estiver procurando um guia prático mais detalhado, esteeste tutorial do MongoDB sobre como configurar e consultar bancos de dados do MongoDB orienta você na configuração e nas operações básicas passo a passo.você pela configuração e pelas operações básicas, passo a passo.
Práticas recomendadas para usar o MongoDB
Você quer aproveitar ao máximo o MongoDB? Essas práticas recomendadas podem ajudar você a aumentar o desempenho, evitar armadilhas comuns e criar aplicativos que sejam dimensionados sem problemas.
Indexação
A indexação adequada é essencial para otimizar o desempenho do MongoDB. Aqui estão algumas estratégias importantes para garantir que seus índices sejam eficazes:
- Use índices compostos: Em vez de criar índices separados para campos individuais, combine os campos frequentemente consultados em um único índice composto. Por exemplo, se você costuma consultar por
last_name
efirst_name
, um índice composto nos dois campos será mais eficiente. - Evite a indexação excessiva: Embora os índices melhorem o desempenho da leitura, eles adicionam sobrecarga às operações de gravação e consomem armazenamento. Monitore e remova regularmente os índices não utilizados para manter a eficiência.
- Use índices parciais: Reduza o tamanho e a sobrecarga do índice indexando apenas os documentos que correspondem a critérios específicos - por exemplo, indexe apenas usuários ativos ou documentos em que exista um determinado campo.
- Otimize para campos de baixa cardinalidade: Tenha cuidado ao indexar campos com poucos valores exclusivos (por exemplo,
status
ougender
). Os índices compostos podem ajudar, mas você deve garantir que os campos combinados tenham alta cardinalidade. - Monitore o uso do índice: Use ferramentas como o MongoDB Compass ou o Atlas Data Explorer para visualizar o uso do índice e identificar os índices não utilizados. Isso ajuda a liberar recursos e melhorar o desempenho.
> Verifique oVocê pode conferir as práticas recomendadas de desempenho do MongoDB para indexação para para você se aprofundar nas estratégias que funcionam.
Modelagem de dados
A modelagem de dados eficaz é fundamental para otimizar o desempenho e a escalabilidade do MongoDB. O modelo orientado a documentos do MongoDB oferece flexibilidade na estruturação de dados, mas exige um planejamento cuidadoso para garantir a eficiência.
Aqui estão algumas práticas recomendadas para modelagem de dados no MongoDB:
- Use documentos incorporados para dados que são frequentemente acessados em conjunto ou que tenham uma relação de um para um ou de um para muitos. Por exemplo, armazenar o perfil de um usuário junto com seus pedidos recentes em um único documento pode reduzir a necessidade de junções e melhorar o desempenho da consulta.
- Use referências (linking) para dados que são acessados juntos com menos frequência ou que tenham uma relação de muitos para muitos. Essa abordagem evita a duplicação de dados e mantém os documentos menores. Por exemplo, um catálogo de produtos pode ser vinculado a pedidos usando uma referência
product_id
. - Design para padrões de consulta. Estruture suas coleções e documentos com base em como os dados serão consultados. Por exemplo, se o seu aplicativo recupera com frequência perfis de usuários juntamente com seus pedidos, a incorporação de pedidos no documento do usuário pode simplificar as consultas.
- Evite documentos grandes e profundamente aninhados. Embora a incorporação seja eficiente, evite criar documentos muito grandes ou profundamente aninhados, pois eles podem afetar o desempenho e tornar as consultas mais complexas. Em vez disso, equilibre a incorporação com a referência quando apropriado.
- Use as matrizes com sabedoria. As matrizes são ótimas para armazenar listas de dados relacionados, mas evite o crescimento ilimitado. Por exemplo, armazenar os últimos 10 pedidos de um usuário em uma matriz é bom, mas armazenar todo o histórico de pedidos pode levar a problemas de desempenho.
- Normalize para cargas de trabalho de gravação pesada. Para aplicativos que exigem muita gravação, normalize seus dados para reduzir a duplicação e melhorar o desempenho da gravação. Use referências para vincular dados relacionados em vez de incorporar.
- Desnormalize para cargas de trabalho de leitura pesada. Para aplicativos de leitura intensa, desnormalize seus dados para minimizar a necessidade de uniões e melhorar o desempenho da leitura. Incorpore dados acessados com frequência nos documentos.
Backup e segurança
Proteger a implementação do MongoDB é fundamental para garantir a integridade, a disponibilidade e a conformidade dos dados. Aqui você encontra um guia sobre como implementar práticas robustas de backup e segurança.
- Use as ferramentas nativas do MongoDB: Aproveite os sites
mongodump
emongorestore
para criar e restaurar backups. Essas ferramentas permitem que você exporte e importe dados no formato BSON, garantindo compatibilidade e consistência. Para soluções de backup mais avançadas, considere a recuperação point-in-time usando backups oplog (Ops Manager). Isso permite que você restaure seu banco de dados para um momento específico, minimizando a perda de dados. - Ativar a autenticação: Sempre ative a autenticação em ambientes de produção para evitar acesso não autorizado. O MongoDB oferece suporte ao SCRAM (Salted Challenge Response Authentication Mechanism) para autenticação segura baseada em senha.
- Controle de acesso baseado em função (RBAC): Implemente o RBAC para conceder aos usuários apenas as permissões necessárias. Siga o princípio do menor privilégio para minimizar os riscos de segurança.
- Vincular-se a interfaces privadas: Configure o MongoDB para se vincular somente a interfaces de rede privadas, evitando a exposição à Internet pública.
- Ativar TLS/SSL: Use TLS/SSL para criptografar os dados em trânsito, garantindo uma comunicação segura entre os clientes e o banco de dados.
- Implemente listas de permissões de IP e VPNs: Restrinja o acesso às instâncias do MongoDB, permitindo apenas endereços IP confiáveis. Para aumentar a segurança, use VPNs para criar túneis seguros para acessar os bancos de dados de produção.
- Criptografia em repouso: Habilite a criptografia em repouso usando o suporte nativo do MongoDB no mecanismo de armazenamento WiredTiger. Isso protege os dados confidenciais armazenados no disco.
- Criptografia em nível de campo no lado do cliente: Para requisitos de alta segurança, use a criptografia em nível de campo no lado do cliente para criptografar campos específicos antes que eles sejam enviados ao banco de dados. Isso garante que nem mesmo os administradores de banco de dados possam acessar informações confidenciais.
Conclusão
Não importa se você está criando um pequeno projeto paralelo ou um aplicativo corporativo de grande escala, o MongoDB oferece a flexibilidade e a capacidade de trabalhar com dados em seus próprios termos. Seu modelo baseado em documentos, o design de esquema dinâmico e a capacidade de escalonar sem esforço fazem dele a escolha ideal para os desenvolvedores modernos. Ao entender como usá-lo de forma eficaz - e seguir as práticas recomendadas -, você estará no caminho certo para criar aplicativos rápidos, flexíveis e preparados para o futuro.
Você quer levar suas habilidades para o próximo nível? Explore oou o guia de certificação do MongoDB para entender o que está envolvido na obtenção da certificação, ou atualize-se com essas perguntas comuns da entrevista do MongoDB para se preparar para sua próxima função tecnológica.
Torne-se um engenheiro de dados
Perguntas frequentes
O uso do MongoDB é gratuito?
Sim, o MongoDB oferece uma Community Edition gratuita e de código aberto que você pode executar localmente. O MongoDB Atlas também fornece um banco de dados em nuvem de nível gratuito com recursos limitados - ótimo para aprendizado e pequenos projetos.
O que é BSON e qual é a diferença entre ele e o JSON?
BSON (Binary JSON) é o formato que o MongoDB usa para armazenar documentos. Ele é semelhante ao JSON, mas inclui tipos de dados adicionais, como datas e dados binários, e é otimizado para desempenho e passagem.
O MongoDB pode ser usado para análises ou relatórios?
Embora o MongoDB não seja um banco de dados analítico tradicional, ele oferece suporte a pipelines de agregação e integrações com ferramentas como Tableau, Power BI e MongoDB Charts para análise e visualização de dados.
O MongoDB é compatível com ACID?
O MongoDB oferece suporte a transações ACID no nível do documento e, a partir da versão 4.0, a transações ACID com vários documentos, o que o torna adequado para aplicativos que exigem consistência de dados.
Quão seguro é o MongoDB?
O MongoDB inclui recursos como autenticação, controle de acesso baseado em funções, criptografia em repouso e em trânsito e auditoria. O MongoDB Atlas adiciona ainda mais camadas de segurança, como isolamento de rede e backups automáticos.
Que tipos de aplicativos usam o MongoDB?
O MongoDB é usado em uma ampla gama de aplicativos, desde sistemas de gerenciamento de conteúdo e aplicativos móveis até plataformas de análise em tempo real e soluções de IoT. Sua flexibilidade o torna ideal para muitos casos de uso.
O MongoDB pode ser dimensionado horizontalmente?
Sim! O MongoDB oferece suporte ao dimensionamento horizontal por meio de sharding, permitindo que você distribua dados em vários servidores e lide com grandes volumes de tráfego e dados de forma eficiente.
Karen é uma engenheira de dados apaixonada por criar plataformas de dados escalonáveis. Ela tem experiência em automação de infraestrutura com o Terraform e está animada para compartilhar seus conhecimentos em postagens de blog e tutoriais. Karen é uma construtora de comunidades e é apaixonada por promover conexões entre profissionais de dados.
Saiba mais sobre o MongoDB com estes cursos!
Curso
Conceitos de NoSQL
Curso
Projeto de banco de dados

blog
Bancos de dados NoSQL: O que todo cientista de dados precisa saber
blog
O que é um banco de dados gráfico? Um guia para iniciantes

blog
Uma introdução ao DuckDB: O que é e por que você deve usá-lo?

Tutorial
Tutorial do MySQL: Um guia abrangente para iniciantes
Tutorial
Tutorial de visão geral do banco de dados SQL

DataCamp Team
3 min
Tutorial