ConsistĂȘncia de dados
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.
Casos de uso
HĂĄ vĂĄrias maneiras de impor a consistĂȘncia dos dados em seu aplicativo:
Método | Descrição | Impacto no desempenho | Caso de uso |
---|---|---|---|
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 | Seu aplicativo sempre lĂȘ e atualiza os dados relacionados ao mesmo tempo. Esta solução simplifica seu esquema e evita a necessidade de operaçÔes do | |
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.
Tarefas
Para impor a consistĂȘncia dos dados em seu aplicativo, consulte as pĂĄginas a seguir:
Detalhes
Os fatores a seguir podem afetar a forma como vocĂȘ impĂ”e a consistĂȘncia dos dados.
Estanqueidade 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.
Integridade Referencial
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.