Você está na página 1de 82

Instalao e Configurao de Banco de Dados - II

Prof. Antonio Carlos


Faculdade Sumar - 2013

Apresentao

Ementa
Plano de Aula
Avaliao
Aula introdutria

Ementa

Entender rotinas e mecanismos de otimizao, proteo


e recuperao de falhas em um SGBD.

Competncias e Habilidades

Projetos fsico de um Banco de Dados


ndices e Estruturas de Arquivos
lgebra e Clculo
Conceitos de Transaes e Controle de Concorrncia
Mecanismos de Proteo,Recuperao de Falhas e
Segurana

Plano de Aula

Avaliao

Duas avaliaes da instituio valendo +-75% da nota

Uma ou Duas atividades valendo +-15% da nota

Frequencia podendo valer at 10% da nota

As Datas das atividades e provas dependem do


calendario academico, e o plano de aula ser
reajustado.

Histrico

Sistemas Computacionais Comerciais


Arquivos
Analise de Resultados

Consultas e Relatrios

Independncia

Banco de Dados Hierrquico/Rede

Histrico

Sistemas Computacionais Comerciais


Arquivos
Analise de Resultados

Consultas e Relatrios

Independncia

Banco de Dados Hierrquico/Rede

Definir - Grupos de Trabalho

Pesquisa e Explanao

Projetando

Entender o dominio do problema

Projetando

Entender o dominio do problema


Sistema Convencional

Sistema de Apoio a Deciso (BI)

Projetando

Entender o dominio do problema


Sistema Convencional

Faturamento

Vendas

RH

Outros

Sistema de Apoio a Deciso (BI)

Projetando

Entender o dominio do problema


Sistema Convencional

Faturamento

Vendas

RH

Outros

Normalizao

Sistema de Apoio a Deciso (BI)

Projetando

Entender o dominio do problema


Sistema Convencional

Faturamento

Vendas

RH

Outros

Normalizao
(No Redundncia)
(Confiabilidade)

Sistema de Apoio a Deciso (BI)

Projetando

Entender o dominio do problema


Sistema Convencional

Sistema de Apoio a Deciso (BI)

Procurar Comportamentos/Repeties/Sazonalidade

Projetando

Entender o dominio do problema


Sistema Convencional

Sistema de Apoio a Deciso (BI)

Procurar Comportamentos/Repeties/Sazonalidade

Comprar melhor

Suficiente
Necessrio
Quando

Projetando

Definir a Atividade Fim/Negocio


Descrever

Entidades

Modelagem Lgica

Modelar as Relaes

Modelagem Fsica

Dicionrio de Dados

Projetando

Definir a Atividade Fim/Negocio


Descrever

Entidades

Modelagem Lgica

Modelar as Relaes

Transposio de Chave
Entidade Associativa
Cardinalidade
Modelagem Fsica

Dicionrio de Dados

Projetando

Segurana

Grupos de Atividades/Permisses

Usurios associados a Grupos de Permisses

Audits

Fixando

Em Grupo
Fazer um projeto lgico de um sgbd para um sistema
convencional

Fazer o projeto fsico

Entidades 5 a 7
Definindo os atributos. Relacionamentos

Fazer o Dicionrio de Dados.

Segurana

Podemos facilmente perceber que um banco


seguro,confivel tem que garantir basicamente o
seu contedo.

Segurana

Acesso
Usurios terem o direito de acessar determinado
objeto com determinado propsito

Tabelas/Relaes,etc e incluso/criao,etc

O Banco pertence ao Administrador e ele outorga as


permisses especficas, inclusive de administrador

O usurio no pode nada alm do que o outorgado pelo


administrador.

Segurana

Acesso
As autorizaes so outorgadas ou removidas pelos
comandos (DCL):

GRANT

REVOKE

Segurana

Dados
Restrio de Integridade

Respeitar o domnio

Valores
Chaves/primrias e estrangeiras
Uso atravs de constraint/check (DDL)
Transao/ACID

Begin Transaction/Rollback/Commit(DML)

Concorrncia (Lock)

SEGURANA

Segurana Fsica
RAID

BACKUP

NUVEM

SEGURANA

Defina os papis para administrao do seu banco com


os privilgios e depois indique que papis os usurios
possuem

Indexao e Estruturas de Arquivos

ndice Primrio
um arquivo ordenado, de tamanho fixo onde existem
dois campos no registro armazenado, o primeiro
do mesmo tipo da chave primaria da tabela
associada e com o mesmo contedo, e o segundo
um ponteiro para o endereo fsico do bloco do
disco, existe um registro para cada registro
armazenado na tabela.

