Questão de Banco de Dados — Banco de Dados Orientados a Objetos — FUNDATEC 2023
- Código
- qq894922
- Banca
- FUNDATEC
- Órgão
- IF-SC
- Ano
- 2023
- Nível
- Superior
- Cargo
- Professor EBTT - Sistemas Distribuídos
- Aforte
- Beventual
- Clinearizável
- Dcausal
- Eserializável
GabaritoB — eventual
Gabarito: letra B (eventual). O modelo de consistência eventual é o único entre as opções que permite leituras e escritas mesmo durante uma partição de rede, priorizando a disponibilidade (A) em detrimento da consistência imediata, conforme o teorema CAP (Consistency, Availability, Partition tolerance).
Em sistemas distribuídos, o teorema CAP estabelece que, em caso de partição de rede (P), é necessário escolher entre consistência (C) e disponibilidade (A). A consistência eventual é um modelo que abdica da consistência forte para manter a disponibilidade: os nós continuam aceitando operações durante a partição e, quando a comunicação é restabelecida, os dados são reconciliados. Por isso, ela é amplamente utilizada em sistemas que priorizam alta disponibilidade, como bancos NoSQL (ex.: Cassandra, DynamoDB).
Modelo de Consistência | Permite leituras/escritas durante partição? | Prioriza disponibilidade (A) ou consistência (C)? | Exemplo de uso |
|---|---|---|---|
Eventual | Sim | Disponibilidade (A) | Cassandra, DynamoDB |
Forte | Não | Consistência (C) | Bancos relacionais tradicionais |
Linearizável | Não | Consistência (C) | Sistemas com requisitos de ordem global |
Causal | Parcialmente | Consistência (C) | Sistemas com dependências causais |
Serializável | Não | Consistência (C) | Transações ACID |
A consistência forte garante que, após uma escrita, todas as leituras subsequentes retornem o valor atualizado. Durante uma partição, isso exigiria que os nós isolados não aceitassem escritas ou leituras que pudessem ser inconsistentes, comprometendo a disponibilidade. Portanto, não é adequada para operações durante partições.
A consistência eventual permite que leituras e escritas ocorram mesmo durante uma partição. Os nós continuam operando de forma independente; após a partição ser resolvida, as atualizações são propagadas e o sistema converge para um estado consistente. Esse modelo é tolerante a partições e prioriza a disponibilidade, preenchendo exatamente o requisito do enunciado.
A consistência linearizável é uma forma de consistência forte que exige que toda operação pareça ocorrer em um único instante no tempo, como se houvesse uma réplica única. Durante uma partição, se um nó não puder garantir essa ordem global, ele deve rejeitar operações, violando a disponibilidade. Logo, não permite operações contínuas durante partições.
A consistência causal garante que operações relacionadas causalmente sejam vistas na mesma ordem por todos os nós. Embora seja mais flexível que a linearizável, ainda impõe restrições que dificultam a operação durante partições, pois os nós precisam coordenar a ordem causal. Normalmente, em partições, as operações podem ser bloqueadas ou atrasadas para manter a ordenação causal.
A consistência serializável é o mais alto nível de isolamento em transações, exigindo que o resultado de transações concorrentes seja equivalente a uma execução serial. Durante partições, garantir isso exigiria coordenação global, o que é impraticável sem comunicação entre os grupos. Portanto, não é compatível com operações contínuas durante partições.
Lembre-se do teorema CAP: ao escolher tolerância à partição (P), você precisa decidir entre consistência (C) e disponibilidade (A). A consistência eventual é a escolha clássica de quem prioriza disponibilidade, abrindo mão da consistência imediata. Questões como essa frequentemente opõem consistência eventual (disponível durante partições) a modelos fortes (que bloqueiam ou falham).
Gabarito: letra B (eventual).
Link permanente: /questoes/qq894922