Вы находитесь на странице: 1из 11

Web Aula 2 - Bancos de Dados II

Web Aula 1

Ttulo: Recuperao e atomicidade de Transaes 1

Recuperao e Atomicidade de transaes


Conforme j estamos estudando, um banco de dados controla todas as aes feitas
em seus dados como uma transao de banco de dados. Acontece que estas
transaes podem ter problemas em seu processamento e como que o SGBD vai
garantir que as transaes j realizadas no sejam perdidas em caso de problemas.
Explicar o que acontece e como sair desta situao o objetivo desta web-aula.
Um sistema de computao, uma soluo baseada em sistemas aplicativos,
sistemas operacionais, sistemas gerenciador de banco de dados e por computadores
que so dispositivos eltricos e mecnicos, ou simplesmente eletro-mecnico. E como
qualquer outro dispositivo com estas caractersticas est sujeito a falhas.
As causas destas falhas podem ser:

Energia eltrica;

Hardware;

Software;

Peopleware;

Sabotagem;

E sempre que acontece uma situao destas, dados podem ser perdidos e uma das
principais funes de um banco de dados garantir a recuperao causada por uma
falha e restaurar a consistncia e integridade do banco de dados.
Como sabemos, uma transao pode ser constituda por uma ou vrias operaes
lgicas, podendo envolver uma ou mais tabelas e tambm um ou mais registros.
Atomicidade
A transao a menor unidade ou operao fsica em um banco de dados, podendo
ter todas as suas operaes concludas ou desfeitas, nunca apenas parte dela
completada, isto garante o tudo ou nada, tambm conhecido como atomicidade de
transao.
Ento o nome atomicidade remete ao conceito de algo indivisvel.
Podemos ter vrias transaes ocorrendo simultaneamente no mesmo banco de
dados, por isso ele suporta muitos acessos.
Classificao de falhas
As falhas podem ser classificadas em duas modalidades:

Falhas com perdas de informao.

Falhas sem perda de informao.

Para que o sistema possa propor algoritmos que assegurem a consistncia,


integridade e atomicidade aps cada falha, precisaram primeiro identificar os tipos de
falhas possveis e dividir o procedimento de recuperao em duas partes.
Aes a serem tomadas durante o processamento normal da transao com o
objetivo de assegurar que tenhamos informaes suficientes para a recuperao em
caso de falha.
Aes a serem tomadas aps a falha para assegurar a consistncia do banco de dados
e a atomicidade da transao.
Tipos de armazenamentos
Podemos classificar os diversos tipos de armazenamento pela sua velocidade de
acesso, capacidade de armazenamento e resistncia a falhas.
Armazenamento voltil so a nossa memria principal e a memria cach, so locais
onde os dados no sobrevive a uma falha, o seu acesso extremamente rpido e
direto a qualquer item de dado. Proporcionalmente ao tamanho do banco de dados,
so geralmente muito pequenos e comportam pequenas partes ou pores do banco
de dados na memria principal.
Armazenamento no voltil so os nossos discos e fitas magnticas, so locais onde
os dados podem ou no sobreviver a uma falha, o acesso tem uma variao no tempo
muito grande, pois as diferenas de velocidades entre um disco e uma fita magntica
so extremamente grandes.
O disco utilizado para armazenamento on-line e a fita magntica para
armazenamento de backup (histricos dos dados ou reserva).
A variao no tempo de acesso porque os meios no volteis so eletro-mecnico e
com diferentes tecnologias de funcionamento e acesso.
Assim como os meios volteis so muitas vezes mas rpido que os meios no
volteis, os meios no volteis possuem uma capacidade de armazenamento muitas
vezes maior que os meios volteis.
Os meios volteis de armazenamento esto na casa das dezenas de GigaBytes e os
meios de armazenamento no volteis comeam na casa das centenas de GigaBytes,
muito comum as dezenas de TeraBytes e nas grandes empresas e bancos, j entrando
na casa das dezenas de PetaBytes.
Armazenamento estvel um aperfeioamento do armazenamento no voltil, a
utilizao das tecnologias mais atuais e modernas nos quesitos de rapidez e
segurana da informao.
Podemos considerar os discos que utilizam a tecnologia RAID, cd-rom / dvd-rom,
discos ticos, discos a laser e mais recentemente os discos slidos SSD (solid state
disk).
Existem grandes equipamentos de armazenamento de dados, denominados Storages
que trabalham em arquiteturas SAN (storage rea network), NAS (network-attached
storage) e DAS (direct-attached storage).
Tipos de falhas
Podemos classificar em 4 tipos de falhas
Erros lgicos a transao no pode mais continuar com sua execuo normal
devido a alguma condio interna, como uma entrada com erro, dado no
encontrado, overflow ou limite de reservas excedido. Para esta situao,