Tambm chamado de ndice denso, porque possui


uma entrada no ndice para cada registro
armazenado na tabela

Indexao e Estruturas de Arquivos

ndice de agrupamento (Clustering)


um ndice ordenado tal como explicado acima, mas o
campo para classificao no a chave primria,
portanto pode possuir valores idnticos, este campo
chamado de agrupamento, o registro do ndice
tambm dois campos como o ndice primrio.

chamado de ndice esparso, pois no h relao


direta entre os registros de dados e o ndice.

Indexao e Estruturas de Arquivos

ndice Secundrio
Um ndice chamado secundrio, quando j existir um
ndice Primrio e o campo utilizado para a criao
do ndice for uma chave candidata, ou um campo
no chave com valores duplicados.

Otimizao

Depois do Projeto das tabelas, determine os tipos de


consultas a serem executadas, e se possvel sua
frequncia.
O ndice no banco de dados usado em duas
situaes:

Garantir a unicidade dos dados, normalmente


associado a PK.
Agilizar as consultas.

Otimizao

Estrategias:

A(s) coluna(s) da chave primaria deve ser sempre


indexada, porque frequentemente participam
como chave de pesquisa, critrio ou operaes
de ligao

Tabelas com menos de 100 linhas e com apenas


algumas colunas no vantagem o uso do
ndice. Geralmente as tabelas "pequenas"
cabem integralmente no cache do banco de
dados, considerando que o bloco possui de 512
a 2048 bytes.

Otimizao

Estrategias:

ndices devem ser construdos para agilizar as


consultas executadas com frequncia. Ex.: se
algum precisa localizar todos os pedidos de
determinado produto, ento a tabela de item de
produto deve possuir um ndice para a coluna
que possui o cd. produto

ndices devem ser criados apenas com as colunas


usadas como identificadores, isto somatrios,
saldos, no devem ser usados, os identificadores
tendem a permanecer com o mesmo contedo.

Otimizao

Estrategias:

ndices devem ser criados usando campos do tipo


simples, de preferencia numricos, os do tipo
ponto flutuante no devem ser utilizados porque
at a operao de comparao e custosa, os
ndices com campos numricos tendem a ocupar
menos espao e simplificam as operaes de
comparao.

Otimizao

O uso de ndices deve ser usado com sabedoria, porque


quanto mais ndices existirem maior ser o tempo
necessrio para a atualizao das informaes e
reindexao dos ndices, alm do espao extra
utilizado pelos mesmos.
Existem aplicaes de tempo real que so sensveis a
tempo de resposta, neste caso a aplicao deve
permanecer com a menor quantidade de ndices (PK)
e os mesmos devem ser "criados" quando algum outro
processo necessitar e "remov-los" em seguida

ndices

Tipos de Estruturas de ndices mais Comuns.


ndices em arvores B

De longe o tipo mais utilizado, indicado quando os


valores-chave possurem valores aleatrios e
com bastante variedade, seu desempenho no
bom quando os valores que esto sendo
indexados j esto em ordem classificada.

ndices de Hashing

Menos comum e seu desempenho melhor com


tabelas com poucas mudanas e normalmente
com dados exclusivos.

ndices

rvore Binria

Se os valores 2, 6 e 9 em diante entrarem, geram


um novo balanceamento da rvore

ndices

Hash
Funo de disperso ou espalhamento responsvel
pela gerao de ndice a partir de uma chave.caso
seja mal escolhida toda a tabela ter um
desempenho ruim.

Ideal que para cada entrada (A) um ndice nico seja


gerado.sendo o ideal que dado duas entradas (A) e
(B) tenham como resposta ndices distintos.

Dadas duas entradas (A) e (B) distintas, gerando o


mesmo ndice, isto chamado de coliso.

ndices

Hash
Coliso

Em aplicaes de criptografia, a coliso intolervel


portanto deve-se recorrer a outra funo de
espalhamento

Em Classificao/Ordenamento o problema
resolvido com uso de outras estruturas, como lista
encadeada, ou rvores balanceadas

ndices

Hash
A tabela de disperso uma estrutura de dados do tipo
dicionrio, que no permite armazenar elementos
repetidos, recuperar elementos sequencialmente
(ordenao), nem recuperar o elemento antecessor
e sucessor. Para otimizar a funo de disperso
necessrio conhecer a natureza da chave a ser
utilizada. No pior caso, a ordem das operaes
pode ser O(N), caso em que todos os elementos
inseridos colidirem.

ndices

Funes Hash conhecidas:


MD4

MD5

SHA-1 / SHA-256 / SHA-384 / SHA-512

RIPEMD-160

lgebra Relacional

