Teorema do CAP vs. BASE (NoSQL)

12

Teorema do CAP vs. BASE (NoSQL)

Olá, estou tentando escrever um pequeno artigo para o meu trabalho sobre o NoSQL e descrevi o Teorema do CAP como, se não todos, a maioria dos bancos de dados NoSQL. Mais tarde, li um artigo sobre a diferença entre o NoSQL e o RDBMS, que afirmava que os bancos de dados NoSQL usam o BASE do ACID.

Conheço as propriedades de BASE, ACID e CAP, mas tenho dificuldade em descobrir qual a relação entre o teorema do CAP e o BASE. Pelo que entendi, o teorema da CAP leva à sigla BASE, mas é a conclusão correta? Ou são duas abordagens diferentes para "construir" um banco de dados em torno do qual compartilham algumas propriedades semelhantes?

Nesta publicação do blog (http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/), o autor escreve:

É mais difícil desenvolver software no mundo BASE tolerante a falhas em comparação com o mundo exigente do ACID, mas o teorema do CAP de Brewer diz que você não tem escolha se deseja aumentar a escala. No entanto, como Brewer aponta nesta apresentação, há um continuum entre ACID e BASE. Você pode decidir o quão perto deseja estar de um extremo do continuum ou do outro, de acordo com suas prioridades.

Em outro artigo, o autor escreve:

Muitos dos bancos de dados NOSQL, acima de tudo, afrouxaram os requisitos de consistência para obter melhor disponibilidade e particionamento. Isso resultou em sistemas conhecidos como BASE (Basicamente disponível, estado suave, eventualmente consistente). Eles não têm transações no sentido clássico e introduzem restrições no modelo de dados para permitir melhores esquemas de partição (como o sistema Dynamo etc.). Uma discussão mais abrangente sobre CAP, ACID e BASE está disponível nesta introdução.

Isto indica claramente que a PAC resulta em BASE.

Espero que alguém possa me esclarecer isso e remover minha confusão.

Obrigado
- Mestika

Mestika
fonte

Respostas:

15

CAP é basicamente um continuum ao longo do qual BASE e ACID estão em extremos opostos.

Diagrama CAP

CAP é tolerância de consistência, disponibilidade e partição. Basicamente, você pode escolher 2 deles, mas você não pode fazer todos os 3.

O ACID se concentra na consistência e disponibilidade.

O BASE se concentra na tolerância e disponibilidade da partição e lança consistência pela janela.

JNK
fonte
1
Um bom banco de dados ACID deve se concentrar na tolerância de consistência e partição, porque jogar a tolerância de partição pela janela (para dizer com palavras) quebraria a consistência sempre que ocorrer uma partição.
Peter
O ACID não se concentra na disponibilidade. O 'A' significa Atomicity e cobre coisas como abort - rollback - restart.
momo