provavelmente est faltando o tratamento adequado das excees dentro do


programa, ou seja, necessrio rever a programao.
Erros do sistema o sistema entrou num estado indesejvel (ex. travamento mtuo
deadlock) e, como resultado, a transao no pode continuar sua execuo normal
no momento. A transao, no entanto pode ser reexecutada mais tarde sem nenhum
problema. Nestes casos, analise o problema cuidadosamente e verifique as
caractersticas do seu SGBD, pode ser necessria uma nova configurao ou
parametrizao no seu banco de dados ou em casos extremos at mesmo a troca do
seu SGBD.
Queda do sistema as disfunes do hardware causam a perda do contedo do
armazenamento voltil, mas o contedo do armazenamento no voltil no afetado,
permanecendo intacto. tpico de problemas com o sistema operacional, geralmente
necessrio uma correo no sistema operacional atravs de patches de correo ou
fixes, os prprios fornecedores dos sistemas operacionais distribuem estas
atualizaes para os seus clientes.
Falha no disco um bloco do disco perde seu contedo como resultado de uma
falha durante uma transferncia de dados ou de uma quebra da cabea de
leitura/gravao. um problema de hardware, vai necessitar da interveno de um
tcnico que cuide do seu servidor e s depois ento buscar o seu ltimo backup e
iniciar os procedimentos de recuperao.
Hierarquia de armazenamento
As operaes de entrada e sada so feitas em unidades de blocos.
Os blocos residentes no disco so chamados de blocos fsicos, enquanto os blocos
residentes temporariamente na memria principal so chamados blocos de buffers.
Os movimentos de blocos entre o disco e a memria principal so iniciados pelas duas
operaes seguintes:

Input (X) transfere para a memria o bloco fsico no qual reside um item de
dados principal X.

Output (X) transfere para o disco o bloco de buffer no qual reside X e


substitui o bloco fsico apropriado.

As transaes interagem com o sistema de banco de dados transferindo dados de


variveis de programa para o banco de dados e, do banco de dados para as variveis
do programa. Esta transferncia de dados realizada usando as duas operaes
seguintes:

Read (X, Xi) atribui o valor de X para a varivel local Xi.


- Se o bloco no qual X reside no est na memria principal, ento emite um
input (X).
- Atribui para Xi o valor de X no bloco de buffer.

Write (X, Xi) atribui o valor da varivel local Xi para o item de dados X no
bloco de buffer.
- Se o bloco no qual X reside no est na memria principal, ento emite um
input (X).
- Atribui o valor de Xi para X no bloco de buffer para X.

A operao output (X) no precisa tomar efeito imediatamente depois que write (X,
Xi), pois outros registros podem estar atualizando tambm. Mas se o sistema cair,

depois da operao write (X, Xi) e antes de output (X), o novo valor de X nunca ser
escrito no disco e portanto estar perdido.
Modelo de transao
Se estiver consistente quando uma transao iniciou, o banco de dados precisa ser
consistente quando a transao terminar com sucesso.
Entretanto, durante a execuo de uma transao, pode ser necessrio
temporariamente permitir esta inconsistncia. Essa inconsistncia temporria ainda
que necessria, pode levar a dificuldades se ocorrer uma falha.
Vamos tomar como exemplo a seguinte transao T.
T : read (A, a1) a1 := a1 50; write (A, a1)
read (B, b1) b1 := b1 + 50; write (B, b1)
Consistncia e Atomicidade
Cada transao precisa ser um programa que preserve a consistncia do banco de
dados.
Todas as operaes associadas a uma transao precisam ser executadas at o final,
ou nenhuma deve ser executada.
Uma transao nem sempre pode completar sua execuo com sucesso, quando isto
acontece dizemos que ela foi abortada.
A fim de garantir a atomicidade, uma transao abortada no pode ter efeito no
estado do banco de dados.
Assim o banco de dados precisa ser restaurado ao estado anterior ao incio da
transao que foi abortada. Este procedimento de desfazer o que foi iniciado recebe o
nome de rollback.
Uma transao completada com sucesso chamada de compromissada ou comitada
(commited).
Estado de transao
Uma transao possui o seguinte modelo abstrato:
Ativo o estado inicial.
Parcialmente compromissado depois que a ltima instruo foi executada.
Falhado depois da descoberta de que uma execuo normal no pode mais
prosseguir.
Abortado depois que a transao foi desfeita e o banco de dados foi restaurado ao
seu estado anterior ao incio da transao.
Compromissado depois de a transao ser completada com sucesso.