Definio: Conjunto de Operaes sobre relaes

Cada operao toma uma ou mais relaes como


operando e produz uma outra relao como resultado

lgebra Relacional

Operadores:

Conjunto: Unio, Interseco, Diferena e Produto


Cartesiano

Relacionais: Seleo, Projeo, Reunio e Diviso

lgebra Relacional

Operadores tradicionais sobre conjuntos

Exceo Produto Cartesiano

As relaes devem ter o mesmo grau

Os ensimos atributos das relaes devem ter o mesmo


domnio subjacente

lgebra Relacional

Unio

A unio de duas relaes A e B "A U B", uma relao


que inclui todas as tuplas de A e todas as tuplas de B

A e B devem ter o mesmo grau


Se existirem tuplas repetidas apenas uma permanece
Seja A o conjunto de tuplas de fornecem situados em Londres
Seja B o conjunto de tuplas que fornecem a pea P1
A U B o conjunto de todos os fornecedores localizados em Londres
e que fornecem a pea P1
(A U B) U C = A U (B U C)

lgebra Relacional

Produto Cartesiano

O Produto Cartesiano das relaes A e B, "A X B", uma relao que


inclui todas as tuplas possveis que se obtm concatenando uma
de A com uma de B

A=(a1, a2,....am) e B(b1,b2,....bm)


R = a1+b1,....a1+bm, a2+b1,....a2+bm...
Seja A o conjunto de todos os nmeros de fornecedores
Seja B o conjunto de todos os nmeros de peas

Ento A x B o conjunto de todos os pares possveis de


fornecedores/peas

lgebra Relacional

Produto Cartesiano
As operaes Unio, interseco e produto cartesiano so
associativas(pode-se omitir os parenteses) sem problema, a
diferena no associativa

lgebra Relacional

Operadores relacionais Especiais

Seleo ou Restrio

Produz um subconjunto "horizontal" de uma relao especfica


Se Expressa como uma expresso booleana

lgebra Relacional

Operadores relacionais Especiais

Projeo

Produz um subconjunto "vertical" de uma relao dada


O subconjunto obtido ao selecionar os atributos especificados em
uma ordem dada da esquerda para direita eliminando as tuplas
duplicadas

lgebra Relacional

Operadores relacionais Especiais

Diviso

O Operador de diviso divide uma relao dividindo A de grau m+n


entre uma relao de grau n, e produz uma relao de grau m, tal
que ao concaten-las com as tuplas de B, produzem as tuplas
contidas em A.

lgebra Relacional

Operadores relacionais Especiais

Reunio/JOIN

O Resultado do JOIN de duas relaes A e B, uma relao que


inclui todas as tuplas que se obtm concatenando uma de A e
outra de B, tais que cumpram um atributo de domnio comum as
duas.

A Condio pode ser <,>,>-, <=, <>


Se a comparao de igualdade temos um "EQUIJOIN"
JOIN Natural uma EQUIJOIN com eliminao do atributo em
comum

lgebra Relacional

Operadores relacionais Especiais

Reunio/JOIN

O processo a seguir para JOIN Natural


Concatenar todas as tuplas de A e B (A x B)
selecionar entre as tuplas concatenadas as que tenham valores
iguais nas colunas consideradas
suprimir uma das colunas homnimas do resultado

lgebra Relacional

Interseco

A Interseco de duas relaes A e B " A ^ B", tem como resultado


uma relao de todas as tuplas de que per tecem a A e B

Seja A o conjunto de tuplas de fornecedores situados em Londres


Seja B o conjunto de tuplas que fornecem a Pea P1
A ^ B o conjunto de tuplas de fornecedores que se localizam em
Londres e que fornecem a pea P1
(A ^ B) ^ C = A ^ (B ^ C)

Reviso

Motivao Banco de Dados(convencional/Bi)


Segurana
Dados

Constraint
Valid
Pk/Fk
Tipos

Acesso/Permisses
Grant/Revoke
Papeis
Cpias de Segurana

Reviso

Algebra Relacional
Tamanho da Resposta

Ideal R <= Conjunto de Dados

Anomalia R >>>> Conjunto de Dados (Produto Cartesiano)

Concorrncia

No h milagres, a execuo mais segura, a serializada, mas


perde-se a concorrncia, como permitir a execuo concorrente com
a maior eficincia, ou seja com a menor quantidade de serializaes

Podemos citar trs tcnicas utilizadas no mecanismo de


concorrncia.
TIMESTAMP(Marcas de Tempo)
VERSES
LOCKING(BLOQUEIOS)

Bloqueio Simples

Consiste em marcar o dado, semforo, indicando que o


dado esta em uso, esta marca indica qual o tipo de acesso
foi executado, sendo um dos seguintes tipos:
Leitura(Compatilhado)

Todas as transaes e inclusive a possuidora do bloqueio, podem


somente ler o dado.

Escrita(Exclusivo)

Somente a transao possuidora do bloqueio pode ler ou escrever


o dado

Bloqueio Simples

Quando uma transao, deseja acessar um dados, ela


deve emitir um bloqueio para o tipo especifico, em
havendo sucesso, pode utiliz-lo imediatamente.
Caso haja um bloqueio e seja do tipo Leitura, e o desejo
da transao tambm o seja, poder tambm utilizar
imediatamente, caso o bloqueio seja o de escrita, dever
aguardar a liberao do bloqueio independente do desejo.
Para a boa execuo no banco, os bloqueios devem ser
removidos to logo no sejam mais necessrios

Bloqueio Simples

T1

T2

lock_e(x)
read(x)
lock_e(x)
aguarda
x=x+1

...

write(x)

...

unlock(x)

...
lock_e(x)
x=x+100
wrrite(x)
unlock(x)

Bloqueio Simples

Problema na liberao do bloqueio simples


T3

T4
sum=0
lock_C(x)
read(x)
unlock(x)
sum=sum+x
lock_c(y)

lock_e(x)
x=x-10
write(x)
unlock(x)
commit
read(y)
unlock(y)
sum=sum+y

Bloqueio Simples

Problema na liberao do bloqueio simples


T3

T4
sum=0

No exemplo ao lado
Caso T4,seja abortada
T3 efetiva com valores de X
que no existiram no Banco

lock_C(x)
read(x)
unlock(x)
sum=sum+x
lock_c(y)
lock_e(x)
x=x-10
write(x)
unlock(x)
commit
read(y)
unlock(y)
sum=sum+y

Bloqueio de Duas Fases

a serializao no tratamento do bloqueio

Primeira fase, aquisio dos bloqueios apenas (growing phase)


Segunda fase, liberao dos bloqueios(shrinking phase), quando o
primeiro bloqueio liberado a transao no pode mais adquirir
nenhum outro bloqueio

Este tipo de bloqueio garante execues serializveis e evita o


problema de cascating abort e libera os bloqueios apenas no commit
ou rollback

Bloqueio de Duas Fases

No Bsico, os bloqueio so liberados quando a transao


no os utiliza mais, isto pode acarretar o cascading
abort.
Quando o bloqueio liberado outras transaes podem e
vo utilizar os dados, mas se a primeira desfizer(rollback),
todas as outras vo ter de desfazer tambm, pois os seus
valores esto inconsistentes.

Bloqueio de Duas Fases

No Estrito, os bloqueio so liberados apenas no final da


transao em momento nico, o que j no ocasiona o
cascading abort.
A implementao estrita a mais utilizada em sgbds
comerciais

Bloqueio de Duas Fases

No Estrito, pode ocorrer ainda os deadlocks


Esta situao ocorre quando uma transao T2 esta
aguardando um dado 1 bloqueado por uma transao T1,
e esta esta aguardando um dado 2 que foi bloqueada pela
transao T2

Bloqueio de Duas Fases

O desempenho do banco Conservativo, evita que ocorra


o deadlock, pois solicita antecipadamente os dados, no
entanto passa a degradar o desempenho do banco.
Bloqueando dados que podem no ser utilizados, e
gerando um problema conhecido como postergao
definida, situao que uma transao fica aguardando um
evento que pode nunca ocorrer.

Preveno de DeadLock

Existem duas abordagens para a preveno:


Uma garante que nenhum ciclo de espera poder
ocorrer pela ordenao de solicitaes de
bloqueio, ou pela aquisio de todos os bloqueios
juntos.
A outra faz com que a transao seja refeita, em vez
de esperar por um bloqueio, sempre que a espera
possa potencialmente gerar um deadlock.

Preveno de DeadLock

Primeira

Cada transao obrigada a bloquear todos os itens


de dados antes da execuo, todos os dados so
bloqueados ou nenhum.

Problemas

Dificuldades de prever, antes da transao iniciar, quais os itens


devero ser bloqueados
A disponibilidade do dado fica bastante reduzida, uma vez que os
dados podem ficar bloqueados por um longo periodo.

Preveno de DeadLock

Segunda

Cada transao possui timeouts, e atravs dele a


transao fica aguardando (wait) ou deve ser
refeita (redo).

Se o tempo estourar(timeout) a transao abortada


independente de ter ocorrido ou no o deadlock..

Fixao

