Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Introdução à modelagem de dados

Nesta página

  • Esquema flexível
  • Estrutura do documento
  • Atomicidade das operações de gravação
  • Uso de dados e desempenho
  • Saiba mais

O principal desafio na modelagem de dados é equilibrar as necessidades da aplicação, as características de desempenho do reconhecimento de data center e os padrões de recuperação de dados. Ao projetar Modelo de dados Realm, sempre considere o uso da aplicação dos dados (ou seja, query, atualizações e processamento dos dados), bem como a estrutura inerente dos próprios dados.

Ao contrário dos bancos de dados SQL, onde você deve determinar e declarar o esquema de uma tabela antes de inserir dados, as coleções do MongoDB, por padrão, não exigem que seus documentos tenham o mesmo esquema. Ou seja:

  • Os documentos em uma única collection não precisam ter o mesmo conjunto de campos e o tipo de dado de um campo pode diferir entre documentos dentro de uma collection.

  • Para alterar a estrutura dos documentos em uma coleção como adicionar novos campos, remover campos existentes ou alterar os valores dos campos para um novo tipo, atualize os documentos para a nova estrutura.

Essa flexibilidade facilita o mapeamento de documentos para uma entidade ou objeto. Cada documento pode corresponder aos campos de dados da entidade representada, mesmo que o documento tenha uma variação substancial em relação a outros documentos na collection.

Na prática, no entanto, os documento em uma collection compartilham uma estrutura semelhante, e você pode impor regras de validação de documento para uma collection durante as operações de atualização e inserção. Consulte Validação de Esquema para obter detalhes.

A principal decisão ao projetar Modelo de dados Realm para aplicação MongoDB gira em torno da estrutura do documento e como a aplicação representa o relacionamento entre dados. O MongoDB permite que dados relacionados sejam incorporados em um único documento.

Documento incorporado captura relacionamento entre dados armazenando dados relacionados em uma única estrutura de documento. Os documentos do MongoDB possibilitam a incorporação de estruturas de documento em um campo ou array dentro de um documento. Esses Modelo de dados Realm desnormalizados permitem que a aplicação recupere e manipule dados relacionados em uma única operação de reconhecimento de data center.

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.

Consulte Modelo de dados Realm para saber os pontos fortes e fracos da incorporação de documento.

As referências armazenam os relacionamentos entre dados incluindo links ou referências de um documento para outro. Os aplicativos podem resolver essas referências para acessar os dados relacionados. Em termos gerais, estes são Modelo de dados Realm 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``.

Consulte Modelo de dados Realm para os pontos fortes e fracos do uso de referências.

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.

Um Modelo de dados Realm desnormalizado com dados incorporados combina todos os dados relacionados em um único documento, em vez de normalizar vários documentos e collections. Este Modelo de dados Realm facilita a operação atômica.

Para obter detalhes sobre transações no MongoDB, consulte a página Transações .

Quando uma única operação de gravação (por exemplo, db.collection.updateMany()) modifica vários documentos, a modificação de cada documento é atômica, mas a operação como um todo não é atômica.

Ao realizar operações de escrita de vários documentos, seja por meio de uma única operação de escrita ou de várias operações de escrita, outras operações podem ser intercaladas.

Para situações que exigem atomicidade de leituras e escritos em vários documentos (em uma única coleção ou várias coleções), o MongoDB suporta transações distribuídas, incluindo transações em conjuntos de réplicas e clusters fragmentados.

Para obter mais informações, consulte transações

Importante

Na maioria dos casos, uma transação distribuída incorre em um custo de desempenho maior do que as gravações de um único documento, e a disponibilidade de transações distribuídas não deve substituir o design eficaz do esquema. Em muitos cenários, o modelo de dados desnormalizado (documentos e arrays incorporados) continuará a ser ideal para seus dados e casos de uso. Ou seja, para muitos cenários, modelar seus dados adequadamente minimizará a necessidade de transações distribuídas.

Para considerações adicionais sobre o uso de transações (como limite de tempo de execução e limite de tamanho do oplog), consulte também Considerações de produção.

Dica

Veja também:

Ao projetar um Modelo de dados Realm, considere como a aplicação usará seu reconhecimento de data center. Por exemplo, se sua aplicação usar apenas documento inseridos recentemente, considere o uso de collection limitada. Ou, se as necessidades da sua aplicação forem principalmente operações de leitura em uma collection, adicionar índices para dar suporte a query comuns pode melhorar o desempenho.

Consulte Fatores operacionais e Modelo de dados Realm para obter mais informações sobre essas e outras considerações operacionais que afetam os projetos de Modelo de dados Realm.

Para saber como estruturar documentos e definir seu esquema, consulte o cursoModelagem de dados da Universidade MongoDB.

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

← Modelos de Dados