Menu Docs
Página inicial do Docs
/
Manual do MongoDB

Modelagem de dados

Nesta página

  • Casos de uso
  • Projeto de esquema: diferenças entre bancos de dados relacionais e de documentos
  • Planeje seu esquema
  • Vincular dados relacionados
  • Dados incorporados
  • Referências
  • Considerações adicionais sobre modelagem de dados
  • Duplicação e consistência de dados
  • Indexação
  • Restrições de hardware
  • Atomicidade de documento único
  • Saiba mais

Modelagem de dados refere-se à organização de dados dentro de um banco de dados e aos links entre entidades relacionadas. Os dados no MongoDB têm um modelo de esquema flexível, o que significa:

  • 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.

Geralmente, os documentos de uma collection compartilham uma estrutura semelhante. Para garantir consistência no seu modelo de dados, você pode criar regras de validação de esquema.

O modelo de dados flexível permite que você organize seus dados para atender às necessidades do seu aplicativo. O MongoDB é um banco de dados de documentos, o que significa que você pode incorporar dados relacionados em campos de objetos e arrays.

Um esquema flexível é útil nos seguintes cenários:

  • Sua empresa monitora em qual departamento cada funcionário trabalha. Você pode incorporar informações do departamento dentro da collection employee para retornar informações relevantes em uma única query.

  • Seu aplicativo de e-commerce mostra as cinco avaliações mais recentes ao exibir um produto. Você pode armazenar as revisões recentes na mesma collection que os dados do produto e armazenar as revisões mais antigas em uma collection separada, pois as revisões mais antigas 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, portanto, usam campos de documento diferentes. No entanto, você pode armazenar todos os produtos na mesma coleção.

Quando você cria um esquema para um banco de dados de documentos como MongoDB, há algumas diferenças importantes de bancos de dados relacionais a serem consideradas.

Comportamento do Banco de Dados Relacional
Comportamento do Banco de Dados do Documento
Você deve determinar o esquema de uma tabela antes de inserir os dados.
Seu esquema pode mudar com o tempo conforme as necessidades do seu aplicativo mudam.
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 que você armazene dados de acordo com a forma como seu aplicativo retorna dados e evite uniões. Evitar participações em várias collections melhora o desempenho e reduz o volume de trabalho do seu departamento.

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:

  1. Identifique o volume de trabalho do seu aplicativo.

  2. Mapeie relacionamentos entre objetos em suas collections.

  3. Aplique padrões de design.

Ao projetar seu modelo de dados no MongoDB, considere a estrutura de seus documentos e as maneiras como seu aplicativo usa dados de entidades relacionadas.

Para vincular dados relacionados, você pode:

  • Incorpore dados relacionados em um único documento.

  • Armazene dados relacionados em uma coleção separada e acesse-os com uma referência .

Documentos incorporados armazenam dados relacionados em uma única estrutura de documento. Um documento pode conter arrays e subdocumentos com dados relacionados. Esses modelos de dados denormalizados permitem que os aplicativos recuperem dados relacionados em uma única operação do banco de dados.

Modelo de dados com campos incorporados que contêm todas as informações relacionadas.

Para muitos casos de uso no MongoDB, o modelo de dados desnormalizado é ideal.

Para saber mais sobre os pontos fortes e fracos da incorporação de documentos, consulte Modelos de dados incorporados.

As referências armazenam relacionamentos entre dados ao incluir links, chamados de referências, de um documento para outro. Por exemplo, um campo customerId em uma collection orders indica uma referência a um documento em uma collection customers.

Os aplicativos podem resolver essas referências para acessar os dados relacionados. Em termos gerais, estes são modelos de dados normalizados .

Modelo de dados usando referências para vincular documentos. Tanto o documento ``contact`` quanto o documento ``access`` contêm uma referência ao documento ``user``.

Para saber mais sobre os pontos fortes e fracos do uso de referências, consulte Referências.

Os seguintes fatores podem afetar a forma como você planeja seu modelo de dados.

Ao incorporar dados relacionados em um único documento, você pode duplicar dados entre duas collections. A duplicação de dados permite que o seu aplicativo consulte informações relacionadas a várias entidades em uma única query, separando logicamente as entidades no seu modelo.

Por exemplo, uma collection products armazena as cinco análises mais recentes em um documento de produto. Essas avaliações também são armazenadas em uma collection reviews , que contém todas as avaliações de produtos. Quando uma nova revisão é escrita, ocorrem as seguintes gravações:

  • A avaliação é inserida na collection reviews .

  • A array de avaliações recentes na coleção products é atualizada com $pop e $push.

Se os dados duplicados não forem atualizados com frequência, o trabalho adicional necessário para manter as duas coleções consistentes será mínimo. No entanto, se os dados duplicados forem atualizados com frequência, usar uma referência para vincular dados relacionados pode ser uma abordagem melhor.

Antes de duplicar dados, considere os seguintes fatores:

  • Com que frequência os dados duplicados precisam ser atualizados.

  • O benefício de desempenho das leituras quando os dados são duplicados.

Para saber mais, consulte Identificar dados duplicados.

Para melhorar o desempenho das queries que seu aplicativo executa com frequência, crie índices nos campos comumente consultados. À medida que seu aplicativo cresce, monitore o uso do índice da implantação para garantir que os índices ainda estejam dando suporte a consultas relevantes.

Ao projetar o schema, considere o hardware do sistema, especialmente a quantidade de RAM disponível. Larger documentos usam mais RAM, o que pode fazer com que seu aplicativo leia do disk e diminua o performance. Quando possível, projete seu esquema para que somente os campos relevantes sejam retornados pelas consultas. Esta prática garante que o conjunto de trabalho da seu aplicativo não cresça desnecessariamente.

No MongoDB, uma operação de escrita é atômica no nível de um único documento, mesmo que a operação modifique vários documentos incorporados em um único documento. Isso significa que, se uma operação de atualização afetar vários subdocumentos, todos esses subdocumentos serão atualizados ou a operação falhará inteiramente e nenhuma atualização ocorrerá.

Um modelo de dados desnormalizado com dados incorporados combina todos os dados relacionados em um único documento, em vez de normalizar vários documentos e collection. Este modelo de dados permite operações atômicas, em contraste com um modelo normalizado onde as operações afetam vários documentos.

Para mais informações, consulte Atomicidade.

  • Saiba como estruturar documentos e definir seu esquema no curso sobre modelagem de dados da MongoDB University.

  • 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

Voltar

Clusters fragmentados