10.05.2013 Views

Banco de Dados II

Banco de Dados II

Banco de Dados II

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Banco</strong> <strong>de</strong> <strong>Dados</strong> <strong>II</strong><br />

Prof: Jairo Ferraz


Operações em Arquivos<br />

Operações em arquivos costumam ser agrupadas em<br />

Operações <strong>de</strong> Recuperação e Operações <strong>de</strong> Atualização.<br />

Condição <strong>de</strong> Seleção Simples, po<strong>de</strong> envolver uma<br />

comparação <strong>de</strong> igualda<strong>de</strong> em algum valor <strong>de</strong> campo por<br />

exemplo CPF = '12345678900' ou Departamento =<br />

'Pesquisa'.<br />

Condições mais complexas po<strong>de</strong>m envolver outros tipos<br />

<strong>de</strong> operadores <strong>de</strong> comparação, como > ou >=; exemplo<br />

Salário >= 3000.


Operações em Arquivos<br />

As operações <strong>de</strong> pesquisa em arquivos geralmente são<br />

baseadas em condições <strong>de</strong> seleção simples. Uma<br />

condição complexa <strong>de</strong>ve ser <strong>de</strong>composta pelo SGBD (ou<br />

pelo programador) para extrair uma condição simples.<br />

Por exemplo:<br />

Po<strong>de</strong>mos extrair a condição simples Departamento =<br />

'Pesquisa' da condição complexa Salario >= 3000 and<br />

Departamento = 'Pesquisa'.<br />

Cada registro satisfazendo Departamento = 'Pesquisa' é<br />

localizado e <strong>de</strong>pois testado para ver se também satisfaz<br />

Salario >= 3000


Operações em Arquivos<br />

Normalmente, programas <strong>de</strong> alto nível, como programas <strong>de</strong><br />

software <strong>de</strong> SGBD, acessam registros usando esses comandos:<br />

Open. Prepara o arquivo para leitura ou gravação, alocando buffers.<br />

Reset. Define o ponteiro do arquivo aberto para o início do arquivo.<br />

Find (ou Locate). Procura o primeiro registro que satisfaça uma<br />

condição <strong>de</strong> pesquisa. Transfere o bloco que contém esse registro<br />

para o buffer <strong>de</strong> memória principal.<br />

Read (ou Get). Copia o registro atual do buffer para uma variável<br />

<strong>de</strong> programa no programa do usuário.<br />

FindNext. Procura o próximo registro no arquivo que satisfaz a<br />

condição <strong>de</strong> pesquisa.<br />

Delete. Exclui o registro atual.<br />

Modify. Modifica alguns valores <strong>de</strong> campo para o registro atual.<br />

Insert. Insere um novo registro no arquivo.<br />

Close. Completa o acesso ao arquivo liberando os buffers.


Operações em Arquivos<br />

É possível resumir as operações Find, FindNext e Read<br />

em uma única operação, SCAN.<br />

Scan. Se o arquivo já tiver sido aberto ou reiniciado,<br />

Scan retorna o primeiro registro; caso contrário, ele<br />

retorna o próximo registro. Se uma condição for<br />

especificada com a operação, o registro retornado é o<br />

primeiro ou o próximo registro que satisfaz a condição.


Operações em Arquivos<br />

Existem também operações <strong>de</strong> níveis mais alto<br />

FindAll. Localiza todos os registros no arquivo que<br />

satisfazem uma condição <strong>de</strong> pesquisa.<br />

FindOr<strong>de</strong>red. Recupera todos os registros no arquivo em<br />

alguma or<strong>de</strong>m especificada.<br />

Reorganize. Inicia o processo <strong>de</strong> reorganização.


Operações em Arquivos<br />

Organização <strong>de</strong> arquivo refere-se à organização dos<br />

dados <strong>de</strong> um arquivo em registros, blocos e estruturas<br />

<strong>de</strong> acesso.<br />

Método <strong>de</strong> acesso, oferece um grupo <strong>de</strong> operações que<br />

