1 Organização básica de arquivos. 2 Tipos de arquivos Organização de arquivos Formas básicas...
Transcript of 1 Organização básica de arquivos. 2 Tipos de arquivos Organização de arquivos Formas básicas...
1
Organização básica de arquivos
E Ch Nome Curso1 100 Ana Bcc2 101 João Adm3 105 Maria Bcc4 106 José Eco5 110 Pedro Bio6 111 Rosa Ped7 112 Carlos Med8 113 Valdir Eco9 115 Paulo Med
E Ch Nome Curso1 100 Ana Bcc2 101 João Adm3 105 Maria Bcc4 106 José Eco5 110 Pedro Bio6 111 Rosa Ped7 112 Carlos Med8 113 Valdir Eco9 115 Paulo Med
Ch E105 1111 4115 7
Ch E105 1111 4115 7
2
Tipos de arquivos
Organização de arquivos Formas básicas de organização de arquivos
– Seqüencial– Seqüencial Indexada– Indexada– Direta (Randômica) – Listas Invertidas
3
Organização básica de arquivos
A organização de arquivo trata do arranjo ou a forma de distribuição dos registros dentro do arquivo, objetivando agilizar o processo de armazenamento e recuperação de dados.
Um arquivo é organizado, logicamente, como uma seqüência de registros que são mapeados nos dispositivos de memória.
4
Organização básica de arquivos
Os registros podem assumir tamanhos fixos e variáveis:
– Tamanho fixo – todos os registros do arquivo possuem o mesmo comprimento em bytes;
– Tamanho variável – os registros podem assumir um comprimento entre dois limites especificados, máximo e mínimo.
5
Registro de tamanho variável
A B C D
A B D E F01 F02 F03
Registro com campo de tamanho variável
Registro com n° variável de ocorrências
A – CódigoB – NomeC – Tamanho do campo DD – EndereçoE – Ocorrências de F (1 a 10)
F – Disciplinas01 Pascal02 Inglês03 Análise
6
Formas básicas de organização de arquivos
SeqüencialSeqüencial indexada IndexadaDireta (Aleatória)Listas Invertidas
7
Organização seqüencial Operações
Acesso a um registroO argumento de pesquisa é comparado com cada registro lido, de forma seqüencial.
Inclusão de um registroDeve ser gerado um novo arquivo a partir do atual, intercalando o registo novo com base na chave primária.
Inclusão
8
Organização seqüencial operações
Exclusão de um registroComo na inclusão, deve ser gerado um novo arquivo a partir do atual, de forma a eliminar o registro desejado. Outra forma bastante utilizada principalmente para arquivos em disco, seria indicar (em um campo adicional) o estado de registro como excluído.
Exclusão
9
Organização seqüencial operações
Alteração de um registroEsta operação pode ser implementada da mesma forma que as de inclusão e exclusão.Em arquivos em disco, o registro pode ser recuperado, alterado e regravado na mesma posição, desde que não se altere a chave de ordenação.
Alteração
10
Organização seqüencial operações
10 dd16 dd20 dd21 dd22 dd25 dd28 dd30 dd
10 dd16 dd19 dd20 dd21 dd25 dd27 dd28 dd30 dd
19 Inc dd22 Exc27 Inc dd
Atualização
11
Organização Seqüencial
Forma mais simples de organização Apesar de sua simplicidade, a pesquisa
seqüencial é o método mais eficiente para pesquisas em arquivos com até 25 registros (pesquisa seqüencial rápida)
12
Organização seqüencial indexada
O arquivo seqüencial indexado é formado por um arquivo seqüencial e por um índice;
Contém três áreas distintas:– Área de índices– Área de dados– Área de extensão (overflow)
Possibilita tanto acesso seqüencial quanto randômico (através de índices)
Índices
Dados
Extensão
13
Índices
Um índice é formado pela chave e pelo endereço do registro;
Cada entrada no índice corresponde a um grupo de registros (índice esparso) ao invés de uma entrada para cada registro (índice denso);
Os índices podem ser estruturados em até três níveis.
14
Índices
Índice Mestre – contém entradas com o maior valor de chave de cada trilha do índice de cilindro.
Índice de Cilindros – contém entradas com o maior valor de chave contido em cada cilindro.
Índice de Trilhas – contém entradas com o maior valor de chave contido em cada trilha do cilindro.
15
Índices
Índice de Cilindro
Índice Mestre
200
1000500
300600
1200
375700 900
450
20001500
C1
C5C9
C2 C3 C4C6 C7 C8CA CB CC
50 100 150 200T1 T3 T4
Cilindro “C1”T2
10 dd 40 dd 46 dd 50 dd60 dd 65 dd 72 dd 100 dd
104 dd171 dd
111 dd180 dd
130 dd198 dd
150 dd200 dd
450 900 2000T0 T1 T2
T0T1T2T3T4
T0T1T2
Índice de Trilha
Trilhas dedados
16
Área de Extensão
Na criação do arquivo seqüencial indexado os registros são armazenados na área de dados;
Os novos registros incluídos no arquivo são armazenados fisicamente na ordem seqüencial de acordo com o valor de chave. Isto implica que registros com valores de chaves mais altos devam ser deslocados.
17
Área de Extensão
Os registros que são deslocados ou forçados para fora da trilha original são colocados na área de extensão;
Os registros na área de extensão originalmente pertencentes a mesma trilha são encadeados através de um elo de ligação e a entrada do índice de extensão aponta para o início da cadeia.
18
Entradas de índices
Chave 1 – maior valor de chave de cada trilha do cilindro da área de dados.
Endereço 1 – endereço da trilha. Chave 2 – maior valor de chave do registro,
logicamente, associado com a trilha do cilindro da área de dados.
Endereço 2 – endereço da trilha referente ao registro de maior valor de chave, logicamente, associado com a trilha de cilindro da área de dados.
Chave1 Endereço1 Endereço2Chave2
Dados Extensão
19
Organização seqüencial indexada – operações
Acesso a uma registroOs registro podem ser recuperados de forma seqüencial e aleatoriamente.
Exclusão de um registroA exclusão de um registro pode ser implementada pela colocação de uma marca “excluído” em um campo adicional do registro.
Programa
20
Organização seqüencial indexada – operações
Alteração de um registroSe a alteração não envolver a chave do registro e não modificar o tamanho, seus campos podem ser alterados e o registro gravado novamente na mesma posição.
Programa
21
Organização seqüencial indexada – operações
Inclusão de um registroO registro será incluído na área de extensão se seu valor de chave for maior do que a do último registro. Caso contrário, o último registro da trilha na área de dados é deslocado para a área de extensão e o novo registro incluído na sua posição correta.
Programa
22
Adições de registros
122
122
132
132
140
140 166
166T1
T1R0
T2 T3 T4
T2R0 T3R0 T4R0
114 dd 115 dd 118 dd 122 dd
125 dd 129 dd 130 dd 132 dd
133 dd
142 dd
136 dd
154 dd
137 dd
161 dd
140 dd
166 dd
T1T2T3T4
Trilhasde
dados
T5T6
Trilhas deextensão
Índice de dadosÍndice de exten.
Inserir os registros de chaves 117, 135 e 155.Posição Inicial:
23
Adições de registros
118
122
132
132
137
140 166
161T1
T5R1
T2 T3 T4
T2R0 T5R2 T5R3
114 dd 115 dd 117 dd 118 dd
125 dd 129 dd 130 dd 132 dd
133 dd
142 dd
135 dd
154 dd
136 dd
155 dd
137 dd
161 dd
T1T2T3T4
Trilhasde
dados
T5T6
Trilhas deextensão
Índice de dadosÍndice de exten.
Posição após inseridos os registrosde chaves 117, 135 e 155.
122 T1R0 140 T3R0 166 T4R0
114 dd 115 dd 117 dd 118 dd
125 dd 129 dd 130 dd 132 dd
133 dd
142 dd
135 dd154 dd
136 dd155 dd
137 dd161 dd
T1T2T3T4
Trilhasde
dados
T5T6
Trilhas deextensão
Índice de dadosÍndice de exten.
Posição após inseridos os registros de chaves 117, 135 e 155:118122
132132
137140 166
161T1T5R1
T2 T3 T4T2R0 T5R2 T5R3
122 140 166T1R0 T2R0 T3R0
Inserir os registros de chaves 117, 135 e 155.Posição Inicial:
114 dd 115 dd 118 dd 122 dd
125 dd 129 dd 130 dd 132 dd
133 dd
142 dd
136 dd154 dd
137 dd161 dd
140 dd166 dd
T1T2T3T4
Trilhasde
dados
T5T6
Trilhas deextensão
Índice de dadosÍndice de exten.
122122
132132
140140 166
166T1T1R0
T2 T3 T4T2R0 T3R0 T4R0
25
Reorganização do arquivo seqüencial indexado
Os novos registros inseridos no arquivo são armazenados ou deslocam registros existentes para a área de extensão;
O tempo de acesso para recuperar um registro da área de extensão é bem maior do que o tempo para ler um registro da área de dados;
Em outras palavras, o desempenho vai diminuindo à medida que o arquivo cresce. No entanto, essa degeneração pode ser remediada através de reorganizações do arquivo.
26
Reorganização do arquivo seqüencial indexado
A reorganização é realizada, usualmente, em duas etapas de processamento:– A versão existente é lida na seqüência de
chaves e gravada em fita magnética, constituindo-se em backup.
– A nova versão é criada a partir da fita, podendo ser eliminados, neste passo, os registros marcados como excluídos.
Backup Restore
27
Organização Indexada
Rapidez na inclusão (desde que não haja movimentação de registros dentro do arquivo, basta inserir registros sempre no final do arquivo)
Rapidez na pesquisa (índice mantido na memória principal)
Rapidez na atualização (devido ao índice) Uma pesquisa seqüencial, mesmo que parcial,
não pode ser feita sem acesso ao índice.
28
Organização Indexada
Uma base de dados indexada é composta por duas partes básicas:
– Um arquivo de dados– Estrutura de índices associada
OBS: A estrutura interna para implementar o índice pode variar muito, desde uma simples tabela, uma árvore de busca binária (desempenho satisfatório para arquivos de médio porte) ou estruturas de árvore mais complexas (para grandes arquivos).
29
Organização indexada
E Ch Nome Curso 1 105 Ana Bcc 2 110 João Adm 3 107 Maria Bcc 4 111 José Eco 5 137 Pedro Bio 6 113 Rosa Ped 7 115 Carlos Med 8 106 Valdir Eco 9 142
E Ch Nome Curso1 100 Ana Bcc2 101 João Adm3 105 Maria Bcc4 106 José Eco5 110 Pedro Bio6 111 Rosa Ped7 112 Carlos Med8 113 Valdir Eco9 115 Paulo Med
Ch E105 1111 4115 7
Ch E105 1111 4115 7
30
Árvore de Busca Binária
Uma árvore binária de raiz R é denominada árvore de busca binária se:
Todo elemento armazenado na sub-árvore esquerda é menor que R
Nenhum elemento armazenado na sub-árvore direita é menor que R
As sub-árvores (esq. e dir.) também são sub-árvores
31
Organização Randômica
O arquivo é projetado com dois tipos de áreas de dados: Área principal e área de extensão;
É caracterizado por uma relação estabelecida entre a chave de um registro e seu endereço no dispositivo de memória de acesso direto.
Conhecido também como arquivo organizado randomicamente.
Ao invés de um índice é usada uma função que calcula o endereço do registro a partir do argumento de pesquisa.
32
Função de Transformação de Chave
Hashing é a função aplicada sobre a chave de pesquisa que irá gerar o endereço do registro
Hashing Perfeito: Quando não há colisões de chave (sinônimos). Apenas um acesso físico ao arquivo para localizar o registro
Hashing Perfeito Mínimo: Sem colisões e sem espaços vazios no arquivo
33
Cálculo do endereço
É o estabelecimento da localização de um registro dentro do arquivo através de um algoritmo de randomização ou função com base na chave do registro.Há dois tipos de funções:– Determinística
Um endereço para um único valor de chave;
– ProbabilísticaUm endereço para um ou mais valores de chaves.
34
Endereçamento Direto
Cálculo para determinar o endereço:O valor da chave é dividido pela quantidade de registros que podem ser armazenados em uma trilha do disco.O quociente resulta no endereço relativo de trilha e o resto + 1, indica o número do registro na trilha.
35
Endereçamento Direto
A pesquisa sobre os tipos de arquivos apresentados anteriormente são feitas com base na comparação de chaves. No endereçamento direto ou randômico é utilizado o método de transformação de chave, ou seja, a partir da chave de pesquisa aplica-se uma função de Hash que irá determinar o endereço do registro pesquisado.
36
Endereçamento DiretoExemplo de cálculo de Hash
Considerar um arquivo contendo 10.000 registros identificados pelas chaves de nºs 1 a 10.000 e capaz de armazenar 10 registros por trilha.
Para localizar o registro de chave 6.349:6.349 / 10 = 634 (resto: 9).
Localização relativa: trilha 634 –> reg. 10 (9+1).
37
Endereçamento Indireto
O cálculo do endereço para incluir um novo registro está sujeito à ocorrência de sinônimos, que são endereços idênticos produzidos a partir de chaves diferentes.
Este método também pode deixar de utilizar determinados endereços de memória em função da chave e do algoritmo empregados.
38
Métodos de transformação de chaves (Randomização)
Método do Resto da Divisão – Este método utiliza no cálculo como divisor o número primo mais próximo do número total de trilhas necessárias para armazenar o arquivo.
Método da Análise de Dígitos – Efetua-se estatística, contando o número de vezes que cada uma dos dez algarismos ocorre em cada posição da chave, para identificar quais as posições em que os algarismos se encontram mais uniformemente distribuídos.
39
Métodos de transformação de chaves (Randomização)
Método do Desdobramento – A chave é dividida em duas ou mais partes e adicionadas para formar o endereço.
Método da Transformação da Base – A chave é convertida para outra base. Os dígitos resultantes de mais alta ordem são abandonados, se não forem necessários para compor o endereço.
40
Tratamento de sinônimos (colisões)
Um sinônimo ou colisão ocorre quando se estabelece um mesmo endereço para valores diferentes de chaves de acesso.
Na área principal cada bloco ou registro tem um campo indicador (pointer field) de extensão ou de overflow. Este campo se acha vazio se não existir sinônimos na área de extensão.
Algumas técnicas para tratar colisões comuns são endereçamento aberto, encadeamento interior ou exterior.
41
Endereçamento Aberto
Quando o número de registros a ser armazenado puder ser previamente estimado, então não haverá necessidade de usar apontadores para a área de extensão.
Os registros poderão ser armazenados na própria área de dados (alocada previamente) nos lugares ainda vazios.
O tratamento de sinônimos pode ser feito por métodos de endereçamento aberto
42
Endereçamento Aberto Tratamento de Sinônimos (colisões)
Para escolher localizações alternativas para registros sinônimos, a maneira mais simples seria utilizar o hashing linear.
Hashing Linear: Aplica-se a transformação de chave para localizar a posição do registro a ser inserido, caso a posição esteja ocupada, passa-se a próxima posição até encontrar uma vazia
43
Encadeamento Exterior Tratamento de Sinônimos (colisões)
Usado quando o número de registros não é previamente conhecido
Consiste em manter listas encadeadas, uma para cada possível endereço-base
Um campo para o encadeamento deve ser acrescentado a cada nó
44
Encadeamento Interior Tratamento de Sinônimos (colisões)
Usado quando o número de registros não é previamente conhecido
Cada registro tem um campo a mais para o encadeamento
Caso exista mais de um registro para um endereço-base, o primeiro que ocupa a base aponta para um registro no fim da tabela de dispersão e assim por diante
45
Operações
Acesso a um registro – O acesso seqüencial diretamente sobre a área de dados, só é possível se a função de cálculo do endereço para o armazenamento preserva a ordem dos registros.
Alteração de um registro – O registro é lido, modificado e regravado no mesmo endereço, desde que não seja modificado o valor da chave e o tamanho do registro.
46
Operações
Exclusão de um registro – O registro é acessado e marcado como excluído em um campo adicional do registro.
Inclusão de um registro – O registro é incluído na localização resultante da função de cálculo. Se o endereço calculado já contém um registro armazenado a rotina de overflow (tratamento de sinônimos) é ativada para estabelecer um novo endereço.
47
Lista Invertida
Estrutura auxiliar ao arquivo de dados que permite o acesso rápido a um registro por um campo frequentemente utilizado para pesquisa
Para campos que apresentam valores repetidos a lista invertida economiza espaço e torna a pesquisa mais eficiente
48
Listas Invertidas
Considere o arquivo a seguir:
End Matr Nome Curso Cidade
1 007 Fred Sistemas informação Arcos
2 010 Gil Direito Bambuí
3 012 João Psicologia BH
4 015 Ana Sistemas informação Arcos
5 021 Maria Sistemas informação Lagoa da Prata
6 034 Célia Sistemas informação Bom Despacho
7 042 Lúcia Direito Arcos
49
Listas Invertidas
Lista invertida por curso:
Direito 2 7
Psicologia 3
Sistemas informação 1 4 5 6
50
Listas Invertidas
Lista invertida por cidade:
Arcos 1 4
Bambuí 2
BH 3
Bom Despacho 6
Lagoa da Prata 5
51
Exercícios
Considerando o arquivo de dados a seguir: Crie um índice básico sobre o campo chave Crie um índice básico sobre o campo nome Crie a árvore de pesquisa binária sobre o
campo chave Crie uma lista invertida sobre o campo curso Existe alguma vantagem em se criar uma
lista invertida em vez de um índice básico?
52
Exercícios
E Ch Nome Curso1 100 Ana Bcc2 101 João Adm3 105 Maria Bcc4 106 José Eco5 110 Pedro Bio6 111 Rosa Ped7 112 Carlos Med8 113 Valdir Eco9 115 Paulo Med
E Ch Nome Curso1 100 Ana Bcc2 101 João Adm3 105 Maria Bcc4 106 José Eco5 110 Pedro Bio6 111 Rosa Ped7 112 Carlos Med8 113 Valdir Eco9 115 Paulo Med
Ch E105 1111 4115 7
Ch E105 1111 4115 7