You are on page 1of 7

UNIP SBD Prof.Antonio A.

Palladino

UNIP - Cursos: Cincias da Computao / Sistemas da Informao Disciplina: SBD Prof.Antonio A.Palladino

TPICOS:

Transaes Anlise de Consultas Organizao de Arquivos e ndices

1. Transaes 1.1. Propriedades das Transaes 1.2. Estados das Transaes 2. Anlise de Consultas 2.1. Operao de Seleo 2.2. Operao de Projeo 2.3. Operao de Juno Natural 3. Organizao de Arquivos e ndices 3.1. Arquivos Seqenciais, Seqenciais-Indexados 3.2. rvores B, B+ 3.3. Hashings Esttico e Dinmico

BIBLIOGRAFIA: - C.J.DATE Introduo a Sistemas de Bancos de Dados Editora Campus; - KORTH, Henry / SILBERSCHATZ, Abraham - Sistemas de Banco de Dados McGraw-Hill; - SETZER, Valdemar W. - Banco de Dados. Conceitos, Modelos, Gerenciadores, Projeto Fsico, Projeto Lgico Editora Edgar Blucher; - ELMASRI, Ramez / NAVATHE, Shankart B. Fundamentals of Database Systems Benjamim Cumming; - KROENKE, David M. - Banco de Dados - Fundamentos, Projeto e Implementao Livros Tcnicos e Cientficos Editora;

UNIP SBD Prof.Antonio A.Palladino

1. Transaes
Transao uma unidade de execuo de programa que acessa e, possivelmente atualiza vrios tens de dados. A transao garante a integridade dos dados pois ela consiste em todas as operaes executadas entre seu comeo e seu fim.

Transao

Begin Transaction .. .. .. End Transaction

operaes

1.1. Propriedades das Transaes As propriedades das transaes so chamadas freqentemente de propriedades ACID, derivado da primeira letra de cada propriedade: Atomicidade: a transao ou executada inteiramente ou no executada; Consistncia: a execuo de uma transao isolada (sem a execuo concorrente de outra transao) preserva a consistncia do banco de dados; Isolamento: embora diversas transaes possam ser executadas de forma concorrente o sistema garante que cada transao no tome conhecimento de outras transaes concorrentes no sistema; Durabilidade: depois de a transao completar-se com sucesso, as mudanas que ela faz no banco de dados persistem, at mesmo se houver falhas no sistema

1.2. Estados das Transaes Ativo: a transao permanece nesse estado enquanto estiver executando; Em efetivao parcial: aps a execuo da ltima declarao; Em Falha: aps a descoberta de que a execuo normal j no pode se realizar; Abortada: depois que a transao foi desfeita e o banco de dados foi restabelecido ao estado anterior do incio da execuo da transao; Em efetivao: aps a concluso com sucesso.

Diagrama de Estados das Transaes:

Em efetivao Parcial

Em efetivao

Ativo

(*)

COMMIT WORK ROLLBACK WORK

Em Falha

Abortada

(*) As declaraes no padro SQL que efetivam ou no o trabalho realizado em uma transao so: - COMMIT WORK: efetiva a transao corrente; - ROLLBACK WORK: aborta a transao corrente; 2

UNIP SBD Prof.Antonio A.Palladino

2. Anlise de Consultas
H um grande nmero de estratgias possveis para processamento de consultas, especialmente se as consultas forem complexas. A execuo delas envolver a utilizao de recursos do sistema, memria, acesso a disco, etc... dessa maneira devemos realizar um estudo sobre a forma como elas so realizadas e os fatores envolvidos e que podem estar relacionados a elas. otimizao de consulta: aprimoramento de estratgia realizado pelo sistema para transformar a consulta de entrada fornecida pelo usurio em uma consulta equivalente que possa ser calculada mais eficientemente; Aes realizadas pelo sistema em relao a uma consulta: - traduo para uma forma interna geralmente baseada em lgebra relacional (p/ os sistemas relacionais de BDs); - verificao da sintaxe do usurio pelo analisador sinttico e se os nomes relacionados na consulta constam no banco de dados; - se a consulta foi expressa em termos de uma viso (projeo de colunas e/ou seleo de linhas de uma ou mais tabelas de um BDs), o analisador substitui todas as referncias ao nome da viso pelas expresses da lgebra relacional para calcular a viso; Sabendo que cada expresso em lgebra relacional representa uma seqncia particular de operaes que podem ser expressas de diversas maneiras trazendo o mesmo resultado, ento o primeiro passo na estratgia de processamento de consultas ser encontrar uma expresso algbrica relacional que seja equivalente consulta e de execuo eficiente. Utilizaremos o esquema abaixo para a avaliao de equivalncia de expresses em lgebra relacional para as consultas feitas nos itens a seguir. Esquema: Cliente Depsito Agncia 2.1. Operao de Seleo Consulta: Expresso: Quais os nomes da agncias e se esto ativas dos clientes com depsito e que morem em SP? nome-agencia, ativo ( cidade-cliente=SP (cliente |x| deposito |x| agencia)) = (nome-cliente, rua, cidade-cliente) = (nome-agencia, nmero-conta, nome-cliente, saldo) = (nome-agencia, ativo, cidade-agencia)

