Professional Documents
Culture Documents
Palladino
UNIP - Cursos: Cincias da Computao / Sistemas da Informao Disciplina: SBD Prof.Antonio A.Palladino
TPICOS:
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;
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
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.
Em efetivao Parcial
Em efetivao
Ativo
(*)
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
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.
Dessa forma a expresso em lgebra relacional otimizada seria: nome-agencia, ativo (( Graficamente teramos:
Resultado Final
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
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
Na sub-expresso ((
(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 (
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.
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
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;
Ponteiro
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.
Ponteiro
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
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