Questão de Banco de Dados — Banco de Dados Distribuídos — CESPE / CEBRASPE 2025
- Código
- ce417235
- Banca
- CESPE / CEBRASPE
- Órgão
- PC DF
- Ano
- 2025
- Cargo
- GAAPC ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: Errado. A afirmação está incorreta porque, embora a replicação síncrona garanta que todas as cópias sejam atualizadas na mesma transação, ela não elimina qualquer possibilidade de inconsistência — falhas de rede, indisponibilidade de um nó ou particionamento podem impedir a conclusão da transação, exigindo mecanismos adicionais de controle de consistência, como protocolos de commit atômico (ex.: two-phase commit).
A replicação é uma técnica fundamental em bancos de dados distribuídos, na qual os dados são copiados e armazenados em múltiplos nós para garantir redundância, melhorar o desempenho de leitura e aumentar a disponibilidade. Existem duas abordagens principais: a replicação síncrona e a replicação assíncrona. Na replicação síncrona, a transação só é confirmada (commit) após todas as réplicas confirmarem a atualização, garantindo que, no momento do commit, todas as cópias estejam idênticas. Isso reduz drasticamente a janela de inconsistência, mas não a elimina por completo. Por exemplo, se um nó ficar indisponível durante a replicação, a transação pode falhar ou ficar bloqueada, e mecanismos de recuperação precisam ser acionados. Além disso, mesmo com replicação síncrona, podem ocorrer inconsistências temporárias durante o processo de atualização, ou em cenários de falha parcial, onde alguns nós confirmam e outros não. Portanto, a replicação síncrona minimiza, mas não elimina a possibilidade de inconsistência.
A replicação síncrona é frequentemente comparada à replicação assíncrona. Na assíncrona, a transação é confirmada no nó primário e as atualizações são propagadas para as réplicas em segundo plano, o que pode gerar inconsistências temporárias. Na síncrona, a confirmação exige que todas as réplicas estejam atualizadas, o que aumenta a consistência, mas também a latência e a dependência da disponibilidade dos nós. A escolha entre elas envolve um trade-off entre consistência e desempenho/disponibilidade.
A pegadinha da questão está em afirmar que a replicação síncrona elimina qualquer possibilidade de inconsistência. Isso é uma generalização indevida, pois mesmo com replicação síncrona, podem ocorrer inconsistências em cenários de falha parcial, particionamento de rede ou durante o processo de atualização. A replicação síncrona garante consistência no momento do commit, mas não elimina a necessidade de mecanismos adicionais de controle de consistência, como protocolos de commit atômico e recuperação de falhas.
A banca tenta induzir o candidato a acreditar que a replicação síncrona elimina toda inconsistência, quando na verdade ela apenas a minimiza. O termo "eliminando qualquer possibilidade" é o gatilho para marcar a alternativa como errada. Lembre-se: em sistemas distribuídos, a consistência total é um ideal, mas na prática há sempre a possibilidade de falhas e inconsistências temporárias.
Para questões sobre replicação, lembre-se do trade-off: síncrona = maior consistência, maior latência, menor disponibilidade; assíncrona = menor consistência, menor latência, maior disponibilidade. A palavra "eliminar" ou "sempre" em questões de banco de dados distribuído geralmente indica uma generalização indevida.
A afirmação está errada porque a replicação síncrona, embora garanta que todas as cópias sejam atualizadas na mesma transação, não elimina qualquer possibilidade de inconsistência. Em cenários de falha de rede, indisponibilidade de um nó ou particionamento, a transação pode falhar ou ficar bloqueada, exigindo mecanismos adicionais de controle de consistência, como protocolos de commit atômico (ex.: two-phase commit). Além disso, durante o processo de atualização, podem ocorrer inconsistências temporárias. Portanto, a replicação síncrona minimiza, mas não elimina a possibilidade de inconsistência.
Gabarito: Errado.
Link permanente: /questoes/ce417235