© Marcelo Bezerra de AlcântaraBanco de Dados II - Revisão - 1 Disciplina Banco de Dados II...

Post on 17-Apr-2015

104 views 0 download

Transcript of © Marcelo Bezerra de AlcântaraBanco de Dados II - Revisão - 1 Disciplina Banco de Dados II...

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 1

Disciplina Disciplina Banco de Dados IIBanco de Dados II

Revisão da Matéria VP2Revisão da Matéria VP2

Msc, Marcelo Bezerra de Alcântara

malcantara@fa7.edu.br

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 2

ObjetivosObjetivos

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 - 3

BibliografiaBibliografia

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 - 4

Questão 1Questã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 - 5

Resposta 1Resposta 1

lock-X(D, Tx)início

se lock(D) = ‘U’ então início

Tu = Tx lock(D) ‘X’;

fimsenã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 - 6

Resposta 1Resposta 1

unlock-X(D, Tx)início

se lock(D) = ‘X' então início

se fila-WAIT(D) = vazia entãolock(D) ‘U’;

senão Obter o primeiro Tx da fila-WAIT(D) e realizar o lock desejado;

fimsenã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;

fimfim

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 7

Questão 2Questã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 - 8

Resposta 2Resposta 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 fases1. 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 - 9

Resposta 2Resposta 2

númerobloqueios

Gráfico de bloqueios de Tx

tempostart commit

crescimento encolhimento

ponto em que os bloqueios para todos os dados desejados por Tx

foram obtidos (Pmax(Tx))

execução de operações de Tx

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 10

Resposta 2Resposta 2

• T1: r(Y) w(Y) w(Z)

• T2: r(X) r(Y) w(Y) r(Z) w(Z) • 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

• Exemplo

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

T1 T2 não garantiu SR!

T1 T2é SR! Pmax(T2)

Pmax(T1)

não é 2PL!

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 11

Questão 3Questão 3

• Explique o que é Deadlock?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 12

Resposta 3Resposta 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 Ty

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 13

Questão 4Questã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 - 14

Resposta 4Resposta 4

• 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

tempo de start de Tx

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 15

Resposta 4Resposta 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 - 16

Questão 5Questã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 - 17

Resposta 5Resposta 5

• Princípio de Funcionamento– 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• Vantagem

– 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 - 18

Questão 6Questão 6

• Explique os outros protocolos do 2PL (Conservador, Estrito e Rigoroso) ?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 19

Resposta 6Resposta 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úmerobloqueiosexclusivos

tempostart commit

Pmax(Tx)

númerobloqueioscomparti-

lhados

tempostart commit

Pmax(Tx)

crescimentocresci-mento

encolhi-mento

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 20

Resposta 6Resposta 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– vantagem

• menos overhead para Tx– Tx libera tudo apenas no final!

– desvantagem• limita mais a concorrência

númerobloqueios

tempostart commit

Pmax(Tx)

crescimento

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 21

Questão 7Questão 71. Considerando a técnica TS-Básico, verifique se alguma

transação abaixo é desfeita e em que ponto a) H1 = r1(a) r2(a) r3(a) c1 c2 c3 b) H2 = r1(a) w1(a) r2(a) c1 c2c) H3 = r1(a) r1(b) r2(a) r2(b) w2(a) w2(b) c1 c2d) H4 = r1(a) r1(b) r2(a) w2(a) w1(b) c1 c2e) H5 = r2(a) w2(a) w1(a) r2(a) c1 c2f) H6 = r2(a) w2(a) r1(b) r1(c) w1(c) w2(b) c1 c2

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 22

Resposta 7Resposta 71. H1 = r1(a) r2(a) r3(a) c1 c2 c3 - OK2. H2 = r1(a) w1(a) r2(a) c1 c2 - OK3. H3 = r1(a) r1(b) r2(a) r2(b) w2(a) w2(b) c1 c2 - ok4. H4 = r1(a) r1(b) r2(a) w2(a) w1(b) c1 c2 - ok5. H5 = r2(a) w2(a) w1(a) r2(a) c1 c2 - Errado6. H6 = r2(a) w2(a) r1(b) r1(c) w1(c) w2(b) c1 c2 - OK

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 23

Questão 8Questão 8

1. Explique o funcionamento do Scheduler Baseado em validação

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 24

Resposta 8Resposta 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 - 25

Resposta 8Resposta 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 - 26

Resposta 8Resposta 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 - 27

Pergunta 9Pergunta 9

• Quais os tipos de bloqueios de intensão e para que serve?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 28

Resposta 9Resposta 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 - 29

Questão Questão 1010

• 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+1write(tupla-X:TABELA-X)

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 30

Resposta 10Resposta 10

BD

Tabela X Tabela Y

Tupla X Tupla Bn-M Tupla Y Tupla Bm-P... ...

...IS (T2)

X (T1)

IX (T1)

IX (T1) IS (T1)

S (T2)

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 31

Questão Questão 1111

• Escreve o algoritmos do TS-Básico.

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 32

Pergunta 11Pergunta 11TS-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 - 33

Questão 12Questão 12

• Para que server o operador grant do SQL

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 34

Resposta 12Resposta 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 - 35

Resposta 12Resposta 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 - 36

Questão 13Questão 13

• Para que server a opção with grant option?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 37

Resposta 13Resposta 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 - 38

Questão 14Questão 14

• Para que server a operação revoke?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 39

Resposta 14Resposta 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 - 40

Resposta 14Resposta 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 - 41

Questão 15Questã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 - 42

Resposta 15Resposta 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 - 43

Resposta 15Resposta 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 - 44

Questão 16Questão 16

• O que são visões em um SGBD?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 45

Resposta 16Resposta 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 - 46

Questão 17Questão 17

• Para que servem operador create view e drop view respectivamente?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 47

Resposta 17Resposta 17

• Create view para criar uma visão• Drop view para remover

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 48

Questão 18Questão 18

• Para que server o Audit Trail?

© Marcelo Bezerra de Alcântara Banco de Dados II - Revisão - 49

Resposta 18Resposta 18

• Audit trail: componente de todo SGBD que armazena histórico de informações de auditoria