Dados incorporados versus referências
Nesta página
Modelos de dados eficazes oferecem suporte às necessidades do seu aplicativo. Uma decisão importante para o projeto de esquema é incorporar dados ou usar referências.
Modelos de dados incorporados
Você pode incorporar dados relacionados em um único documento. No exemplo seguinte, os campos contact
e access
são documentos incorporados:
Os modelos de dados incorporados geralmente são desnormalizados, porque os dados acessados com frequência são duplicados em várias coleções.
Os modelos de dados incorporados permitem que os aplicativos consultem informações relacionadas no mesmo registro do banco de dados. Como resultado, os aplicativos exigem menos consultas e atualizações para concluir operações comuns.
Casos de uso
Use modelos de dados incorporados nos seguintes cenários:
Você tem relacionamentos "contém" entre entidades. Por exemplo, um documento
contacts
que contém umaddress
. Consulte Modelar relacionamentos um-para-um com documentos incorporados.Você tem relações um-para-muitos entre entidades. Nesses relacionamentos, os documentos "muitos" ou filhos são visualizados no contexto de "um" ou documentos pai. Consulte Modele relacionamentos um-para-muitos com documentos incorporados.
A incorporação oferece os seguintes benefícios:
Melhor desempenho para operações de leitura
A capacidade de recuperar dados relacionados em uma única operação de banco de dados
A capacidade de atualizar dados relacionados em uma única operação de gravação atômica
Consultar dados incorporados
Para consultar dados em documentos incorporados, use a notação de ponto. Para obter exemplos de consultas de dados em arrays e documentos incorporados, consulte:
Observação
Limite de tamanho do documento
Os documentos no MongoDB devem ser menores que 16 megabytes.
Para dados binários grandes, considere usar o GridFS.
Referências
As referências armazenam relacionamentos entre dados ao incluir links, chamados de referências, de um documento para outro. No exemplo a seguir, os documentos contact
e access
contêm uma referência ao documento user
.
As referências resultam em modelos de dados normalizados porque os dados são divididos em várias coleções e não duplicados.
Casos de uso
Use referências para vincular dados relacionados nos seguintes cenários:
A incorporação resultaria na duplicação de dados, mas não traria vantagens suficientes de desempenho de leitura para superar as implicações da duplicação. Por exemplo, quando os dados incorporados mudam com frequência.
É preciso que você represente relacionamentos complexos de muitos para muitos ou grandes conjuntos de dados hierárquicos.
A entidade relacionada é frequentemente consultada sozinha. Por exemplo, se você tiver dados
employee
edepartment
, considere incorporar informações do departamento nos documentosemployee
. No entanto, se você costuma consultar uma lista de departamentos, seu aplicativo terá o melhor desempenho com uma coleção dedepartment
separada vinculada à coleçãoemployee
com uma referência.
Modelos de dados normalizados de consulta
Para executar queries de dados normalizados em várias coleções, o MongoDB fornece os seguintes estágios de agregação:
Para ver um exemplo dos modelos de dados normalizados, consulte Modele relacionamentos de um para muitos com referências de documentos.
Para obter exemplos de vários modelos de árvores, consulte Estruturas de árvores modelo.
Saiba mais
Para obter mais informações sobre modelagem de dados com o MongoDB, faça o download do Guia de Modernização de Aplicativos MongoDB.
O download inclui os seguintes recursos:
Apresentação sobre a metodologia de modelagem de dados com o MongoDB
Artigo técnico que aborda as melhores práticas e considerações para migrar de um modelo de dados SGBD para o MongoDB
Referenciar o esquema do MongoDB com seu equivalente em SGBD
Scorecard de modernização de aplicativos