po<strong>de</strong>m ser aplicadas a um arquivo.<br />

Em geral, é possível aplicar vários métodos <strong>de</strong> acesso a<br />

uma organização <strong>de</strong> arquivo.<br />

Certo arquivos po<strong>de</strong>m ser ESTÁTICOS, significando que<br />

operações <strong>de</strong> atualização raramente são realizadas;<br />

outros arquivos, mais DINÂMICOS, po<strong>de</strong>m mudar com<br />

frequência.


Arquivos <strong>de</strong> Registros Desor<strong>de</strong>nados (HEAP)<br />

Os registros são arquivados na or<strong>de</strong>m em que são<br />

inseridos ao final do arquivo. Essa organização é<br />

chamada <strong>de</strong> arquivo <strong>de</strong> heap ou pilha.<br />

Ela é usada com caminhos <strong>de</strong> acesso adicionais, como os<br />

índices secundários e para coletar e armazenar registros<br />

<strong>de</strong> dados para uso futuro.


Arquivos <strong>de</strong> Registros Desor<strong>de</strong>nados (HEAP)<br />

A inserção <strong>de</strong> um novo registro é muito EFICIENTE. O<br />

último bloco <strong>de</strong> disco do arquivo é copiado para um<br />

buffer, o novo registro é acrescentado e o bloco é então<br />

REGRAVADO <strong>de</strong> volta no disco.<br />

No entanto, procurar um registro usando qualquer<br />

condição <strong>de</strong> pesquisa envolve uma pesquisa LINEAR pelo<br />

bloco <strong>de</strong> arquivo por bloco.


Arquivos <strong>de</strong> Registros Desor<strong>de</strong>nados (HEAP)<br />

Para excluir um registro, um programa <strong>de</strong>ve primeiro<br />

encontrar seu bloco, copiá-lo para um buffer, excluir o<br />

registro do buffer e, finalmente, regravar o bloco <strong>de</strong><br />

volta ao disco. Isso <strong>de</strong>ixa um espaço livre no bloco <strong>de</strong><br />

disco.<br />

A exclusão <strong>de</strong> um gran<strong>de</strong> número <strong>de</strong> registros <strong>de</strong>ssa<br />

maneira resulta em espaço <strong>de</strong> armazenamento<br />

<strong>de</strong>sperdiçado.<br />

Outra técnica <strong>de</strong> exclusão é ter um byte ou bit extra,<br />

chamado marcador <strong>de</strong> exclusão, armazenado em cada<br />

registro. Um registro é excluído ao se <strong>de</strong>finir o marcador.


Arquivos <strong>de</strong> Registros Desor<strong>de</strong>nados (HEAP)<br />

Essas duas técnicas <strong>de</strong> exclusão exigem reorganização<br />

periódica do arquivo para retomar o espaço não usado<br />

dos registros excluídos.<br />

Os registros são compactados pela remoção <strong>de</strong> registros<br />

excluídos, assim os blocos são preenchidos até a<br />

capacida<strong>de</strong> mais uma vez.<br />

Outra possibilida<strong>de</strong> é usado espaço dos registros<br />

excluídos ao inserir novos registros, embora isso exija<br />

uma manutenção extra para se manter informado sobre<br />

os locais vazios.


Arquivos <strong>de</strong> Registros Desor<strong>de</strong>nados (HEAP)<br />

A modificação <strong>de</strong> um registro <strong>de</strong> tamanho variável po<strong>de</strong><br />

exigir a exclusão do registro antigo e a inserção <strong>de</strong> um<br />

registro modificado, pois o registro modificado po<strong>de</strong> não<br />

se encaixar em seu antigo espaço no disco.<br />

Para ler todos os registros na or<strong>de</strong>m dos valores <strong>de</strong><br />

algum campo, criamos uma cópia classificada do<br />

arquivo.


Arquivos <strong>de</strong> Registros Or<strong>de</strong>nados (Classificados)<br />

