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

Consistência de dados

Nesta página

  • Casos de uso
  • Tarefas
  • Detalhes
  • Estanqueidade dos dados
  • Integridade Referencial
  • Saiba mais

O MongoDB oferece a flexibilidade de normalizar ou duplicar seus dados para otimizar seu aplicativo. Se você duplicar dados em seu esquema, deverá decidir como manter os dados duplicados consistentes em várias coleções. Alguns aplicativos exigem que os dados duplicados sejam tornados consistentes imediatamente, enquanto outros aplicativos podem tolerar a leitura de dados obsoletos.

Há várias maneiras de impor a consistência dos dados em seu aplicativo:

Método
Descrição
Impacto no desempenho
Caso de uso
Transações
As atualizações de várias coleções ocorrem em uma única operação atômica.
Potencialmente alto, devido à contenção de leitura
Seu aplicativo deve sempre retornar dados atualizados e pode tolerar possíveis impactos negativos no desempenho durante períodos de leituras pesadas.
Modifique o esquema do aplicativo para incorporar dados relacionados em uma única coleção.
Baixo a moderado, dependendo do tamanho do documento e dos índices
Triggers do Atlas Database
Quando ocorre uma atualização em uma collection, os gatilhos atualizam automaticamente outra collection.
Baixo a moderado, com possíveis atrasos no processamento de eventos acionados
Seu aplicativo pode tolerar a leitura de dados ligeiramente obsoletos. Os usuários podem ver dados desatualizados se executarem uma query imediatamente após uma atualização, mas antes que o trigger termine de atualizar a segunda coleção.

A melhor maneira de impor a consistência dos dados depende do seu aplicativo. Para saber mais sobre os benefícios e a implementação de cada abordagem, consulte as páginas de documentação correspondentes.

Para impor a consistência dos dados em seu aplicativo, consulte as páginas a seguir:

Os fatores a seguir podem afetar a forma como você impõe a consistência dos dados.

Considere a importância de que seu aplicativo retorne os dados mais atualizados. Alguns aplicativos podem retornar dados obsoletos por minutos ou horas sem impacto para o usuário.

Por exemplo, em um aplicativo de e-commerce, os usuários precisam saber imediatamente se um item está disponível ou não. Idealmente, essa informação é mantida da forma mais consistente possível, mesmo que isso exija atualizações frequentes.

Por outro lado, é esperado que as queries analíticas leiam dados ligeiramente desatualizados. Deixar os dados analíticos totalmente consistentes não é essencial.

A tolerância do aplicativo para dados obsoletos influencia qual será a melhor forma de manter os dados consistentes. Atualizar os dados em várias coleções com frequência reduz o risco de que um usuário leia dados obsoletos. No entanto, atualizações frequentes podem ter um impacto negativo no desempenho da sua aplicação. Ao impor a consistência dos dados, equilibre as necessidades do usuário com o impacto no desempenho.

A integridade referencial garante que, quando um objeto é excluído, todas as referências a esse objeto também são excluídas.

Por exemplo, um aplicativo tem uma coleção products e uma coleção warehouse, a qual contêm referências à coleção products. Quando um produto é excluído da coleção products, a referência correspondente na coleção warehouse também deve ser excluída.

Se o seu esquema exigir integridade referencial, incorpore lógica na sua aplicação para manter as referências consistentes. No mínimo, a lógica do seu aplicativo deve evitar erros ao tentar consultar uma referência que não existe.

← Manipular dados duplicados