Banco de Dados - Senado - Gran Cursos Presencial

Propaganda
Banco de Dados - Senado
Transações, Isolamento, Concorrência e
Bloqueio
Banco de Dados Distribuído
Ilka Kawashita
[email protected]
Material preparado :Prof. Marcio Vitorino
Transações
n 
n 
n 
n 
Uma transação é uma unidade lógica do
processamento do banco, que inclui uma ou
mais operações de acesso ao banco de
dados que precisa ser completada (ou
desfeita) integralmente para garantir
precisão.
Essas operações podem incluir inclusão,
exclusão, modificação ou seleção.
Iniciar: start transaction (begin).
Finalizar: commit (work).
Prof.: Ilka Kawashita
[email protected]
Procedural Language / SQL
n 
Controle de transações:
BEGIN
........
SAVEPOINT P1;
........
END;
ROLLBACK TO SAVEPOINT P1;
n 
RELEASE SAVEPOINT P1 (destruir um ponto de
salvamento)
Obs: Blocos não caracterizam início e término de transação.
n 
Prof.: Ilka Kawashita
[email protected]
Propriedades de uma Transação
n 
n 
n 
n 
Atomicidade: uma transação é uma unidade de
processamento, é realizada integralmente ou não é
realizada.
Consistência: uma transação leva um banco de dados de
um estado consistente para outro estado consistente.
Isolamento: uma transação deve parecer como se
estivesse sendo executada isoladamente.
Durabilidade: as alterações aplicadas a um banco de
dados por meio de uma transação confirmada (commited)
devem persistir no banco de dados.
Prof.: Ilka Kawashita
[email protected]
Escalonamento de Transações
n 
n 
n 
n 
Quando transações estão sendo executadas
concorrentemente e de modo entrelaçado, a ordem de
execução das operações das várias transações é conhecida
como escalonamento (schedule).
Dois escalonamentos são considerados seriais quando as
operações de cada transação são executadas em série,
consecutivamente, sem quaisquer operações entrelaçadas
as outra transação.
Um escalonamento é serial se, para todas as transações T
participantes do escalonamento, todas as operações de T
forem executadas consecutivamente no escalonamento;
caso contrário, o escalonamento é dito não-serial.
Um escalonamento S de n transações é seriável (ou
serializável) se for equivalente a algum escalonamento
serial das mesmas n transações.
Prof.: Ilka Kawashita
[email protected]
Escalonamento de Transações
n 
T1:
q 
q 
q 
q 
n 
Op1
Op2
Op3
Op4
T2:
q 
q 
q 
q 
Op1
Op2
Op3
Op4
Escalonamento Serial:
n 
n 
n 
Op1 Op2 Op3
Op4 Op1 Op2
Op3 Op4
Escalonamento Serializável ou Seriável:
n 
n 
Op1 Op1 Op2 Op2 Op3 Op4 Op3 Op4
Op1 Op2 Op1 Op3 Op2 Op3 Op4 Op4
Prof.: Ilka Kawashita
[email protected]
Problemas de Consistência
n 
n 
n 
n 
Leitura Suja: leitura de dados não confirmados de
uma linha existente, podendo ocasionar a leitura de
uma informação nunca confirmada.
Leitura Não-Repetida: duas leituras de dados na
mesma transação não se repetem. Na segunda
leitura, dados não existem ou foram modificados.
Leitura Fantasma: na releitura de um conjunto de
dados, surgem novas informações no conjunto.
Perda de atualização: duas transações que
ocorrem simultaneamente atualizam o mesmo
dado. Isto pode ocorrer em uma seqüência
segundo a qual uma das atualizações é perdida.
Prof.: Ilka Kawashita
[email protected]
Níveis de isolamento (SQL)
n 
SERIALIZABLE: uma transação é totalmente isolada das outras. Caso a
transação tenha comandos DML que tentem atualizar dados não gravados de
outra transação, essa transação não será efetuada.
n 
REPEATABLE READ: os dados podem ser lidos mais de uma vez, e se outra
transação tiver incluído ou atualizado linhas e estas forem gravadas no banco
de dados entre uma e outra leitura dos dados, então os dados retornados da
última busca serão diferentes dos dados da busca anterior. Esse efeito é
conhecido como leitura fantasma.
n 
READ COMMITED: caso a transação utilize comando DML que precise do
bloqueio de linhas que outras transações estão utilizando, a operação somente
será concluída após a liberação da linha da outra transação.
n 
READ UNCOMMITED: serão lidos conteúdos não gravados ainda pelo banco de
dados (transações passíveis de ROLLBACK). Há um enorme risco nessas
operações, visto que o usuário que está bloqueando a informação pode
descartá-la. Esse efeito é conhecido como leitura suja.
n 
Exemplo:
q 
START TRANSACTION SERIALIZABLE
q 
SET TRANSACTION LEVEL SERIALIZABLE
Prof.: Ilka Kawashita
[email protected]
Níveis de isolamento (Resumo)
Prof.: Ilka Kawashita
[email protected]
Bloqueio
n 
Um bloqueio (lock) é uma variável associada a
um item de dado que descreve o status do item
com relação a possíveis operações que podem
ser aplicadas ao mesmo:
q 
Bloqueio Binário: locked (1) ou unlocked (0).
n 
n 
n 
q 
lock_item
read_item ou write_item
unlock_item
Bloqueios Compartilhados/Exclusivos: Read/Write.
n 
n 
n 
read_lock (share-locked)
write_lock (exclusive-locked)
unlock
Prof.: Ilka Kawashita
[email protected]
Granularidade de Itens de Dados
n 
Todas as técnicas de controle de concorrência
consideram que o banco de dados é formado a
partir de uma série de itens de dados com
nomes. Um item de dados pode ser escolhido
como sendo:
q 
q 
q 
q 
q 
Um valor de um campo de um registro do banco de
dados.
Um registro do banco de dados.
Um bloco de disco.
Um arquivo inteiro.
Todo o banco de dados.
Prof.: Ilka Kawashita
[email protected]
Técnicas de Controle de Concorrência
n 
Protocolos de Serialização:
q 
q 
q 
Técnica de Bloqueio.
Ordenamento de Registros de Timestamp (data/
hora/minuto/segundo).
Validação (otimistas).
Prof.: Ilka Kawashita
[email protected]
Bloqueio em Duas Fases (2PL)
Diz-se que uma transação segue o protocolo de bloqueio em duas fases se
todas as operações de bloqueio (read_lock ou write_lock) precedem a
primeira operação de desbloqueio na transação. Essa transação pode
ser dividida em duas fases: uma fase de expansão ou crescimento,
durante a qual podem-se obter novos bloqueios em itens mas nenhum
pode ser liberado; e uma fase de encolhimento ou retração (segunda
fase), durante a qual bloqueios existentes podem ser liberados, mas
nenhum bloqueio pode ser obtido.
T1
_____________
read_lock(Y);
read_item(Y);
write_lock(X);
unlock(Y);
read_item(X);
X:=X+Y;
write_item(X);
unlock(X);
Prof.: Ilka Kawashita
[email protected]
Bloqueio em Duas Fases (2PL)
n 
n 
2PL básico:
2PL conservador:
q 
q 
q 
q 
n 
2PL estrito:
q 
q 
n 
requer que uma transação bloqueie todos os itens que acessa antes que a transação
inicie sua execução;
se qualquer um dos itens não puder ser bloqueado, a transação não bloqueia item
algum;
é livre de deadlock;
é difícil de se utilizar na prática.
uma transação T não libera qualquer um de seus bloqueios exclusivos (de gravação) até
que conclua (commit) ou seja abortada;
nenhuma outra transação pode ler ou gravar um item que esteja gravado por T até que T
esteja concluída (commit);
2PL rigoroso:
q 
q 
uma transação T não libera qualquer um de seus bloqueios exclusivos ou compartilhados
(de gravação ou leitura) até que conclua (commit) ou seja abortada;
nenhuma outra transação pode ler ou gravar um item que esteja gravado por T até que T
esteja concluída (commit).
Prof.: Ilka Kawashita
[email protected]
Ordenamento de Registros de Timestamp
n 
n 
n 
n 
Não utilizam bloqueios (sem deadlock).
As transações são ordenadas com base em
seus registros de timestamp.
Um escalonamento no qual as transações
participam é então serializável e o
escalonamento serial equivalente tem as
transações na ordem de seus valores de
timestamp.
Pode causar rollback em cascata.
Prof.: Ilka Kawashita
[email protected]
Validação ou Certificação (Otimistas)
n 
n 
n 
n 
n 
Nenhuma verificação é realizada enquanto a transação está
sendo executada.
As atualizações na transação não são aplicadas diretamente
aos itens de dados até que a transação atinja seu final.
Durante a execução da transação, todas as atualizações são
aplicadas a cópias locais dos itens de dados que são mantidos
para a transação.
Ao final da execução da transação, a fase de validação verifica
se qualquer uma das atualizações da transação viola a
serialização.
Se a serialização não for violada, a transação é concluída;
caso contrário, a transação é abortada e posteriormente
reiniciada.
Prof.: Ilka Kawashita
[email protected]
Banco de Dados Distribuídos
Prof.: Ilka Kawashita
[email protected]
Banco de Dados Distribuído
n 
n 
Tecnologias associadas:
q  Banco de Dados;
q  Redes de computadores.
Sistema de computação distribuído:
q  C o n s i s t e
em uma série de elementos de
processamento, não necessariamente homogêneos,
que são interligados por um sistema de rede de
computadores e que cooperam na realização de
determinadas tarefas específicas.
q  Repartem um problema grande e não gerenciável em
partes menores e resolvem o mesmo de maneira
eficiente e coordenada.
Prof.: Ilka Kawashita
[email protected]
Banco de Dados Distribuído
n 
Banco de Dados Distribuído (BDD):
q 
n 
Uma coleção de vários bancos de dados logicamente
inter-relacionados, distribuídos ao longo de um
sistema de rede de computadores.
Sistema de Gerência de Banco de Dados
Distribuídos (SGBDD):
q 
Um sistema de software que gerencia um banco de
dados distribuído ao mesmo tempo tornando a
distribuição transparente para o usuário.
Prof.: Ilka Kawashita
[email protected]
Vantagens de BDD
q 
Gerência de dados distribuídos com diferentes níveis
de transparência:
n 
n 
n 
q 
q 
q 
Transparência de distribuição ou de rede: libera o usuário
dos detalhes sobre a rede.
Transparência de replicação: cópias dos dados podem ser
armazenadas em vários sites para aprimorar a
disponibilidade, desempenho e confiabilidade.
Transparência de fragmentação: o usuário não toma
conhecimento da existência dos fragmentos horizontais
(linhas) ou verticais (colunas).
Confiabilidade e disponibilidade crescentes.
Melhor desempenho.
Expansão mais fácil.
Prof.: Ilka Kawashita
[email protected]
Funções Adicionais de um SGBDD
q 
q 
q 
q 
q 
n 
Controlar dados: fragmentação, replicação, etc.
Gerenciamento de transações distribuídas.
Recuperação de BDD.
Segurança.
Gerenciamento do catálogo distribuído.
Projeto de Banco de Dados Distribuídos:
q 
q 
q 
Fragmentação;
Replicação;
Alocação.
Prof.: Ilka Kawashita
[email protected]
Fragmentação
n 
Consiste na técnica de dividir o banco de dados
em unidades lógicas chamadas fragmentos, que
podem ser armazenados em sites diferentes.
n 
Fragmentação de Banco de Dados:
q 
q 
q 
Horizontal: um fragmento horizontal de uma relação é
um subconjunto das tuplas dessa relação.
Vertical: um fragmento vertical de uma relação
mantém somente certos atributos da relação.
Mista ou Híbrida: combinação dos dois tipos
anteriores.
Prof.: Ilka Kawashita
[email protected]
Banco de Dados Distribuído
n 
Esquema de fragmentação:
q 
n 
Consiste da definição de um conjunto de fragmentos
que inclui todos os atributos e tuplas do banco de
dados e satisfaz a condição de que todo o banco de
dados pode ser reconstruído a partir dos fragmentos.
Esquema de alocação:
q 
Descreve a alocação dos fragmentos aos sites do
SBDD; portanto, é um mapeamento que especifica
para cada fragmento o site no qual será armazenado.
Prof.: Ilka Kawashita
[email protected]
Replicação
n 
Consiste em gerar cópias controladas das
relações ou dos fragmentos.
n 
Replicação de Banco de Dados:
q 
q 
q 
Melhora a disponibilidade.
Melhora desempenho.
Desacelera operações de atualização.
Prof.: Ilka Kawashita
[email protected]
Tipos de SBDD
q 
q 
n 
Homogêneo ou Heterogêneo.
Com ou sem autonomia local.
SGBDD Federado:
q 
q 
q 
Composto por vários SGBDs independentes e
autônomos com seus usuários e transações.
Não possui um esquema global.
O esquema global é montado interativamente por
parte da aplicação que o acessa.
Prof.: Ilka Kawashita
[email protected]
Controle de Concorrência e
Recuperação
Várias cópias dos itens de dados;
q  Falhas de sites individuais;
q  Falhas nos links de comunicação;
q  Commit distribuído (protocolo de commit de duas
fases);
q  Deadlock distribuído.
q 
Prof.: Ilka Kawashita
[email protected]
Banco de Dados Distribuído
n 
Controle de concorrência distribuída baseado
em cópia distinta de um item de dado:
q 
q 
q 
n 
Técnica do site primário (principal);
Site primário (principal) com site de backup;
Técnica da cópia primária ( principal).
Controle de concorrência distribuída baseado
em Votação.
Prof.: Ilka Kawashita
[email protected]
Técnica do site primário (principal)
q 
q 
q 
q 
q 
q 
q 
q 
Todas as cópias distintas dos itens de dados são
mantidas no mesmo site;
Um único site é designado coordenador;
Todos os bloqueios são mantidos neste site;
Todas as solicitações de bloqueio e desbloqueio são
enviadas para este site;
É uma extensão do bloqueio centralizado;
Causa sobrecarga do site;
Falha do site primário paralisa o sistema;
Uma vez que uma transação obtenha um bloqueio
em um item de dado no site primário, ela pode
acessar qualquer cópia desse item de dado.
Prof.: Ilka Kawashita
[email protected]
Site primário (principal) com site de
backup
q 
q 
q 
q 
Caso anterior com um site de backup;
As informações de bloqueio são mantidas nos dois
sites (primário e backup);
O site de backup assume no caso de falha do site
primário e um novo site de backup é escolhido;
Desacelera o processo de aquisição de bloqueio.
Prof.: Ilka Kawashita
[email protected]
Técnica da Cópia Primária (principal)
q 
q 
q 
Distribui a carga da coordenação de bloqueio entre
vários sites, fazendo com que cópias distintas de
diferentes itens de dados sejam armazenados em
sites diferentes.
Falhas em um site afetam quaisquer transações que
estejam acessando bloqueios em itens cujas cópias
primárias residam naquele site, mas outras
transações não são afetadas;
Esta método também pode utilizar sites de backup
para melhorar a disponibilidade.
Prof.: Ilka Kawashita
[email protected]
Controle de Concorrência Distribuída
baseado em Votação
q 
q 
q 
q 
q 
q 
Não existe uma cópia distinta como nos casos anteriores;
Uma solicitação de bloqueio é enviada para todos os sites
que possuem uma cópia do item de dado;
Cada cópia mantém seu próprio bloqueio e pode
conceder ou negar o pedido;
Se uma transação tem o bloqueio concedido pela maioria
das cópias, ela segura o bloqueio e informa a todas as
cópias que teve o bloqueio concedido;
Caso contrário ela informa o cancelamento da requisição;
É um método verdadeiramente distribuído.
Prof.: Ilka Kawashita
[email protected]
Recuperação Distribuída
n 
Em alguns casos, é bastante difícil determinar
se um site está fora do ar, sem trocar inúmeras
mensagens com outros sites. Por exemplo,
suponha que um site X envie a mensagem para
o site Y e não recebe uma resposta:
q 
q 
q 
A mensagem não foi enviada a Y devido a uma falha
de comunicação;
O site Y está fora do ar e não pode responder;
O site Y está no ar e enviou uma resposta, mas a
resposta não foi entregue.
Prof.: Ilka Kawashita
[email protected]
Commit em Duas Fases (2PC)
n 
Um mecanismo de commit em duas fases garante que
todos os servidores de banco de dados que participam de
uma transação distribuída tenham o commit ou rollback da
transação.
Prof.: Ilka Kawashita
[email protected]
Commit em Duas Fases (2PC)
n 
n 
n 
Algoritmo que garante a consistência da terminação da transação:
Atomic Commitment Protocol (ACP).
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.
Prof.: Ilka Kawashita
[email protected]
Commit em Duas Fases (2PC)
Prof.: Ilka Kawashita
[email protected]
Commit em Três Fases (3PC)
n 
n 
n 
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.
Prof.: Ilka Kawashita
[email protected]
Commit em Três Fases (3PC)
Prof.: Ilka Kawashita
[email protected]
Download