A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Organização básica de arquivos

Apresentações semelhantes


Apresentação em tema: "Organização básica de arquivos"— Transcrição da apresentação:

1 Organização básica de arquivos
nuno

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 nuno

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. nuno

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. nuno

5 Registro de tamanho variável
Registro com campo de tamanho variável A B C D Registro com n° variável de ocorrências A B D E F01 F02 F03 A – Código B – Nome C – Tamanho do campo D D – Endereço E – Ocorrências de F (1 a 10) F – Disciplinas 01 Pascal 02 Inglês 03 Análise nuno

6 Formas básicas de organização de arquivos
Seqüencial Seqüencial indexada Indexada Direta (Aleatória) Listas Invertidas nuno

7 Organização seqüencial Operações
Acesso a um registro O argumento de pesquisa é comparado com cada registro lido, de forma seqüencial. Inclusão de um registro Deve ser gerado um novo arquivo a partir do atual, intercalando o registo novo com base na chave primária. Inclusão nuno

8 Organização seqüencial operações
Exclusão de um registro Como 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 nuno

9 Organização seqüencial operações
Alteração de um registro Esta 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 nuno

10 Organização seqüencial operações
19 Inc dd 22 Exc 27 Inc dd 10 dd 16 dd 19 dd 20 dd 21 dd 25 dd 27 dd 28 dd 30 dd 10 dd 16 dd 20 dd 21 dd 22 dd 25 dd 28 dd 30 dd Atualização nuno

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) nuno

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 nuno

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. nuno

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. nuno

15 Índices Índice Mestre Índice de Cilindro Cilindro “C1”
450 T0 900 T1 2000 T2 Índice de Cilindro T0 T1 T2 200 C1 300 C2 375 C3 450 C4 Seqüencial indexado 500 C5 600 C6 700 C7 900 C8 1000 C9 1200 CA 1500 CB 2000 CC Cilindro “C1” Índice de Trilha T0 T1 T2 T3 T4 50 T1 100 T2 150 T3 200 T4 10 dd 40 dd 46 dd 50 dd Trilhas de dados 60 dd 65 dd 72 dd 100 dd 104 dd 111 dd 130 dd 150 dd 171 dd 180 dd 198 dd 200 dd nuno

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. nuno

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. nuno

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. Dados Extensão Chave1 Endereço1 Chave2 Endereço2 nuno

19 Organização seqüencial indexada – operações
Acesso a uma registro Os registro podem ser recuperados de forma seqüencial e aleatoriamente. Exclusão de um registro A exclusão de um registro pode ser implementada pela colocação de uma marca “excluído” em um campo adicional do registro. Programa Seqüencial indexado nuno

20 Organização seqüencial indexada – operações
Alteração de um registro Se 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 Seqüencial indexado nuno

21 Organização seqüencial indexada – operações
Inclusão de um registro O 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 Seqüencial indexado nuno

22 Adições de registros Inserir os registros de chaves 117, 135 e 155.
Posição Inicial: Índice de dados Índice de exten. 122 T1 132 T2 140 T3 166 T4 122 T1R0 132 T2R0 140 T3R0 166 T4R0 T1 T2 T3 T4 114 dd 115 dd 118 dd 122 dd Trilhas de dados 125 dd 129 dd 130 dd 132 dd Seqüencial indexado 133 dd 136 dd 137 dd 140 dd 142 dd 154 dd 161 dd 166 dd Trilhas de extensão T5 T6 nuno

23 Adições de registros Posição após inseridos os registros
de chaves 117, 135 e 155. Índice de dados Índice de exten. 118 T1 132 T2 137 T3 161 T4 122 T5R1 132 T2R0 140 T5R2 166 T5R3 T1 T2 T3 T4 114 dd 115 dd 117 dd 118 dd Trilhas de dados 125 dd 129 dd 130 dd 132 dd Seqüencial indexado 133 dd 135 dd 136 dd 137 dd 142 dd 154 dd 155 dd 161 dd Trilhas de extensão T5 T6 122 T1R0 140 T3R0 166 T4R0 nuno

24 Inserir os registros de chaves 117, 135 e 155. Posição Inicial:
Índice de dados Índice de exten. 122 T1 132 T2 140 T3 166 T4 122 T1R0 132 T2R0 140 T3R0 166 T4R0 T1 T2 T3 T4 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 Trilhas de dados Seqüencial indexado Trilhas de extensão T5 T6 Posição após inseridos os registros de chaves 117, 135 e 155: Índice de dados Índice de exten. 118 122 132 137 140 166 161 T1 T5R1 T2 T3 T4 T2R0 T5R2 T5R3 T1 T2 T3 T4 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 Trilhas de dados Seqüencial indexado Trilhas de extensão T5 T6 122 140 166 T1R0 T2R0 T3R0 nuno

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. nuno

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 nuno

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. nuno

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). nuno

29 Organização indexada nuno

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 nuno

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. nuno

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 nuno

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ística Um endereço para um ou mais valores de chaves. nuno

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. nuno

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. nuno

36 Endereçamento Direto Exemplo de cálculo de Hash
Considerar um arquivo contendo registros identificados pelas chaves de nºs 1 a e capaz de armazenar 10 registros por trilha. Para localizar o registro de chave 6.349: / 10 = 634 (resto: 9). Localização relativa: trilha 634 –> reg. 10 (9+1). nuno

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. nuno

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. nuno

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. nuno

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. nuno

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 nuno

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 nuno

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ó nuno

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 nuno

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. nuno

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. nuno

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 nuno

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 5 021 Maria Lagoa da Prata 6 034 Célia Bom Despacho 7 042 Lúcia nuno

49 Listas Invertidas Lista invertida por curso: Direito 2 7 Psicologia 3
Sistemas informação 1 4 5 6 nuno

50 Listas Invertidas Lista invertida por cidade: Arcos 1 4 Bambuí 2 BH 3
Bom Despacho 6 Lagoa da Prata 5 nuno

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? nuno

52 Exercícios nuno


Carregar ppt "Organização básica de arquivos"

Apresentações semelhantes


Anúncios Google