A respeito de arquitetura, segurança, integridade, concorrên...

Próximas questões
Com base no mesmo assunto
Q3156733 Banco de Dados

A respeito de arquitetura, segurança, integridade, concorrência, recuperação após falhas e gerenciamento de transições em sistemas de gerenciamento de banco de dados (SGDB), julgue o próximo item.


Em ambientes com alta latência ou alto número de falhas, recomenda-se como primeira opção a utilização do protocolo 2PC (Two-Phase Commit), dada a sua eficiência em situações dessa natureza.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Na verdade é ao contrário. 2PC (Two-Phase Commit) não é recomendado para sistemas com alto número de falhas.

Segue uma boa explicação do Unmesh Joshi no livro "Padrões de Sistemas Distribuídos".

Quando os dados precisam ser armazenados atomicamente em vários nós de cluster, os nós não podem tornar os dados acessíveis aos clientes até que a decisão de outros nós de cluster seja conhecida. Cada nó precisa saber se outros nós armazenaram os dados com sucesso ou se falharam.

A essência do commit em duas fases, sem surpresa, é que ele realiza uma atualização em duas fases:

  1. A fase de preparação pergunta a cada nó se ele pode prometer realizar a atualização.
  2. A fase de confirmação realmente executa isso.

Como parte da fase de preparação, cada nó participante da transação adquire o que for necessário para garantir que será capaz de fazer o commit na segunda fase — por exemplo, quaisquer bloqueios que sejam necessários. Uma vez que cada nó é capaz de garantir que pode fazer o commit na segunda fase, ele informa o coordenador, prometendo ao coordenador que pode e fará o commit na segunda fase. Se algum nó não for capaz de fazer essa promessa, o coordenador diz a todos os nós para reverter, liberando quaisquer bloqueios que eles tenham, e a transação é abortada. Somente se todos os participantes concordarem em prosseguir é que a segunda fase começa — ponto em que se espera que todos eles atualizem com sucesso. É crucial para cada participante garantir a durabilidade de suas decisões usando um padrão como  . Isso significa que mesmo se um nó travar e reiniciar posteriormente, ele deve ser capaz de concluir o protocolo sem problemas.

JUSTIFICATIVA CEBRASPE - Errado. O protocolo Two-Phase Commit (2PC) é essencial para garantir atomicidade em transações distribuídas, mas o processo é vulnerável em redes de alta latência ou quando há falhas de comunicação, pois pode bloquear recursos por longos períodos. A complexidade do 2PC o torna menos eficiente em situações de latência elevada e falhas de rede.

O protocolo 2PC (Two-Phase Commit) não é a melhor opção para ambientes com alta latência ou alto número de falhas.

Embora o 2PC seja eficaz para garantir a atomicidade das transações distribuídas, ele possui algumas limitações, principalmente em situações de falhas ou latência elevada. O protocolo pode ficar preso em um estado de "indefinição" (quando uma das partes da transação falha) e necessita de comunicação contínua entre os nós, o que torna o processo ineficiente em cenários com alta latência ou falhas frequentes.

Para esses casos, protocolos como 3PC (Three-Phase Commit) ou alternativas mais tolerantes a falhas, como o Paxos ou o Raft, são mais recomendados, pois fornecem maior robustez e eficiência em ambientes de alta falha ou latência.

Fonte: ChatGPT

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo