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:
Armazene dados polimórficos. Documentos dentro de uma única coleção não são obrigados a ter o mesmo conjunto de campos ou tipos de dados.
Evolua seu modelo de dados conforme seu aplicativo muda. Adicione novos campos e novos tipos de conteúdo sem reescrever documentos existentes ou executar uma migração de esquema. Para aprender a modificar iterativamente seu modelo de dados, veja Modificar seu modelo de dados.
Modele os dados da maneira que o código do seu aplicativo os utiliza.
Force uma estrutura fixa com validação de esquema, se necessário.
Um princípio fundamental da modelagem de dados no MongoDB é que os dados acessados juntos devem ser armazenados juntos. 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 de 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 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 e implementar seu modelo de dados, siga o processo de projeto de esquema.
Detalhes
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. |