Em bancos de dados, especialmente quando distribuídos, surge o problema de garantir que uma certa transação seja processada corretamente quando tem efeitos em diferentes sistemas, ou nós. Um dos algoritmos utilizados nesse tipo de transação é conhecido originalmente como:
- A)Common knowledge;
Common knowledge não é o nome de um algoritmo de coordenação de transações distribuídas, mas uma expressão teórica ligada a conhecimento compartilhado em sistemas multiagente.
- B)Lock/unlock;
Lock/unlock é um mecanismo de controle de concorrência, não o protocolo específico usado para commit distribuído.
- C)Mutual exclusion;
Mutual exclusion trata de exclusão mútua entre processos, algo relacionado a sincronização, mas não ao algoritmo de confirmação de transações em vários nós.
- D)Transaction Logs;
Transaction Logs são registros de auditoria e recuperação, não o protocolo que decide confirmar ou abortar a transação distribuída.
- E)Two-phase commit.
Two-phase commit é o protocolo clássico de commit distribuído, usado para garantir atomicidade quando uma transação afeta mais de um sistema ou nó.
Gabarito: E
Quando uma transação envolve vários bancos de dados, servidores ou nós, o desafio é fazer tudo acontecer de modo coordenado: ou todos confirmam a operação, ou todos desistem. Isso evita o famoso cenário do "metade salvou, metade não salvou", que é receita para bagunça em sistema distribuído. O algoritmo clássico para resolver isso é o Two-phase commit, ou commit em duas fases. Ele funciona em duas etapas: primeiro o coordenador pergunta aos participantes se eles conseguem efetivar a transação; depois, se todos concordarem, ele manda confirmar. Se algum deles não puder, a ordem é abortar. A ideia é garantir atomicidade mesmo com vários sistemas envolvidos. Por isso o gabarito é a letra E. Em bancos de dados distribuídos, o two-phase commit é o protocolo tradicional usado para coordenar confirmação de transações entre múltiplos nós, sendo muito citado em teoria de SGBD como o mecanismo básico de consistência distribuída. As demais alternativas trazem termos genéricos ou conceitos próximos, mas não o nome original do algoritmo de coordenação de transações distribuídas. Aqui a banca quer o termo técnico clássico, sem drama e sem improviso.