Uma transao entra no estado falhado depois de ser determinado que a transao
no pode mais prosseguir com sua execuo normal, ento ela precisa ser desfeita, a
transao entra no estado abortado, nesse ponto o sistema tem duas opes:

Reiniciar a transao uma transao reiniciada considerada uma nova


transao. Apenas quando houve um erro de hardware ou software operacional
(no de lgica).

Matar a transao ocorre quando o erro foi de lgica interna, necessitando


rever a programao do programa.

Considerando uma transao simples T, com as contas A e B com valor inicial de R$


1.000,00 e R$ 2.000,00 respectivamente, retirar R$ 50,00 da conta A e creditar R$
50,00 na conta B, tudo dentro de uma nica transao.
Supondo que o problema ocorra depois do output (A) e antes do output (B), o que
pode acontecer?

Reexecutar T isso resultar na conta A com R$ 900,00 em vez de R$ 950,00.

No Reexecutar T- isso resultar na conta B com 2.000,00 .

Ambas as situaes o banco est inconsistente.


Recuperao baseada em Log
A fim de garantir a atomicidade, o sistema de banco de dados, armazena um espelho
da transao que ser realizada, descrevendo as modificaes envolvidas.
Este modelo chamado de log do banco de dados.
Temos duas tcnicas de gravar os logs.
Modificao adiada do banco
A tcnica de adiar a modificao assegura a atomicidade da transao gravando todas
as modificaes do banco de dados no log, mas adiando a execuo de todas as
operaes write de uma transao ate que a transao seja parcialmente
compromissada.
Quando uma transao torna-se parcialmente compromissada, a informao no log
associada transao usada na execuo de gravaes adiadas. Se houver algum

problema antes que a transao seja executada, ou abortada, ento a informao no


log ignorada.
Modificao imediata do banco
A tcnica da atualizao imediata permite a gravao de modificaes no banco de
dados enquanto a transao est ainda no estado ativo, so chamadas modificaes
descompromissadas (uncommitted).
Se houver algum problema com a transao, a operao undo deve desfazer as
modificaes baseadas nas informaes contidas no arquivo de log.
Para esta tcnica funcionar, antes da operao output (X) ser executada, o log deve
estar gravado.
Quando a transao torna-se parcialmente compromissada, o registro de commit
escrito no log.
Espero que tenham gostado desta web-aula, aguardo vocs no nosso blog.

Web Aula 2
Ttulo: Controle de Concorrncia
Controle de concorrncia
Um SGBD trabalha individualmente com uma transao muito bem, mas o grande
desafio para a sua consagrao no mercado sem dvida a sua capacidade de tratar
diversas transaes simultaneamente.
Hoje em dia muito comum e fcil o acesso a computadores com vrios
processadores ou ento com processadores com vrios ncleos, a esta caracterstica
chamamos de multiprocessador.
Existe tambm o multiprocessamento, que a capacidade do sistema operacional
executar mais de um programa ao mesmo tempo.
Isto pode ocorrer com um computador com um nico processador, neste caso o
processador acaba realizando o processamento em paralelo de diversos programas ao
simultaneamente.
Se colocarmos mais processadores, ele vai distribuir as tarefas passando rotinas de
processamento para cada processador, de modo independente.
E se apenas um programa estiver sendo executado, apenas um processador
utilizado, os demais ficam ociosos.
Mas existem sistemas operacionais mais inteligentes, que aproveitam a capacidade de
multiprocessadores dos computadores e realizam uma melhor distribuio de carga
de processamento.
Se apenas um programa estiver executando no servidor, o sistema operacional divide
as tarefas deste programa entre os diversos processadores do servidor, otimizando
assim a carga sobre um nico processador e distribuindo entre os vrios
processadores, acelerando em muito a concluso do processo.
Este tipo de sistema operacional conhecido como multiprocessamento simtrico ou
SMP, onde realizado o balanceamento de carga.
O SGBD trabalha em conjunto com o sistema operacional para retirar a melhor
performance possvel na execuo de transaes concorrentes, garantindo inclusive a
efetiva consistncia de todas as transaes envolvidas.

