Tecnologias/02 - Bancos de Dados/03 - NewSQL2 min
Replicação, Consenso e Quorum em NewSQL
Definições
- Replicação: mantém cópias de um dado em nós diferentes.
- Consenso: permite que as réplicas concordem sobre alterações apesar de certas falhas.
- Quorum: quantidade de participantes necessária para uma decisão no protocolo.
No CockroachDB, cada range possui um grupo Raft. Um líder coordena propostas, e a maioria dos votantes precisa participar para que novas entradas sejam confirmadas. Referência: Replication Layer.
Exemplo com três votantes
A, B e C guardam réplicas da mesma parte dos dados.
A propõe uma alteração.
A + B formam maioria: 2 de 3.
Se C estiver indisponível, o grupo ainda pode progredir.
Se apenas A estiver acessível, falta maioria para novas confirmações.
Isso considera um grupo estável, réplicas saudáveis suficientes e falhas do tipo suportado pelo protocolo. A localização das réplicas determina se a falha de uma zona ou região elimina a maioria.
O que o consenso garante
O consenso de um grupo ordena as alterações daquela parte. Uma transação que modifica duas partes ainda exige coordenação entre elas. Também não executa as regras externas da aplicação, como enviar um e-mail uma única vez.
Latência e consistência
Se a maioria necessária estiver distante, a escrita inclui essa comunicação. Leituras locais de versões antigas podem ter outra relação entre latência e atualidade, quando o produto oferece esse recurso. “Tem três réplicas” não basta para descrever as garantias de todas as operações.
Aprofundamento aplicado
Maioria depende da distribuição das réplicas
Para um grupo estável de cinco votantes, a maioria é três. Ele pode continuar decidindo com dois votantes indisponíveis, desde que os restantes consigam se comunicar e o protocolo consiga eleger/manter liderança. Isso descreve o grupo, não todo o cluster.
| Distribuição ilustrativa | Perda de uma região |
|---|---|
| Região A: 3; região B: 2 | Perder A elimina a maioria |
| Região A: 2; B: 2; C: 1 | Perder qualquer região mantém pelo menos 3 votantes |
A segunda disposição pode exigir comunicação distante para confirmar escritas. Réplicas não votantes não devem ser contadas como votos só porque armazenam dados. Referência: replicação e tipos de réplica.
Exercício: desenhe uma partição de rede 2 contra 3. Resultado esperado: o lado com dois votantes não confirma novas decisões do grupo; explique por que permitir ambos escreverem sem coordenação violaria a ordem acordada.
Relacionado: 4. Transações e Isolamento em NewSQL · CAP Theorem.
Parte de NewSQL