terça-feira, 6 de maio de 2008

Aula do Duó - 05/05/2008

um processo é o coordenador quando no log está registrado o global begin, os demais registram local begin

as ações são gravadas e depois bloqueadas.

se a mensagem não chegar, por timeout ele dá abort e cancela a transação.
Ele só faz o commit se todas as respostas forem ready.

Falhas possíveis

Do agente - se no log dele, ele naum registrou o ready, ele não comete a ação, então o coordenador aborta por timeout. Nesse caso o ag. aborta a transação através do seu log local.
Pode tmb ter havido uma falha de host após a gravação do ready (falta de energia por exemplo). Se o ready foi gravado o log e antes de ser enviado aO coordenador a falha ter ocorrido, o coord. aborta por timeout. Caso ele tenha enviado e logo após, falhado, há a possibilidade do coord. cometer a ação, dependendo das informações enviadas pelos outros agentes.

Do coordenador -
depois de gravar o prepare e antes do global commit: bloqueia a transação até mandar o prepare de novo e recomeçar daú a transação. o agente fica aguardando a volta do coord.
depois do global commit mas antes de completar a transação: também é bloqueante! (os aag, ficam bloqueados aguardando a volta do coord.)
depois de gravar o complete: nada vai ser feito (nem pode). transações completas não podem ter seus dados alterados em virtude de erros posteriores.

Mensagens perdidas:
ready ou abort do ag pro coord: o coord falha por timeout e a transaction eh abortada
prepare do coord pros ag's: o coord aborta por timeout.

Algoritmo de Protocolo de cometimento não-bloqueante de 3 fases:
qdo o coord não manda o commit cria-se uma fase a mais
há uma fase a mais onde ou ele manda um prepare to commit ou prepare to abort
não se tem commit/abort, se tem um preparo para eles.
após tds terem sinalizado q receberam o prepare to commit/abort, finalmente ele envia a msg correspondente. Caso alguém não responda, o coordenador já aborta a ação aí!
esse algoritmo tem uma falha do mal: diante de falha de coordenador, qdo se ocorre algum problema com o coord, os ag's elegem outro coord. Porém qdo ocorre uma falha na rede ond se isolam agentes a ficarem em partições de agentes diferentes, um dos grupos fica sem coordenador e elege mais um, causando um 2º coordenador na ação. pode ocorrer também que cada uma das partições aja de uma maneira sobre a transação

é +seguro aceitar o bloqueio (protocolo de 2 fases, com bloqueio parcial dos hosts) para não ocorrer este problema. a solução é tomar medidas para uma rápida recuperação do coordenador.

Definição de Serialização e "Isolação" (ou visibilidade): Página 37 do PDF

Escalonamento concorrente: as transações sãoexecutadas concorrentemente (intercaladas)
Escalonamento serial: cada transação é executada por vez, criando uma série de execuções por transação

um escalonamento serial por definição é correto.
para haver conflito entre operações concorrentes, pelo menos uma ação tem que ser escrita, sendo de transações distintas. (Read/Write ou Write/Write)

Lock - controla a concorrência p/ realizar a serializabilidade (resolvem conflitos)
IMPORTANTE: Página 49, 1º parágrafo