Questão de Banco de Dados — Transações (Locks, ACID, etc.) — CESPE / CEBRASPE 2025
- Código
- ce417351
- Banca
- CESPE / CEBRASPE
- Órgão
- PF
- Ano
- 2025
- Cargo
- PCF
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. A afirmação está incorreta porque os bancos de dados NoSQL não garantem atomicidade, consistência, isolamento e durabilidade (ACID) em todas as operações realizadas em arquiteturas distribuídas. Na verdade, muitos sistemas NoSQL adotam o modelo BASE (Basically Available, Soft state, Eventually consistent) e seguem o Teorema CAP, que afirma ser impossível garantir simultaneamente consistência, disponibilidade e tolerância a partição em um sistema distribuído. A garantia plena de ACID é característica dos bancos de dados relacionais tradicionais, não dos NoSQL.
O que são as propriedades ACID? Elas formam um conjunto de garantias que asseguram a confiabilidade das transações em um banco de dados. Atomicidade significa que uma transação é indivisível: ou todas as suas operações são executadas com sucesso (commit) ou nenhuma delas é aplicada (rollback). Consistência garante que a transação leve o banco de dados de um estado válido para outro estado válido, respeitando todas as regras e restrições de integridade. Isolamento assegura que transações concorrentes não interfiram umas nas outras, de modo que o resultado parcial de uma transação não seja visível para outras até que ela seja concluída. Durabilidade garante que, uma vez confirmada (commit), a transação permaneça persistida mesmo em caso de falha do sistema.
Essas propriedades são implementadas pelos SGBDs relacionais por meio de mecanismos como locks (bloqueios exclusivos e compartilhados), logs de transação e controle de concorrência. O material de apoio destaca que a atomicidade é responsabilidade do subsistema de recuperação, o isolamento do subsistema de controle de concorrência, e a durabilidade do subsistema de recuperação. No entanto, em bancos NoSQL distribuídos, a busca por escalabilidade e disponibilidade muitas vezes leva ao relaxamento dessas garantias, priorizando o Teorema CAP: em caso de partição de rede, o sistema precisa escolher entre consistência e disponibilidade, não podendo garantir ambas simultaneamente.
Na prática, um banco NoSQL como o Cassandra ou o DynamoDB, por exemplo, adota consistência eventual (eventual consistency), em que os dados podem ficar temporariamente inconsistentes entre réplicas, mas convergem para um estado consistente ao longo do tempo. Isso viola diretamente a garantia de consistência forte do ACID. Portanto, a afirmação de que os bancos NoSQL garantem ACID em todas as operações é uma generalização indevida e incorreta.
A pegadinha da questão está em usar o termo "todas as operações" e "arquiteturas distribuídas", que remete ao Teorema CAP. O candidato pode confundir e achar que NoSQL também segue ACID, mas a realidade é que a maioria dos bancos NoSQL adota o modelo BASE, que é o oposto do ACID em vários aspectos. Guarde essa distinção: ACID é para bancos relacionais, BASE é para NoSQL.
A afirmação está errada porque os bancos de dados NoSQL não garantem as propriedades ACID em todas as operações distribuídas. O Teorema CAP estabelece que em um sistema distribuído é impossível garantir simultaneamente Consistência, Disponibilidade e Tolerância a Partição. Como a partição de rede é inevitável, o sistema precisa escolher entre consistência e disponibilidade. Muitos bancos NoSQL optam por disponibilidade e tolerância a partição (AP), sacrificando a consistência forte, adotando consistência eventual. Além disso, o modelo BASE (Basically Available, Soft state, Eventually consistent) é frequentemente usado em NoSQL, contrastando com o ACID. Portanto, a garantia plena de ACID não é uma característica dos bancos NoSQL, mas sim dos bancos relacionais tradicionais.
Gabarito: Errado
Link permanente: /questoes/ce417351