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 aplicativo 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 aos 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 document model:
Sua empresa acompanha em qual departamento cada funcionário trabalha. Você pode incorporar informações do departamento na coleção
employeepara retornar informações relevantes em uma única query.Seu aplicativo de e-commerce mostra as cinco revisões mais recentes em uma página de produto. Você pode armazenar todas as revisões, inclusive as mais antigas, em uma coleção separada, pois elas não são acessadas com tanta frequência.
Sua loja de roupas precisa criar um aplicativo 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 aplicativo.
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 tipos de dados, 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 registro médico.
Relacionamentos de um para muitos: cada documento está associado a vários outros documentos. Por exemplo, um usuário de aplicativo 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 aprender 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 aplicativo 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íveis permite armazenar dados de acordo com os padrões de acesso aos dados do seu aplicativo. Por exemplo, a incorporação de dados permite evitar junções complexas em várias coleções, ao mesmo tempo em que melhora o desempenho e reduz a carga de trabalho da implantação. |