Escolar Documentos
Profissional Documentos
Cultura Documentos
4.
No incio falamos do custo de acesso memria secundria X custo de acesso a memria RAM
Organizao fundamental
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
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
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
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.
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
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
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
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.
Se algumas partes do processo comeam a se tornar um gargalo (bottleneck), considere pular tudo. Pense, posso fazer sem isso?
19
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