Você está na página 1de 20

Captulo 5

Organizando Arquivos para Desempenho

Viso Geral do Captulo


1. 2. 3.

Compresso de dados Recuperando espao em disco Achando as coisas mais rapidamente:


uma introduo a ordenao interna e busca binria.

4.

Ordenao de chaves (tag sort):


ordenao de arquivos grandes.
2

Encontrando as Coisas Rapidamente

No incio falamos do custo de acesso memria secundria X custo de acesso a memria RAM

Mas at agora no prestamos muita ateno neste custo!


3

Encontrando as Coisas Rapidamente


Vamos mudar um pouco o foco:
Para: De:

Organizao fundamental

Busca de um pedao especfico de informao (searching) num determinado arquivo.

O custo de seek (busca) passa a ser um fator determinante!


4

Encontrando as Coisas Rapidamente


Searching (busca) Sorting (ordenao)

Se voc j estudou algoritmos de ordenao, voc sabe que mesmo um bom sort envolve fazer muitas comparaes. E cada uma dessas comparaes envolve um seek. Sorting e searching: Desenvolveremos abordagens para minimizar o nmero de acessos a disco e portanto, minimizar o tempo gasto. Minimizar o nmero de seeks.
5

Encontrando as Coisas Rapidamente: Busca por PRR e Chave

Nos arquivos at agora vistos


Recuperao rpida
via PRR, quando conhecido.
A PRR apenas indica o byte inicial de um registro mas no d nenhuma informao sobre o contedo do registro.

E se ns no conhecemos a PRR do registro que estamos buscando?


Improvvel: Qual o registro armazenado na PRR 1520? Provvel: Qual o registro que tem armazenado Joo da Silva? Busca atravs de uma chave.
6

Encontrando as Coisas Rapidamente: Busca por PRR e Chave

Busca por chave


E se nenhum registro contm a chave buscada? => temos que olhar cada registro no arquivo E se existir mais de um registro contendo a chave buscada, e ns queremos encontrar todos eles? => temos que olhar cada registro no arquivo Isto sugere que buscar por chave precisamos fazer busca sequencial.
Uma maneira melhor de se lidar com busca por chave: BUSCA BINRIA (em arquivos ordenados)
7

Encontrando as Coisas Rapidamente: Exemplo de Busca Binria (chave=45)


inicio 0 meio 10 fim 20

9 10 11 15 21 23 25 26 29 30 45 90 91 92 95 96
inicio 11 meio 15 fim 20

9 10 11 15 21 23 25 26 29 30 45 90 91 92 95 96
inicio 16 meio 18 fim 20

9 10 11 15 21 23 25 26 29 30 45 90 91 92 95 96
inicio fim 16 17

9 10 11 15 21 23 25 26 29 30 45 90 91 92 95 96
8

Encontrando as Coisas Rapidamente: Busca Binria: Pseudo-Cdigo