Explique concorrncia
Porque importante?
Quais so os tipos de locking?
Explique o que deadlock

TimeStamp

Cada transao recebe um timestamp vindo do S.O, e


com este valor o banco decide qual a transao deve
executar primeiro, e como referncia o banco mantm
dois contadores de timestamp, um para leitura e outro
para escrita. Que so sempre atualizados a cada read ou
write.
Na realidade, este uma forma de serializar as
transaes.

TimeStamp

Cada transao recebe um timestamp vindo do S.O, e


com este valor o banco decide qual a transao deve
executar primeiro, e como referncia o banco mantm
dois contadores de timestamp, um para leitura e outro
para escrita. Que so sempre atuaizados a cada read ou
write.
Na realidade, este uma forma de serializar as
transaes.

TimeStamp

Transao, emite read


Se TS(T1) < timestamp(e), ento T1, precisa ler um valor
que j foi modificado, neste caso o read rejeitado,
necessitando ser refeita
Se TS(T1) > timestamp(e), ento T1 pode prosseguir.

TimeStamp

Transao, emite write


Se TS(T1) < timestamp(l), ento T1 esta produzindo um
valor necessrio anteriormente, neste caso o write
rejeitado, necessitando ser refeita(T1)
Se TS(T1) < timestamp(w), ento T1 esta tentando
escrever um valor., aqui tambm o write rejeitado e a
transao T1 precisa tambm ser refeita.
Seno o sistema executa a operao write da transao
atualiza o timestamp(e).

Validao

Admitindo-se que na maioria dos casos, as transaes


so de leituras, a taxa de erros de leitura tende a ser
baixa, mas mesmo assim deve-se utilizar um controle de
concorrncia, pois sem o seu uso pode-se levar o banco a
um estado inconsistente, mas usando o controle normal
pode ocasionar um grande overhead, ento nestes casos
melhor a utilizao de outro esquema.

Validao

Leitura:
Na fase de Leitura, a transao l todas as informaes
necessrias e armazenam os seus valores em
variveis temporrias, bem como as que sero
escritas no banco.

Validao

Validao:
Na fase de Validao, o sistema realiza testes de
validao para escrita, afim de verificar se estas
escritas podem levar o banco a um estado
inconsistente, ou falha na seriao da escrita

Validao

Escrita:
Na fase de Escrita, o sistema realiza as escritas somente
se a fase de validao foi concluda com sucesso,
caso contrario a transao ser revertida.

Validao

Para determinar o correto funcionamento, o sistema


possui trs controles de TimeStamp.
Start Tempo do inicio da transao.
Validation Tempo em que a transao passou da fase
de inicio para a de validao.
Finish Tempo em que a transao terminou a fase da
escrita

Validao

O seu funcionamento semelhante ao do TimeStamp


Normal.
Mas em vez do uso do TimeStamp de Leitura, utilizado
o de Validation, dado ao fato de que os conflitos so
baixos.
O de Escrita, utilizado o de Finish Tempo em que a
transao terminou a fase da escrita

Validao

Exemplo
T1

T2

Read(B)
Read(B)
B:=B-50
Read(A)
A:=A+50
Read(A)
Validation
Display(A+B)
Validation
Write(B)
Write(A)

Validao

Suponha, que TS(T1) < TS(T2) ento a fase de validao


tem sucesso no schedule, e perceba que as escritas nas
variveis reais so realizadas somente aps a fase de
validao de T2. Assim T1 l os valores antigos de B e A
Este esquema previne tambm contra os rollbacks em
cascata, pois so efetivadas somente aps a transao
tiver sido confirmada.
No entanto existe a possibilidade de transaes muito
longas(demoradas) ficarem paradas, uma vez que as
transaes curtas(rpidas) entrarem em conflito,
obrigando estas transaes longas a reiniciarem
repetidamente, Ento para evitar este comportamento
necessrio que estas transaes curtas sejam
temporariamente bloqueadas afim de permitirem que a
transao demorada consiga executar e termine

Validao

Este esquema de concorrncia chamado de otimista,


pois supem-se que as transaes sejam completadas e
validadas ao seu final

No caso de serem utilizadas bloqueio e timestamp, so


chamadas de pessimista, pois sempre foram uma espera
ou um rollback sempre que um conflito for detectado

Validao

O bloqueio utiliza o conceito de granularidade, onde


podemos imaginar uma estrutura de rvore, onde os
dados que desejamos modificar so as folhas, dados afim
so os galhos, e o banco todo a raiz
R
ai
z
A
1
F1

Fa
1

Fa
2

A
3

A
2

F2

Fa
n

Fb
1

Fb
2

Você também pode gostar