Pular para o conteúdo principal

Questão de Banco de Dados — Recuperação de Dados em SGBDs — FGV 2024

Banco de DadosRecuperação de Dados em SGBDs
Código
fg165246
Banca
FGV
Órgão
TJ MS
Ano
2024
Cargo
Tec NS ( )
No contexto de atualização imediata, o banco de dados pode ser atualizado por algumas operações de uma transação antes que ela alcance seu ponto de confirmação. Dessa forma, durante a recuperação de um banco de dados após uma falha de transação, é necessário desfazer as operações não confirmadas e refazer as operações confirmadas para manter a integridade dos dados.   Para tanto, o algoritmo de recuperação do banco de dados que deverá ser aplicado é:
  1. AUNDO/REDO;
  2. BUNDO/NO-REDO;
  3. CNO-UNDO/REDO;
  4. DROLLBACK/COMMIT;
  5. ECOMMIT/ROLLBACK.
Revelar gabarito e comentário

GabaritoA — UNDO/REDO;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Recuperação de Banco de Dados: Algoritmos UNDO/REDO

Gabarito: letra A. No contexto de atualização imediata, o banco de dados pode ser atualizado por algumas operações de uma transação antes que ela alcance seu ponto de confirmação. Dessa forma, durante a recuperação, é necessário desfazer as operações não confirmadas (UNDO) e refazer as operações confirmadas (REDO) para manter a integridade dos dados. O algoritmo que atende a esse cenário é o UNDO/REDO, conforme a teoria clássica de recuperação de banco de dados (Elmasri & Navathe).

A recuperação de um banco de dados após uma falha é um dos pilares da durabilidade (propriedade ACID). Quando uma transação é executada, suas operações de escrita podem ser aplicadas ao banco de dados de duas formas principais: atualização adiada (deferred update) ou atualização imediata (immediate update). Na atualização adiada, as alterações só são gravadas no disco após a transação atingir o ponto de confirmação (COMMIT). Já na atualização imediata, as alterações podem ser gravadas no disco antes do COMMIT, o que exige um mecanismo de recuperação mais robusto.

O algoritmo de recuperação é classificado com base em duas operações fundamentais: UNDO (desfazer) e REDO (refazer). O UNDO reverte as operações de transações que não foram confirmadas, restaurando o estado anterior. O REDO reaplica as operações de transações confirmadas, garantindo que seus efeitos persistam. A combinação dessas operações define quatro algoritmos clássicos:

Algoritmo

Atualização

UNDO

REDO

Uso

UNDO/REDO

Imediata

Necessário

Necessário

Mais comum na prática

UNDO/NO-REDO

Imediata (com gravação antes do COMMIT)

Necessário

Não necessário

Variação do anterior

NO-UNDO/REDO

Adiada

Não necessário

Necessário

Atualização adiada

NO-UNDO/NO-REDO

Adiada (com gravação antes do COMMIT)

Não necessário

Não necessário

Caso ideal, mas raro

No contexto da questão, a atualização imediata permite que o banco seja atualizado antes do COMMIT. Se uma transação falhar após gravar algumas mudanças, mas antes de confirmar, o efeito dessas operações precisa ser desfeito (UNDO). Por outro lado, se uma transação confirmou, mas suas alterações ainda não foram persistidas no disco, é necessário refazê-las (REDO). Portanto, o algoritmo UNDO/REDO é o que se aplica.

A pegadinha da banca está em confundir os algoritmos de recuperação com os comandos de transação (COMMIT/ROLLBACK) ou com variações que não se aplicam ao cenário descrito. O candidato deve identificar que a atualização imediata exige tanto UNDO quanto REDO, pois transações não confirmadas precisam ser desfeitas e transações confirmadas precisam ser refeitas.

Algoritmos de recuperação
  • 1Atualização imediata
    • UNDO/REDO
      • desfaz não confirmadas
      • refaz confirmadas
    • UNDO/NO-REDO
      • grava antes do COMMIT
  • 2Atualização adiada
    • NO-UNDO/REDO
      • só grava após COMMIT
    • NO-UNDO/NO-REDO
      • caso ideal
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

O algoritmo UNDO/REDO é o correto. Na atualização imediata, o banco pode ser atualizado antes do COMMIT. Se uma transação falhar antes de confirmar, suas operações precisam ser desfeitas (UNDO). Se uma transação confirmou, mas suas alterações não foram persistidas no disco, elas precisam ser refeitas (REDO). Portanto, ambos os procedimentos são necessários durante a recuperação.

Alternativa B — ❌ Incorreta

O algoritmo UNDO/NO-REDO é uma variação da atualização imediata em que todas as atualizações precisam ser registradas no banco de dados em disco antes que a transação confirme. Nesse caso, apenas o UNDO é necessário, pois, se a transação confirmou, suas alterações já estão no disco. No cenário da questão, não há essa garantia, então o REDO também é necessário.

Alternativa C — ❌ Incorreta

O algoritmo NO-UNDO/REDO é característico da atualização adiada, em que as alterações só são gravadas no disco após o COMMIT. Nesse caso, o UNDO não é necessário, pois transações não confirmadas não alteraram o banco. No cenário da questão, a atualização é imediata, então o UNDO é necessário.

Alternativa D — ❌ Incorreta

ROLLBACK/COMMIT não é um algoritmo de recuperação, mas sim os comandos que finalizam uma transação. O ROLLBACK desfaz a transação e o COMMIT a confirma. Eles são usados no contexto de controle de transações, não na definição de algoritmos de recuperação.

Alternativa E — ❌ Incorreta

COMMIT/ROLLBACK é a ordem inversa dos comandos de finalização de transação. Assim como a alternativa D, não se trata de um algoritmo de recuperação, mas de comandos de controle de transação. A ordem correta dos comandos é ROLLBACK (desfazer) e COMMIT (confirmar), não o contrário.

NÃO CAIA NESSA!

A banca explora a confusão entre algoritmos de recuperação e comandos de transação. O candidato pode marcar ROLLBACK/COMMIT por associar à ideia de desfazer e confirmar, mas esses são comandos, não algoritmos. O algoritmo UNDO/REDO é o que define o procedimento de recuperação, enquanto ROLLBACK/COMMIT são as operações que o SGBD executa.

PEGA ESSA DICA!

Para identificar o algoritmo de recuperação, verifique o tipo de atualização (adiada ou imediata) e se as alterações são gravadas no disco antes ou depois do COMMIT. Se a atualização é imediata e não há garantia de gravação antes do COMMIT, o algoritmo é UNDO/REDO. Se a atualização é adiada, o algoritmo é NO-UNDO/REDO.

Gabarito: letra A

Link permanente: /questoes/fg165246