BuscaBinaria (arq, n, chaveB) { inicio 0; fim n; enquanto inicio <= fim faa { meio (inicio + fim) / 2 ; // diviso inteira posiciona (arq, meio) ; leia (arq, reg); se chaveB < reg.chave ento fim meio 1; seno se chaveB > reg.chave, ento inicio meio + 1 seno retorna (meio) }}
9

Encontrando as Coisas Rapidamente: Busca Binria em Arquivo


Requer registros de tamanho fixo. O arquivo deve estar ordenado:
em ordem crescente da chave de busca

Complexidade
Em um arquivo de n registros:
busca binria => O(log2 n) sequencial => O(n)

No mximo: log2 n + 1 comparaes Na mdia: log2 n + comparaes No mximo: n comparaes Na mdia: n comparaes

Se o arquivo dobra de tamanho:

a busca sequencial dobra! a busca binria aumenta em um! n = 1000 ento log2 1000 = 9 2n = 2000 ento log2 2000 = 10

Isso faz sentido, uma vez que cada comparao elimina 10 metade das escolhas possveis.

Encontrando as Coisas Rapidamente: Busca Binria em Arquivo


Vantagens
muito mais rpida que a busca seqencial (nmero reduzido de seeks!!).

Desvantagens
O arquivo deve estar ordenado pela chave, e essa ordenao quando feita em disco extremamente demorada. E ainda: incluir dados em arquivo, mantendo a ordenao da chave caro.

11

Encontrando as Coisas Rapidamente: Busca Binria em Arquivo - PROBLEMAS


PROBLEMA 1: Apesar da maior eficincia, a busca binria ainda requer vrios seeks:
requer movimentao constante do cabeote (seek).
em um arquivo com 100.000 registros tem no mximo 17 acessos.
Cada acesso em diferente poro do arquivo.

com o PRR se faz um nico acesso.

Soluo:
conjugar o acesso por chave e PRR.
isto pode ser feito usando um arquivo de ndice
(ndice um ponteiro para um registro, e portanto diferente de chave)
12

Encontrando as Coisas Rapidamente: Busca Binria em Arquivo - PROBLEMAS


PROBLEMA 2: Manter um arquivo ordenado caro.
A cada adio de registro:

deve-se pesquisar a sua posio e depois deslocar todos os registros posteriores de uma posio. se as adies so pouco freqentes, ento pode-se fazer atualizaes em lote. Soluo:
no reordenar todo o arquivo quando novos registros forem includos (busca sequencial pode ser mais barata que adio ordenada), ou usar estruturas de dados que permitam reordenao mais rpida e eficiente do arquivo (uso de estruturas como rvore-B).
13

Encontrando as Coisas Rapidamente: Busca Binria em Arquivo - PROBLEMAS


PROBLEMA 3: Sort em memria RAM (Internal Sorting) s vivel para arquivos pequenos.
factvel apenas se ele for pequeno e couber na memria
Se o arquivo for grande melhor usar um sort externo (i.e. em disco).

Soluo:
Usar outras tcnicas de ordenao.

Keysorting (ou Tag Sort): uma variao do Internal Sorting. O tamanho do arquivo que o Keysorting pode ordenar limitado, mas seu limite maior que o Internal Sorting.

14

Ordenao (Keysorting)
Utiliza-se para ordenar um arquivo que muito grande para caber na memria RAM. Para ordenar um arquivo, precisamos apenas das chaves!!! Mtodo: 1. Leia o arquivo e coloque num vetor de tags a chave e a PRR de cada registro. 2. Ordene o vetor em memria (Internal Sorting) 3. Reescrever os arquivo segundo a ordem dada pelo vetor ordenado.
15

Ordenao (Keysorting)

2
16

Ordenao (Keysorting)

17

Ordenao (Keysorting)
Problemas:
Ler registros na ordem do vetor implica tempo alto (Etapa 3)
so lidas pores dispersas em disco, gerando tempos elevados de seek, latncia e transferncia.

Soluo:
Usar o vetor de chaves para criar um arquivo de ndices e NO mover os registros.
O arquivo original permanece inalterado.

18

Ordenao - ndices
Ao invs de regravar o arquivo, conforme mapeado pelo vetor de tags,
grave apenas o vetor de tags, use esse arquivo como um arquivo ndice, use pesquisa binria nele, talvez na memria:
use PRR associado a chave encontrada para acesso.
o arquivo passa a ser acessvel pela chave com um nico acesso, via PRR. reuse o espao de registros eliminados logicamente, inclua o registro no final do arquivo.

incluso de registros no arquivo bsico


Se algumas partes do processo comeam a se tornar um gargalo (bottleneck), considere pular tudo. Pense, posso fazer sem isso?
19

Ordenao Registros Eliminados


Registros com:
campo para indicar status de vlido ou eliminado. ponteiro para outros registros eliminados.

Ordenar arquivos com registros eliminados problemtico ou mesmo impossvel:


registro eliminado no pode ser mudado de lugar.
ele apontado por outro registro deste arquivo ou de outros arquivos (ndices)

A idia manter o arquivo com atualizaes fazendo reuso dos registros eliminados:
o acesso por chave pode ser feito via arquivo ndice. tais arquivos ndices devem ser atualizados a cada incluso de novos registros no arquivo bsico.
Ser discutido em detalhes no Captulo 6!
20

Você também pode gostar