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.