Teorema CAP e MySQL

Sep 10 2020

Existe um teorema CAP: R + W> N. Digamos que eu tenha W = 1 (mestre), R = 6 (escravos), N = 6, então um escravo pode escrever e ler. Como diz o teorema, podemos ter certeza de uma consistência forte (sempre obteremos o valor mais recente).

Eu li que o armazenamento de dados pode verificar a versão e retornar a mais recente. Mas é verdade de fato usar MySQL? Ou talvez precisemos usar algum tipo de intermediário? Como o teorema CAP se aplica ao MySQL?

Respostas

1 RolandoMySQLDBA Sep 10 2020 at 19:04

O que você está propondo não é realmente o teorema CAP, a menos que o cluster seja uma arquitetura totalmente compartilhada. Por favor, observe qual teorema CAP vem de meu antigo post de Jan 01, 2013: Consistência no ACID e teorema CAP, eles são iguais?

BONÉ

  • Consistência (todos os nós têm os mesmos dados por meio de consistência eventual)
  • Disponibilidade
  • Tolerância de partição: o sistema continua a operar apesar da perda de mensagem arbitrária ou falha de parte do sistema

Cada nó teria uma cópia completa do conjunto de dados completo. O cluster de banco de dados fornecido precisaria ser compatível com consistência eventual, ou seja, ter compatibilidade com ACID em todo o cluster.

SUA PERGUNTA REAL

Mas é verdade de fato usar MySQL? Ou talvez precisemos usar algum tipo de intermediário? Como o teorema CAP se aplica ao MySQL?

As configurações do MySQL que operam no Teorema CAP são as seguintes:

  • Cluster InnoDB
  • Cluster MariaDB Galera
  • Cluster Percona XtraDB

Seu melhor intermediário ??? Se os dados que você grava são críticos e precisam estar disponíveis, leia os dados do Master que você os gravou. Em qualquer uma das configurações de cluster mencionadas acima, qualquer nó pode ser um mestre. Se os dados forem gravados em um Master, todos eles devem tê-los e estar prontos para serem lidos, desde que todos os nós em um Cluster executem o COMMIT nessa mesma transação .

Se você tiver escravos anexados a esses mestres, cada escravo deve aguardar em seu COMMIT mestre para que os dados sejam replicados e se tornem visíveis em um escravo.