🍃 MODELAGEM ORIENTADA A DOCUMENTOS
Se na engenharia SQL nós dividimos e isolamos os dados em dezenas de tabelas (Normalização), na engenharia Documental aplicamos frequentemente a fusão das informações vitais num pilar estratégico único. 🛡️🧩
Objetivo: Diferenciar as abordagens de Modelagem Relacional da Abordagem Documental do MongoDB 7.0, compreendendo os conceitos de Embedding, Referencing e Documentos Aninhados.
📗 PASSO 1: O Paradigma do Preço Computacional
Em sistemas RDBMS massivos, o JOIN computacional pode ser dispendioso. No MongoDB 7.0 (arquitetura BSON), se um Cliente possui "Endereços" e "Telefones", qual a forma mais rápida de exibi-los? Guardando tudo junto do Cliente!
O ato de acoplar sub-detalhes dentro do seu registro primário recebe o nome acadêmico de Embedding (Documento Incorporado).
📗 PASSO 2: Embedding vs DBRefs (Referências Virtuais)
Devemos analisar a necessidade de arquitetura com precisão lógica:
- 🧩 Embedding (Guardar Junto): Acessa tudo numa pancada de I/O em tela. Excelente para relacionamentos
1:1e relacionamentos1:Nonde "N" é um número controlado. - 🔗 References (Chavear/Apontar): Guarda apenas o
_iddo documento equivalente (Similar ao modelo Foreign Key - FK do relacional). Obrigatório se envolver um crescimento contínuo e infinito de registros M:N.
📗 PASSO 3: Diagrama de Entidade-Documento (Mermaid Híbrido)
A notação de Chen (losangos e elipses) perde eficiência diante de estruturas fortemente encadeadas (Arrays/Objetos profundos).
A notação didática da escola de inteligência de dados sugere fundir o MER (Entidade-Relacionamento) utilizando Tipos JSON explícitos (Array/Object) e detalhando no modelo do conector Mermaid a natureza da associação (EMBEDDED vs REFERENCE):
📊 Modelo Híbrido Didático (Composição MongoDB)
erDiagram
CLIENTE ||--o{ EMBEDDED_ENDERECO : "EMBEDDED (JSON)"
CLIENTE ||--o{ COMPRA : "REFERENCE (DBRef)"
CLIENTE {
ObjectId _id PK
String nome
String email
Array~String~ telefones
Array~Object~ enderecos
Document metadados
}
EMBEDDED_ENDERECO {
String logradouro
String cidade
String uf
}
COMPRA {
ObjectId _id PK
ObjectId cliente_id FK
Decimal128 valor_total
Date criado_em
}
⚠️ Atenção (Rigidez Tecnológica): Na Engenharia MongoDB v7.0, todos os documentos ganham compulsoriamente um identificador único indexado de alta performance chamado
_id(do tipoObjectId, equivalente conceitual ao UUID relacional).
📗 PASSO 4: Regra Prática de Engenharia de Sistemas (Desempenho)
A resposta da pergunta clássica moderna — "Qual abordagem usar no Mongo?"
- Você tem um
PostBlogque sempre precisa exibir uma miniatura de perfil doAutor(nomeefoto_url)? Faça Embedding dos metadados essenciais. - Você tem um
PostBlogque precisa registrar visualizações de milhares de máquinas (Analytics)? O array explodirá muito rápido! Use obrigatoriamente Referencing (DBRefs) via IDs para uma collection de logs secundária separada.
💡 Dica de Engenheiro de Dados: A normalização (
1NF,2NF,3NF) foi projetada historicamente para salvar espaço de disco (que era caro em 1980 na matriz do sistema bancário). Hoje o disco é infinitamente barato comparado ao custo de se demorar 2 minutos aguardando relatórios em RAM para a máquina analítica de negócio (Analytics). Priorize sempre a velocidade das "QueryReads"! 🚀🛡️