Graficamente teramos:
Resultado Final

nome-agencia, ativo Resultado 2 cidade-cliente=SP Resultado 1 (cliente |x| deposito |x| agencia) cliente deposito agencia

A expresso (cliente |x| deposito |x| agencia) constri uma grande relao (denominao das tabelas no modelo relacional) ocupando recursos temporrios do sistema, sendo que estamos interessados somente em alguns elementos como resultado (os clientes residentes em SP), dessa forma devemos realizar a seleo deles primeiro, o que nos sugere como regra: Operaes de seleo devem ser realizadas o mais cedo possvel.

UNIP SBD Prof.Antonio A.Palladino

Dessa forma a expresso em lgebra relacional otimizada seria: nome-agencia, ativo (( Graficamente teramos:
Resultado Final

cidade-cliente=SP (cliente)) |x| deposito |x| agencia)


A seleo est sendo executada antes da juno

nome-agencia, ativo Resultado 3 (Resultado 1 |x| Resultado 2) Resultado 1 cidade-cliente=SP cliente deposito Resultado 2 (deposito |x| agencia) agencia

Supondo que modifiquemos nossa consulta original solicitando somente os clientes com saldo acima de R$ 1.000,00: Consulta: Expresso: Quais os nomes da agncias e se esto ativas dos clientes com depsito e saldo acima de R$1.000,00 e que morem em SP? nome-agencia, ativo ( cidade-cliente=SP ^ saldo > 1000 (cliente |x| deposito |x| agencia))

Como a tabela agencia no nem cidade-cliente ou saldo ento poderamos reescrever a consulta: nome-agencia, ativo (( cidade-cliente=SP ^ saldo > 1000 (cliente |x| deposito)) |x| agencia)
Estamos juntando primeiramente cliente e deposito Realizando a seleo posteriormente ... e executando a projeo no final

...em seguida juntando com agencia

Examinando a subconsulta: cidade-cliente=SP ^ saldo > 1000 (cliente |x| deposito) Vemos que podemos dividir essa seleo em duas: cidade-cliente=SP ^ ( ( saldo > 1000 (cliente |x| deposito) saldo > 1000 (deposito) ) E aplicando novamente a regra de execuo de selees primeiramente, teremos: cidade-cliente=SP ^ (cliente) ) |x| (

O que nos sugere a regra: Substitua expresses da forma P1 ^ P2 (e) por P1 ( P2 (e) ) , onde P1 e P2 so predicados da expresso da lgebra relacional.

2.2. Operao de Projeo A operao de projeo, da mesma maneira que a seleo, diminui o tamanho dos resultados/ tabelas, assim, sempre que precisarmos gerar uma relao temporria ser vantajoso aplicar quaisquer das projees possveis portanto, junto com a regra realize as operaes de seleo o mais cedo possvel, teremos: Realize as projees o mais cedo possvel. Considerando a expresso: nome-agencia, ativo ( ( ( cidade-cliente=SP (cliente) ) |x| deposito ) ) |x| agencia ) 4

UNIP SBD Prof.Antonio A.Palladino

Na sub-expresso ((

cidade-cliente=SP(cliente)) |x| deposito) obtemos uma tabela cujo esquema :