Po<strong>de</strong>mos or<strong>de</strong>nar fisicamente os registros <strong>de</strong> um arquivo no<br />

disco com base nos valores <strong>de</strong> um <strong>de</strong> seus campos,<br />

chamado <strong>de</strong> CAMPO DE ORDENAÇÃO.<br />

Os registros or<strong>de</strong>nados têm algumas vantagens em relação<br />

aos arquivos <strong>de</strong>sor<strong>de</strong>nados.<br />

Primeiro, a leitura dos registros na or<strong>de</strong>m dos valores da chave<br />

<strong>de</strong> or<strong>de</strong>nação torna-se extremamente eficiente porque nenhuma<br />

classificação é necessária.<br />

Segundo, encontrar o próximo registro com base no atual na<br />

or<strong>de</strong>m da chave <strong>de</strong> or<strong>de</strong>nação em geral não requer acessos <strong>de</strong><br />

bloco adicionais porque o próximo registro está no mesmo bloco<br />

do atual.<br />

Terceiro, o uso <strong>de</strong> uma condição <strong>de</strong> pesquisa baseada no valor<br />

<strong>de</strong> um campo-chave <strong>de</strong> or<strong>de</strong>nação resulta em acesso mais<br />

rápido quando a técnica <strong>de</strong> pesquisa binária é usada.


Arquivos <strong>de</strong> Registros Or<strong>de</strong>nados (Classificados)<br />

Um critério <strong>de</strong> pesquisa envolvendo as condições >,


Arquivos <strong>de</strong> Registros Or<strong>de</strong>nados (Classificados)<br />

A inserção e a exclusão <strong>de</strong> registros são operações<br />

dispendiosas para um arquivo or<strong>de</strong>nado, pois os<br />

registros <strong>de</strong>vem permanecer fisicamente or<strong>de</strong>nados.<br />

Para inserir um registro, temos <strong>de</strong> encontrar sua posição<br />

correta no arquivo, com base no valor <strong>de</strong> seu campo <strong>de</strong><br />

or<strong>de</strong>nação, e <strong>de</strong>pois criar espaço no arquivo para inserir<br />

o registro nessa posição.<br />

Para um arquivo gran<strong>de</strong> isso é muito <strong>de</strong>morado, porque<br />

a meta<strong>de</strong> dos registros no arquivo precisa ser movida<br />

para criar espaço para o novo registro.


Arquivos <strong>de</strong> Registros Or<strong>de</strong>nados (Classificados)<br />

Para a exclusão <strong>de</strong> registro, o problema é menos grave<br />

se os marcadores <strong>de</strong> exclusão e a reorganização<br />

periódica forem usados.<br />

Uma opção para tornar a inserção mais eficiente é<br />

manter algum espaço não usado em cada bloco para<br />

novos registros.<br />

Porém, quando esses espaços é totalmente utilizado, o<br />

problema original reaparece.<br />

Outro método frequentemente empregado é criar um<br />

arquivo <strong>de</strong>sor<strong>de</strong>nado temporário, chamado arquivo <strong>de</strong><br />

overflow ou transação.


Arquivos <strong>de</strong> Registros Or<strong>de</strong>nados (Classificados)<br />

A modificação do valor <strong>de</strong> um campo <strong>de</strong> um registro<br />

<strong>de</strong>pen<strong>de</strong> <strong>de</strong> dois fatores:<br />

a condição <strong>de</strong> pesquisa para localizar o registro e o campo a<br />

ser modificado. Se a condição <strong>de</strong> pesquisa envolver o<br />

campo da chave <strong>de</strong> or<strong>de</strong>nação, po<strong>de</strong>mos localizar o registro<br />

com uma pesquisa binária; caso contrário, tempo <strong>de</strong><br />

realizar uma pesquisa linear.<br />

A modificação do campo <strong>de</strong> or<strong>de</strong>nação significa que o<br />

registro po<strong>de</strong> alterar sua posição no arquivo.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!