SóProvas


ID
137191
Banca
CESGRANRIO
Órgão
Casa da Moeda
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Em determinada reunião técnica sobre a construção de um sistema de informação distribuído, foram feitas as afirmativas a seguir sobre o protocolo two-phase commit.

I - Uma transação somente é confirmada (committed) se todos os participantes concordarem e estiverem prontos para realizar o commit.
II - O protocolo garante que todos os participantes da transação distribuída podem confirmar ou abortar seu trabalho.
III - Durante a segunda fase, o coordenador informa a todos os participantes sobre a decisão e confirma ou aborta a transação.

Está(ão) correta(s) a(s) afirmativa(s)

Alternativas
Comentários
  •  I - CORRETO: Essa é a idéia básica do two-phase commit(2PC), confirmar apenas se todos estiverem de acordo.

    II - CORRETO: Uma das premissas do 2PC é que existe um coordenador da transação distribuída que irá se comunicar com os demais nós a respeito da confirmação da transação, se apenas um deles disser que não a transação será abortada, do contrário, se o coordenador obtiver apenas confirmações positivas a transação será confirmada(commit) e os demais nós serão avisados pelo coordenador para persistência da mesma em memória estável

    III - CORRETO: Na primeira fase os nós coordenados preparam o envio da mensagem para o coordenador se é possível efetivar a transação. Durante a segunda fase o coordenador já recebeu a informação de todos os nós sobre a efetivação da transação e ele irá decidir se enviará um commit(caso todas as confirmações sejam positivas sobre a efetivação da transação) ou abort(caso pelo menos uma confirmação seja negativa)

  • COMMIT EM DUAS FASES


    1ª Fase: todos os nós participantes da transação sinalizam ao coordenador que sua parte da transação foi realizada. O coordenador envia uma mensagem preparar “para commit”. Cada nó fará uma gravação forçada em disco de todos os registros de log e informações necessárias para recuperação local, e em seguida envia um sinal “OK” ao coordenador, caso contrário envia um sinal “não OK”. Na falta de uma resposta o coordenador considera o nó “não OK”.
     
    2ª Fase: se todos os nós respondem “OK’ e o voto do coordenador também for “OK”, a transação foi bem sucedida e o coordenador envia um sinal “commit” para os nós, caso contrário, a transação falhou e o coordenador envia uma mensagem para “rollback”. Neste caso a transação será desfeita utilizando-se os arquivos de log.


    COMMIT EM TRÊS FASES

    1ª Fase: o coordenador envia uma mensagem “canCommit” para os nós e passa para o estado “waiting”. Os nós respondem com “OK” ou “não OK”.

    2ª Fase: se o coordenador receber alguma mensagem “não OK” a transação é abortada e manda a mensagem “abort” para os nós que passam para o estado “abort”. Caso contrário o coordenador envia a mensagem “preCommit” para os nós e estes passam para o estado “prepared”.

    3ª Fase: o coordenador recebe o “OK” de todos os nós e todos passam para o estado “commit”, caso contrário aborta a transação