Um bom SGBD deve suportar e transacionar desde poucas transaes ao mesmo


tempo at dezenas e centenas de transaes simultaneamente.
A sua capacidade de resolver os problemas que possam ocorrer durante as transaes
e a integridade que o mesmo garante, fazem com que o SGBD seja confivel.
Escalonamento (schedules)
Quando diversas transaes so executadas concorrentemente, a consistncia do
banco de dados pode ser destruda apesar de cada transao individual estar correta.
Podemos afirmar que o escalonamento representa a ordem cronolgica da execuo
de cada instruo no banco de dados.
Uma transao de um programa deve sair de um estado consistente e levar o banco
de dados para outro estado consistente tambm.
Surge ento o conceito de seriabilidade, ou seja, o escalonamento das execues.
Escalonamento serial
Um escalonamento serial consiste de uma seqncia de instrues de vrias
transaes na qual as instrues pertencentes a uma nica transao aparecem
juntas naquele escalonamento.
Vamos exemplificar com duas transaes T0 e T1.

Primeira possibilidade

Segunda possibilidade

Terceira possibilidade

Podemos concluir que apesar dos resultados finais de A e B serem diferentes


dependendo do escalonamento escolhido, existe uma consistncia preservada no
final.
Escalonamento no serial
Um escalonamento no serial consiste de uma seqncia de instrues de vrias
transaes intercaladas entre si, o que pode provocar temporariamente um estado
inconsistente.
Veja o exemplo:

Podemos concluir que o escalonamento no serial pode comprometer a consistncia


do banco de dados e causar transtornos enormes.
Por uma questo bvia o escalonamento no serial no permitido nos SGBDs
comerciais mais famosos.
Ento chegamos a uma tabela de comparao do escalonamento de conflito
serializvel.

Protocolo baseado em bloqueios


Um modo de assegurar a seriabilidade requerer que o acesso aos itens de dados
seja feito de uma maneira mutuamente exclusiva, isto , enquanto uma transao faz
o acesso a um item de dado, nenhuma outra transao pode modificar aquele item.
O mtodo mais fcil de garantir isto, fazer com que uma transao ao acessar um
dado, mantenha um bloqueio neste dado at o trmino da sua transao.
Formas de bloqueio
Bloqueio partilhado se uma transao T obteve um bloqueio (lock) no modo
partilhado (representado por P) no item de dado A, ento T pode ler este item A mas
no pode gravar A.
Bloqueio exclusivo se uma transao T obteve um bloqueio (lock) no modo
exclusivo (representado por X) no item de dado A, ento T pode ler este item A e
somente T poder gravar A.
Bloqueio de duas fases nesta forma de bloqueio, o protocolo divide-se em:

Fase de crescimento uma transao pode obter bloqueios, mas no pode


liberar nenhum dos bloqueios feitos.

Fase de encolhimento uma transao libera um dos bloqueios, mas no pode


obter nenhum outro bloqueio at concluir a transao atual.

Inicialmente, uma transao est na fase de crescimento, obtendo quanto bloqueios


forem necessrios para a sua transao. Uma vez que libere um bloqueio, a transao
entrar na fase de encolhimento e no pode mais bloquear nenhum outro dado, at
que a transao atual termine. S ento ela poder comear outra transao com
novos bloqueios.
Bloqueio baseado em grafos nesta tcnica, o modelo mais simples requer que
tenhamos o conhecimento anterior da ordem na qual os itens do banco de dados
sero utilizados, a nica instruo permitida o lock-x (modo exclusivo).
Os bloqueios so realizados utilizando a rvore de acesso aos dados. Muitos dados
desnecessrios so bloqueados e pode comprometer outras transaes.

um protocolo livre de deadlock porm bloqueia muitos dados desnecessrios para a


transao.
Bloqueio baseado em marcador de tempo o mtodo mais comum para fazer isso
utilizar o esquema de ordenao por marcadores de tempo, criando duas variveis wtimestamp(A) e r-timestamp (A).
Estas variveis contm o marcador de tempo lgico do sistema para identificar nas
transaes quem chegou primeiro e quem chegou depois no dado.
Os marcadores de tempo so atualizados toda vez que uma instruo read ou write
for executada.
Espero que tenham gostado desta web-aula, aguardo vocs no nosso blog.

Вам также может понравиться