(nome-cliente, cidade-cliente, nome-agencia, nmero-conta, saldo) Podemos eliminar vrios campos do esquema, os nicos que devem permanecer so aqueles que: Aparecem no resultado da consulta ou; So necessrios para o processamento de operaes subseqentes. Modificando a expresso inicial cujo nico atributo necessrio da sub-expresso nome-agencia, teremos: nome-agencia, ativo ( ( nome-agencia (

Graficamente teramos: nome-agencia, ativo

cidade-cliente=SP (cliente) ) |x| deposito ) ) |x| agencia )


Resultado Final

Resultado 4 (Resultado 3 |x| agencia) Resultado 3 nome-agencia Resultado 2 (Resultado 1 |x| deposito) Resultado 1 cidade-cliente=SP cliente deposito agencia

2.3. Operao de Juno Natural J vimos que modificando as consultas de forma que as selees e as projees sejam feitas to cedo quanto possvel, reduzimos o tamanho dos resultados temporrios. Outra forma de reduzir o tamanho desses temporrios pela escolha de uma ordenao tima das operaes de juno. As expresses ( R1 |x| R2 ) |x| R3 e R1 |x| ( R2 |x| R3 ) so equivalentes em termos de resultado mas seus custos de computao podem ser diferentes pois dependem do nmero de linhas e colunas de cada tabela, e como nos sempre interessante termos como resultados temporrios as menores tabelas possveis, adotamos como regra: Realize primeiramente as junes das tabelas com menor nmero de linhas e colunas; Considerando as expresses acima, caso as tabelas R1 e R2 possuam menos linhas e colunas do que a tabela R3, a expresso mais otimizada seria ( R1 |x| R2 ) |x| R3.

UNIP SBD Prof.Antonio A.Palladino

3. Organizao de Arquivos e ndices


Um ndice para um arquivo semelhante em muitos casos, a um catlogo em uma biblioteca. Se estivermos procurando um livro, por um determinado autor, procuramos no catlogo de autores e uma ficha nos diz onde encontr-lo. Para facilitar a pesquisa as fichas so mantidas em ordem alfabtica e, desta forma no temos de verificar cada ficha para encontr-lo. Nos bancos de dados do mundo real existem vrias tcnicas para manter ndices como o descrito, sendo que cada tcnica melhor para cada tipo de aplicao de banco de dados e elas devem ser avaliadas nos seguintes aspectos: Tempo de acesso: o tempo necessrio para encontrar um item de dado especfico usando a tcnica em questo; Tempo de incluso: o tempo necessrio para incluir um novo dado, incluindo o tempo necessrio para encontrar a posio correta para incluir o novo dado, como tambm para atualizar a estrutura de ndices; Tempo de excluso: o tempo necessrio para excluir um dado, incluindo o tempo necessrio para encontrar o item a ser excludo e para atualizar a estrutura de ndices; Overhead de espao: o espao adicional ocupado pela estrutura de ndices. Desde que o espao adicional seja moderado, usual sacrificar o espao para obter melhor desempenho;

O campo (atributo) ou conjunto de campos utilizados para procurar registro em um arquivo denominado chave de pesquisa, dessa forma se existirem vrios ndices no arquivos, existiro vrias chaves de pesquisa. Iremos considerar para exemplificar os tipos de arquivos/ ndices descritos a seguir, um esquema para depsitos onde: Depsito = (nome-agencia, nmero-conta, nome-cliente, saldo) 3.1. Arquivos Seqenciais Nesses arquivos os registros so armazenados fisicamente na seqncia das chaves de pesquisa, ou o mais prximo possvel, cada registro possui um ponteiro que aponta para o prximo registro na seqncia das chaves de pesquisa. Para o nosso exemplo, os registros esto armazenados na seqncia da chave de pesquisa nomeagencia, teramos ento:
Ponteiro Nome-agencia Brooklin Diadema Diadema Moema Paulista Paulista Pompia Pinheiros Nmero-conta 217 101 110 215 102 201 218 218 Nome-cliente Gustavo Jlia Paulo Slvia Hlio Valria Luiz Luiz Saldo 750 500 600 700 400 900 700 700

Caso o registro no possa ser includo na posio correta ele gravado posteriormente e o ponteiro apontado ao registro anterior sua chave de pesquisa;

