A consistência dos dados significa que os mesmos dados têm a mesma aparência em todo o lado. O endereço do cliente no sistema de faturação corresponde ao endereço no sistema de envio. A contagem de stock no armazém corresponde à contagem no site. Quando os sistemas divergem, as decisões são tomadas de forma incorreta. Os pedidos são enviados para endereços antigos. Os clientes compram produtos que estão esgotados. A consistência não é opcional para sistemas que dependem uns dos outros.
Os sistemas distribuídos dificultam a consistência. Os dados replicados em vários servidores podem ficar dessincronizados. Uma partição de rede isola uma região da outra. Ambas as regiões aceitam gravações. Quando a partição é corrigida, os dados entram em conflito. O teorema CAP afirma que é possível ter consistência, disponibilidade e tolerância às partições, mas não às três em simultâneo. A maioria das bases de dados distribuídas opta pela disponibilidade e consistência eventual. Isto significa que os dados convergem ao longo do tempo, mas existe um período em que diferentes nós visualizam valores diferentes. A consistência forte requer coordenação, o que acarreta latência. A escolha depende da aplicação. Um livro-razão bancário precisa de uma consistência forte. Um feed de redes sociais pode tolerar consistência eventual. A resposta correta não é universal. Depende do que falha quando os dados divergem.
Modelos de consistência
- Forte — todos os nós vêem os mesmos dados imediatamente
- Eventual — os nós convergem ao longo do tempo.
- As operações causais relacionadas são vistas por ordem.
- Leia os seus próprios textos — vê as suas atualizações imediatamente
A consistência é um espectro. A questão é quanta inconsistência a aplicação pode tolerar antes de apresentar falhas.
Comments
No comments yet. Be the first to share a thought.
Leave a comment