Modelagem de dados refere-se à organização de dados dentro de um banco de dados e aos links entre entidades relacionadas.
O MongoDB tem um modelo de dados flexível que permite armazenar dados polimórficos, ou seja:
Documentos dentro de uma única collection não são obrigados a ter o mesmo conjunto de campos.
O tipo de dados de um campo pode diferir entre documentos dentro de uma collection.
Um princípio fundamental da modelagem de dados no MongoDB é que os dados acessados juntos devem ser armazenados juntos. Para fazer isso, você pode incorporar dados relacionados em campos de objeto e array. A incorporação pode fornecer ao seu aplicação um melhor desempenho de leitura e garantir a consistência dos dados. No entanto, você deve estruturar seu modelo de dados com base nos padrões de acesso a dados do seu aplicativo para otimizar o desempenho.
Para saber mais,consulte Melhores práticas para modelagem de dados no MongoDB.
Casos de uso
Considere os seguintes exemplos que aproveitam a flexibilidade do modelo de documento :
Sua empresa monitora em qual departamento cada funcionário trabalha. Você pode incorporar informações de departamento na coleção
employeepara retornar informações relevantes em uma única query.Seu aplicação e-commerce mostra as cinco avaliações mais recentes em uma página de produto. Você pode armazenar todas as avaliações, inclusive as mais antigas, em uma collection separada, pois elas não são acessadas com tanta frequência.
Sua loja de roupas precisa criar um aplicação de página única para um catálogo de produtos. Produtos diferentes possuem atributos diferentes e, como resultado, podem ter campos de documento e tipos de campo diferentes. Apesar dessas diferenças, você pode armazenar todos os produtos na mesma coleção.
Começar
Para garantir que seu modelo de dados tenha uma estrutura lógica e alcance o desempenho ideal, planeje seu esquema antes de usar seu banco de dados em uma escala de produção. Para determinar seu modelo de dados, use o seguinte processo de projeto de esquema:
Detalhes
Desenvolvendo com um modelo de dados flexível
O esquema flexível do MongoDB permite adaptar seu modelo de dados sem exigir alterações significativas no banco de dados subjacente. Dessa forma, você pode melhorar iterativamente seu modelo de dados à medida que desenvolve seu aplicação.
Ao desenvolver com o esquema flexível do MongoDB, você pode:
Mapeie seu modelo de dados diretamente para objetos que existem no código.
Adicione validação de esquema apenas às seções e aspectos dos documentos que precisam de um controle mais rigoroso.
Para um exemplo de como você pode modificar iterativamente seu modelo de dados, consulte Modificar seu Modelo de Dados.
Relacionamentos de documentos
O valor de um campo de documento pode incluir qualquer um dos tipos de dados BSON, incluindo outros documentos, arrays e arrays de documentos. Esses objetos podem ser usados para representar diferentes tipos de relacionamentos em seu modelo de dados, incluindo:
Relacionamentos um-para-um: cada documento está associado a exatamente um outro documento. Por exemplo, um doente tem exatamente um registo médico .
Relacionamentos de um para muitos: cada documento está associado a vários outros documentos. Por exemplo, um usuário de aplicação da web pode ter muitas publicações ou comentários.
Relacionamentos de muitos para muitos: cada documento pode ser associado a vários outros documentos e vice-versa. Por exemplo, um aluno pode estar inscrito em vários cursos, e cada curso pode ter vários alunos.
No MongoDB, você pode modelar relacionamentos incorporando ou referenciando seus dados. Ao escolher o melhor método de vinculação de dados, você pode otimizar seu modelo de dados para os padrões de acesso específicos do seu aplicativo.
Para saber mais sobre como modelar relacionamentos no MongoDB, consulte:
Projeto de esquema: diferenças entre bancos de dados relacionais e de documentos
Ao criar um esquema para um banco de dados de documento como o MongoDB, considere as seguintes diferenças importantes em relação aos bancos de dados relacionais:
Comportamento do Banco de Dados Relacional | Comportamento do Banco de Dados do Documento |
|---|---|
Você deve determinar o esquema de uma tabela antes de inserir dados. Embora você possa alterar seu modelo de dados em um banco de dados relacional, um esquema fixo requer mais planejamento inicial, incluindo a consideração de como as alterações afetam as referências dependentes. | Você pode alterar facilmente seu modelo de dados ao longo do tempo à medida que as necessidades do seu aplicação evoluem. |
Muitas vezes, você precisa unir dados de várias tabelas diferentes para retornar os dados necessários para seu aplicativo. | O modelo de dados flexível permite armazenar dados de acordo com os padrões de acesso a dados do seu aplicativo. Por exemplo, aincorporação de dados permite evitar junções complexas em várias coleções, ao mesmo tempo em que melhora o desempenho e reduz o volume de trabalho do sistema. |