Disciplina
Banco de Dados II
Revisão da Matéria VP2
Msc, Marcelo Bezerra de Alcântara
[email protected]
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 1
Objetivos
1. Revisar a matéria sobre as Técnicas
de controle de concorrência – Aula 05;
2. Revisar Controle de Acesso – Aula 06;
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 2
Bibliografia
1. ELMASRI, Ramez; NAVATHE,
Shamkant B, Sistemas de banco de
dados. 4. ed. Pearson Brasil, 2005.
Capítulo 17 e 18
2. KORTH, Henry F.; SILBERSCHATZ,
Abraham Sistemas de banco de
dados. 3. ed, São Paulo: Makron
Books, 1999. Capítulo 13 e 14
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 3
Questão 1
1. Proponha algoritmos de alto nível para as
operações:
a) lock-X(D, Tx)
b) unlock(D, Tx) (considere que essa operação também pode
retirar transações da fila-WAIT e solicitar novos bloqueios)
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 4
Resposta 1
lock-X(D, Tx)
início
se lock(D) = ‘U’ então
início
Tu = Tx
lock(D)  ‘X’;
fim
senão se lock(D) = ‘S’ então insere Tx na fila-WAIT(D)
senão /* lock(D) = ‘X’ */ insere (Tx, ‘S’) na fila-WAIT(D);
fim
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 5
Resposta 1
unlock-X(D, Tx)
início
se lock(D) = ‘X' então
início
se fila-WAIT(D) = vazia então
lock(D)  ‘U’;
senão
Obter o primeiro Tx da fila-WAIT(D) e realizar o
lock desejado;
fim
senão se lock(D) = ‘S’ então
início
remove Tx da fila-READ(D)
se fila-READ(D) = vazia então lock(D)=U;
fim
fim
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 6
Questão 2
1. Explique o princípio da técnica de bloqueio
de duas fases e mostre exemplo?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 7
Resposta 2
•
Premissa
– “para toda transação Tx, todas as operações
de bloqueio de dados feitas por Tx precedem
a primeira operação de desbloqueio feita por
Tx”
•
Protocolo de duas fases
1. Fase de expansão ou crescimento
•
Tx pode obter bloqueios, mas não pode liberar
nenhum bloqueio
2. Fase de retrocesso ou encolhimento
•
Tx pode liberar bloqueios, mas não pode obter
nenhum bloqueio
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 8
Resposta 2
Gráfico de bloqueios de Tx
número
bloqueios
ponto em que os bloqueios para
todos os dados desejados por Tx
foram obtidos (Pmax(Tx))
crescimento
start
encolhimento
execução de operações de Tx
© Marcelo Bezerra de Alcântara
commit
tempo
Banco de Dados II - Revisão - 9
Resposta 2
• T1: r(Y) w(Y) w(Z)
• T2: r(X) r(Y) w(Y) r(Z) w(Z)
não é 2PL!
• Contra-Exemplo
HN-2PL = lx1(Y) r1(Y) ls2(X) r2(X) u2(X) w1(Y) u1(Y) lx2(Y)
r2(Y) w2(Y) u2(Y) lx2(Z) r2(Z) w2(Z) c2 lx1(Z) w1(Z)
u1(Z) c1
T1
• Exemplo
T2
não garantiu SR!
Pmax(T1)
H2PL = ls2(X) r2(X) lx1(Y) r1(Y) lx1(Z) w1(Y) u1(Y) lx2(Y)
r2(Y) w1(Z) u1(Z) c1 w2(Y) lx2(Z) u2(X) u2(Y) w2(Z)
u2(Z) c2
T2
Pmax(T2)
é SR! T1
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 10
Questão 3
• Explique o que é Deadlock?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 11
Resposta 3
•
Ocorrência de deadlock
– Ty está na Fila-WAIT(D1) de um dado D1
bloqueado por Tx
– Tx está na Fila-WAIT(D2) de um dado D2
bloqueado por Ty
•
Pode ser descoberto através de um grafo
de espera de transações
– se o grafo é cíclico existe deadlock!
Tx
© Marcelo Bezerra de Alcântara
Ty
Banco de Dados II - Revisão - 12
Questão 4
• Quais são os protocolos de prevenção de
Deadlock baseado em timestamp?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 13
Resposta 4
•
tempo de start de Tx
Timestamp
– rótulo de tempo associado à Tx (TS(Tx))
•
Técnicas
– consideram que Tx deseja um dado bloqueado
por outra transação Ty
– Técnica 1: esperar-ou-morrer (wait-die)
•
se TS(Tx) < TS(Ty) então Tx espera
senão início
abort(Tx)
start(Tx) com o mesmo TS
fim
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 14
Resposta 4
•
Técnicas (cont.)
–
Técnica 2: ferir-ou-esperar (wound-wait)
•
–
se TS(Tx) < TS(Ty) então
início
abort(Ty)
start(Ty) com o mesmo TS
fim
senão Tx espera
vantagem das técnicas
•
evitam starvation (espera indefinida) de uma Tx
–
–
quanto mais antiga for Tx, maior a sua prioridade
desvantagem das técnicas
•
muitos abortos podem ser provocados, sem nunca ocorrer
um deadlock
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 15
Questão 5
• Explique o funcionamento do protocolo de
prevenção de deadlock Cautious-Waiting?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 16
Resposta 5
•
Princípio de Funcionamento
–
•
Vantagem
–
•
se Tx deseja D e D está bloqueado por Ty
então
se Ty não está em alguma Fila-WAIT
então Tx espera
senão início
abort(Tx)
start(Tx)
fim
se Ty já está em espera, Tx é abortada para evitar um
possível ciclo de espera
Desvantagem
–
a mesma das técnicas baseadas em timestamp
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 17
Questão 6
• Explique os outros protocolos do 2PL
(Conservador, Estrito e Rigoroso) ?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 18
Resposta 6
•
Scheduler 2PL Conservador ou Estático
– evita deadlock, porém Tx pode esperar muito
para executar
•
Scheduler 2PL Estrito (muito usado pelos SGBDs)
– Tx só libera seus bloqueios exclusivos após
executar commit ou abort
número
bloqueios
compartilhados
Pmax(Tx)
cresci- encolhimento mento
commit tempo
start
© Marcelo Bezerra de Alcântara
número
bloqueios
exclusivos
Pmax(Tx)
crescimento
start
commit
tempo
Banco de Dados II - Revisão - 19
Resposta 6
•
Scheduler 2PL Estrito
– vantagem: garante escalonamentos estritos
– desvantagem: não está livre de deadlocks
•
Scheduler 2PL (Estrito) Rigoroso
– Tx só libera seus bloqueios após executar
commit ou abort
número
bloqueios
– vantagem
•
menos overhead para Tx
Pmax(Tx)
– Tx libera tudo apenas no final!
crescimento
– desvantagem
•
limita mais a concorrência
© Marcelo Bezerra de Alcântara
start
commit
tempo
Banco de Dados II - Revisão - 20
Questão 7
1.
Considerando a técnica TS-Básico, verifique se alguma
transação abaixo é desfeita e em que ponto
a) H1 = r1(a)
b) H2 = r1(a)
c) H3 = r1(a)
d) H4 = r1(a)
e) H5 = r2(a)
f) H6 = r2(a)
© Marcelo Bezerra de Alcântara
r2(a) r3(a) c1 c2 c3
w1(a) r2(a) c1 c2
r1(b) r2(a) r2(b) w2(a) w2(b) c1 c2
r1(b) r2(a) w2(a) w1(b) c1 c2
w2(a) w1(a) r2(a) c1 c2
w2(a) r1(b) r1(c) w1(c) w2(b) c1 c2
Banco de Dados II - Revisão - 21
Resposta 7
1.
2.
3.
4.
5.
6.
H1 = r1(a)
H2 = r1(a)
H3 = r1(a)
H4 = r1(a)
H5 = r2(a)
H6 = r2(a)
r2(a) r3(a) c1 c2 c3 - OK
w1(a) r2(a) c1 c2 - OK
r1(b) r2(a) r2(b) w2(a) w2(b) c1 c2 - ok
r1(b) r2(a) w2(a) w1(b) c1 c2 - ok
w2(a) w1(a) r2(a) c1 c2 - Errado
w2(a) r1(b) r1(c) w1(c) w2(b) c1 c2 - OK
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 22
Questão 8
1. Explique o funcionamento do Scheduler
Baseado em validação
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 23
Resposta 8
•
Técnica na qual atualizações de uma
transação Tx são feitas sobre cópias locais
dos dados
• Quando Tx solicita commit é feita a sua
validação
– Tx violou a serializabilidade?
• SIM: Tx é abortada e reiniciada
posteriormente
• NÃO: atualiza o BD a partir das cópias dos
dados e encerra Tx
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 24
Resposta 8
•
Cada transação Tx passa por 3 fases:
1. Leitura
• Tx lê dados de transações committed do BD
e atualiza dados em cópias locais
2. Validação
• análise da manutenção da serializabilidade
de conflito caso as atualizações de Tx
sejam efetivadas no BD
3. Escrita
• se fase de Validação for OK, aplica-se as
atualizações de Tx no BD e Tx encerra com
sucesso; caso contrário, Tx é abortada
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 25
Resposta 8
• Vantagens
– reduz o overhead durante a execução de Tx
– evita aborto em cascata
• Tx não grava no BD antes de suas atualizações
serem validadas em memória
– se Tx interfere em outra Ty committed ou em validação,
suas atualizações são descartadas
• Desvantagem
– se houve interferência entre Tx e outras
transações (isso não é esperado pois a técnica é
otimista), isso é descoberto somente ao final da
execução de Tx (na validação) e só após essa
validação Tx pode ser reiniciada
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 26
Pergunta 9
• Quais os tipos de bloqueios de intensão
e para que serve?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 27
Resposta 9
• Indicam, em grânulos mais grossos, que Tx está
bloqueando algum dado em um grânulo mais fino
– vê o BD como uma árvore de grânulos
• Tipos de bloqueios de intenção
– IS (Intention-Shared)
• indica que um ou mais bloqueios compartilhados serão
solicitados em nodos descendentes
– IX (Intention-eXclusive)
• indica que um ou mais bloqueios exclusivos serão solicitados
em nodos descendentes
– SIX (Shared-Intention-eXclusive)
• bloqueia o nodo corrente no modo compartilhado, porém um ou
mais bloqueios exclusivos serão solicitados em nodos
descendentes
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 28
Questão 10
• Dada a transação abaixo, indique os
bloqueios necessários para executar a
transação considerando os níveis: Banco
– Tabela - Tupla.
read(tupla-X:TABELA-X)
read(tupla-Y:TABELA-Z)
x:=x+1
write(tupla-X:TABELA-X)
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 29
Resposta 10
IX (T1)
BD
IX (T1) Tabela X
Tupla X
Tabela Y
Tupla Bn-M
X (T1)
© Marcelo Bezerra de Alcântara
...
IS (T2)
Tupla Y
IS (T1)
...
Tupla Bm-P
...
S (T2)
Banco de Dados II - Revisão - 30
Questão 11
• Escreve o algoritmos do TS-Básico.
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 31
Pergunta 11
TS-Básico(Tx, dado, operação)
início
se operação = ‘READ’ então
se TS(Tx) < R-TS(dado).TS-Write então
início abort(Tx);
restart(Tx) com novo TS;
fim
senão início executar read(dado);
se R-TS(dado).TS-Read < TS(Tx) então
R-TS(dado).TS-Read  TS(Tx);
fim
senão início /* operação = ‘WRITE’ */
se TS(Tx) < R-TS(dado).TS-Read OU
TS(Tx) < R-TS(dado).TS-Write então
início abort(Tx);
restart(Tx) com novo TS;
fim
senão início
executar write(dado);
R-TS(dado).TS-Write  TS(Tx);
fim
fim
fim
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 32
Questão 12
• Para que server o operador grant do
SQL
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 33
Resposta 12
• O Comando grant é usado para
conferir autorização. A forma básica
deste comando é:
grant <lista de privilégios>
on <nome da relação ou visão>
to <lista de usuários>
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 34
Resposta 12
grant select on agencia to U1, U2, U3
grant update on deposito to U1
grant references (nome-agencia)
on agencia to U1
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 35
Questão 13
• Para que server a opção with grant
option?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 36
Resposta 13
• A opção with grant option, permite ao
usuário que recebeu um privilégio
repassar para quem quiser.
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 37
Questão 14
• Para que server a operação revoke?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 38
Resposta 14
• Para revogar a autorização, o comando
revoke é usado. Ele toma a forma
quase idêntica àquela do comando
grant:
revoke <lista de privilégios>
on <nome da relação ou visão>
from <lista de usuários>
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 39
Resposta 14
revoke select on agencia from U1, U2,
U3
revoke update on deposito from U1
revoke references (nome-agencia) on
agencia from U1
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 40
Questão 15
• Para que servem os pápeis (Role) no
contexto de segurança no SGBD e como
ela são criadas?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 41
Resposta 15
• É um identificador ao qual pode-se
atribuir privilégios que não existem a
princípio. Então pode-se atribuir a um
usuário este papel (conjunto de
privilégios) com um único comando
GRANT.
• Pode-se inclusive ao criar um papel usar
outros papéis já cadastrados.
• Ex. PapelVendedor,
PapelVendedorSapatos,
PapelVendedoFrutas.
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 42
Resposta 15
• Sintaxe SQL:1999
CREATE ROLE nome-papel
[WITH ADMIN {CURRENT_USER |
CURRENT_ROLE}]
Para remover um papel:
DROP ROLE nome-papel;
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 43
Questão 16
• O que são visões em um SGBD?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 44
Resposta 16
• Uma visão, na terminologia SQL, é uma
tabela única e derivada de outra tabela, que
pode ser uma tabela básica ou uma visão
previamente definida. Uma visão não existe
de forma física, ela é considerada uma
tabela virtual, em contraste com as tabelas
básicas, cujas tuplas são realmente
armazenadas no banco de dados. Isso
limita as operações de atualização possíveis
para as visões, embora não imponha
nenhuma limitação para consultas.
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 45
Questão 17
• Para que servem operador create view e
drop view respectivamente?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 46
Resposta 17
• Create view para criar uma visão
• Drop view para remover
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 47
Questão 18
• Para que server o Audit Trail?
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 48
Resposta 18
• Audit trail: componente de todo SGBD
que armazena histórico de informações
de auditoria
© Marcelo Bezerra de Alcântara
Banco de Dados II - Revisão - 49
Download

Disciplina Banco de Dados II Revisão da Matéria VP2