Caso seja excludo um registro, o arquivo ficar com um espao entre os registros; Numa incluso caso o mesmo se situe onde havia antes um registro excludo (chave de pesquisa entre o registro anterior e o posterior) ele gravado no espao; Caso o registro no possa ser includo na posio correta ele gravado posteriormente e o ponteiro apontado ao registro anterior sua chave de pesquisa, aps esses casos o processamento torna-se menos eficiente obrigando a se realizar uma reorganizao extremamente trabalhosa de todo o arquivo;

3.2. Arquivos Seqenciais Indexados Os arquivos seqenciais indexados so um dos esquemas de ndices mais antigos usados em sistemas de bancos de dados e so formados por um arquivo seqencial e um ndice. So utilizados por aplicaes que exigem, simultaneamente, processamento seqencial de arquivo de entrada e acesso aleatrio para registros individuais. Para permitir rpida recuperao de registros na ordem de chave de pesquisa, os registros so encadeados por ponteiros. Para permitir um rpido acesso aleatrio usada a estrutura de ndice. Temos dois tipos de ndice; ndice denso e ndice esparso: 6

UNIP SBD Prof.Antonio A.Palladino

ndice denso: um registro de ndice aparece para cada valor da chave de pesquisa no arquivo. O registro contm o valor da chave de pesquisa e um ponteiro para o registro;

ndice denso: Brooklin Diadema Moema Paulista Pompia

Ponteiro

Nome-agencia Brooklin Diadema Diadema Moema Paulista Paulista Pompia

Nmero-conta 217 101 110 215 102 201 218

Nome-cliente Gustavo Jlia Paulo Slvia Hlio Valria Luiz

Saldo 750 500 600 700 400 900 700

ndice esparso: registros indexados so criados para somente alguns registros, Para localizar um registro, encontramos o registro indexado com maior valor da chave de pesquisa que menor ou igual ao valor da chave de pesquisa que estamos procurando. Iniciamos no registro apontado pelo registro indexado e seguimos os ponteiros no arquivo at encontrarmos o registro.

ndice esparso: Brooklin Moema Pompia

Ponteiro

Nome-agencia Brooklin Diadema Diadema Moema Paulista Paulista Pompia

Nmero-conta 217 101 110 215 102 201 218

Nome-cliente Gustavo Jlia Paulo Slvia Hlio Valria Luiz

Saldo 750 500 600 700 400 900 700

ndice Primrio: ndice cuja chave de pesquisa especifica a ordem seqencial do arquivo; ndices secundrios: outros ndices de diferentes chaves de pesquisa que no as do ndice primrio; 3.3. rvores B e B+ A desvantagem principal de uma organizao em arquivo seqencial-indexado que o desempenho vai diminuindo medida que o arquivo cresce. Embora essa degenerao possa ser remediada atravs de reorganizaes do arquivo, indesejvel realiz-las freqentemente. A estrutura de arquivo em rvore B+ a mais largamente usada das vrias estruturas de arquivo, que mantm sua eficincia a despeito de incluses e excluses de dados. O ndice da rvore B+, toma a forma de uma rvore balanceada na qual cada caminho, da raiz da rvore para a folha da rvore tem o mesmo comprimento. Todos os ponteiros apontam Exemplo de ndice em rvore B+: para ns da rvore Paulista
Moema

Brooklin

Moema

Paulista

Observao:

Paulista

Folha com 3 ns (em cinza)

A diferena dos ndices em rvore B que ela elimina o armazenamento redundante das chaves de pesquisa, cada valor da chave de pesquisa aparece em algum n da folha, diminuindo o tamanho do arquivo de ndices, embora exija neste caso da adio de ponteiros adicionais para cada chave de pesquisa dos ns no folha. 3.4. Hashing Esttico e Dinmico Uma desvantagem dos mtodos de ndice que devemos percorrer uma estrutura de ndices para localizar dados. A tcnica de hashing (espalhamento) permite-nos evitar percorrer tal estrutura de ndices. Isto envolve o clculo do endereo do item de dados diretamente calculando uma funo no valor da chave de pesquisa do registro desejado. A funo Hashing Esttico aquela em que o conjunto de endereo de bucket (coleo de um ou mais blocos encadeados) fixo, dessa forma tais funes no se podem adaptar facilmente a bancos de dados que crescem significativamente no tamanho ao longo do tempo, h ento algumas funes de hashing que permitem que a funo se modifique dinamicamente sendo denominadas de Hashing Dinmico. 7

You might also like