Bóson Treinamentos em Ciência e Tecnologia

Conceitos de bancos de Dados – O Teorema CAP

Teorema CAP em Bancos de Dados

O Teorema CAP em Bancos de Dados

O Teorema CAP é um teorema criado pelo Dr. Eric Brewer, na ACM – Association for Computing Machinery (e por isso também chamado de Teorema de Brewer), e é empregado para descrever o comportamento de um sistema de bancos de dados distribuídos. Na prática, se refere ao comportamento de um sistema quando ocorre uma requisição de escrita de dados seguida de uma requisição de leitura (consulta).

De acordo com o teorema CAP, é possível criar um banco de dados distribuído que possua os comportamentos a seguir:

Porém, , de acordo com o teorema, um sistema distribuído de bancos de dados somente pode operar com dois desses comportamentos ao mesmo tempo, mas jamais com os três simultaneamente.

Relação entre os elementos no Teorema CAP

Assim, é possível criar um banco de dados distribuído que seja consistente e tolerante a partições, ou disponível e tolerante a partições, ou ainda consistente e disponível (ou seja, não será um banco de dados distribuído). Mas não é possível criar um banco de dados distribuído que seja ao mesmo tempo consistente, disponível e tolerante a partições.

Consistência Eventual

Um conceito interessante derivado do teorema CAP é o da Consistência Eventual. Aqui, o sistema prioriza as escritas de dados (armazenamento), sendo o sincronismo entre os nós do servidor realizado em um momento posterior – o que causa um pequeno intervalo de tempo no qual o sistema como um todo é inconsistente. Para isso, são implementadas as propriedades Disponibilidade e Tolerância a Partição.

Exemplos de sistemas de bancos de dados que implementam a consistência eventual são o MongoDB, Cassandra e RavenDB (bancos NoSQL), entre outros. Em Bancos Relacionais, é muito comum implementar as propriedades Consistência e Disponibilidade. Como exemplos, citamos os SGBDRs Oracle Database, MySQL, PostgreSQL, SQL Server e outros.

Ao criar um banco de dados distribuído é importante ter em mente o teorema CAP. Você terá de decidir se o banco será consistente ou disponível, pois bancos de dados distribuídos são sempre tolerantes a partição.

Referências

Redmond, E.; Wilson J. R. Seven Databases in Seven Weeks – A Guide to Modern Databases and the NoSQL Movement. 1ª Ed. The Pragmatic Programmers, 2012 

 

Sair da versão mobile