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

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

Organização de Arquivos e Indexação

Apresentações semelhantes


Apresentação em tema: "Organização de Arquivos e Indexação"— Transcrição da apresentação:

1 Organização de Arquivos e Indexação

2 Estruturas de Arquivos
Registros Forma de organização dos dados Coleção de campos ou itens relacionados Tipo de Registro Coleção de nomes de campos e seus respectivos tipos de dados struct Empregado { char nome[30]; char matricula[6]; int salario; }

3 Estruturas de Arquivos
Um arquivo é uma seqüência de registros Quando todos os registros de um arquivo possuem exatamente o mesmo tamanho em bytes, o arquivo é dito formado por registros de tamanho fixo Se registros diferentes em um arquivo possuem tamanhos diferentes, o arquivo é formado por registros de tamanho variável

4 Estruturas de Arquivos
Registros com tamanho variável Registros de um mesmo tipo de registro Com um ou mais campos de tamanho variável Com um ou mais campos multivalorados Com um ou mais campos opcionais Registros de diferentes tipos de registro Arquivos mistos Exemplos Registros de alunos com registros de notas Registros de clientes com registros de pedidos

5 Estruturas de Arquivos
Figura Três formatos de armazenamento de registro. (a) Registro de tamanho fixo com seis campos e tamanho de 71 bytes. (b) Um registro com dois campos de tamanho variável e três campos de tamanho fixo. (c) Um registro de tamanho variável com três tipos de caracteres separadores.

6 Organização de Registros
Divisão de registros em blocos Bloco Unidade de transferência de dados entre o disco e a memória Geralmente, um bloco possui diversos registros Fator de blocagem (de divisão em blocos) B é o tamanho do bloco em bytes R é o tamanho do registro em bytes

7 Organização de Registros
Divisão de registros em blocos Espaço não utilizado Organização Não-Spanned Registros de tamanho fixo limitados a apenas um bloco, onde B >R Organização Spanned Registros podem se fragmentar por mais de um bloco (unidos por ponteiros) Usada sempre que o registro > bloco

8 Organização de Registros
Figura Tipos de organização de registro. (a) Nâo-spanned. (b) Spanned.

9 Alocação de Blocos Alocação Consecutiva Alocação Encadeada Clusters
Blocos são alocados consecutivamente no disco Alocação Encadeada Cada bloco de arquivo contém um ponteiro para o próximo bloco de arquivo Facilita expansão, mas torna lenta a leitura do arquivo inteiro Clusters Grupos encadeados de blocos consecutivos

10 Estruturas de Armazenamento
Arquivos de Registros Desordenados Tipo de organização mais simples e básica Registros estão posicionados segundo a ordem pela qual foram inseridos Novos registros são acrescentados ao final do arquivo (muito eficiente) Pesquisa de um registro é seqüencial (ineficiente) Chamado arquivo pilha (heap file) Arquivos seqüenciais

11 Estruturas de Armazenamento
Arquivos de Registros Ordenados Registros são ordenados fisicamente a partir dos valores de um campo (campo de classificação) ou da chave (chave de classificação) Novos registros são acrescentados na posição correta (inclusão é dispendiosa) Pesquisa pelo campo de classificação é binária Chamado arquivo ordenado (sorted file) Arquivos seqüenciais

12 Estruturas de Armazenamento
Hashing Acesso muito rápido aos registros sob uma condição de igualdade em um campo (campo de hash) ou na chave (chave de hash) Usa função hash que é aplicada no campo de hash de um registro, gerando o endereço do bucket (bloco de disco ou cluster de blocos consecutivos) onde o arquivo está armazenado A busca dentro do bloco é feita na memória principal Chamado arquivo hash (hash file)

13 Hashing Interno

14 Estruturas de Armazenamento
Hashing Externo

15

16 Índices Um índice é uma estrutura de acesso auxiliar usado para aumentar a velocidade da recuperação de registros na resposta a certas condições de busca Independente da estrutura de armazenamento (não ordenada, ordenada,hashed) Índice fornecem caminhos de acesso secundários ou alternativos aos registros a partir de campos de indexação previamente definidos

17 Índices Como encontrar um livro em uma biblioteca pelo título?
Sem catálogo de títulos Procurar em todas as estantes Com catálogo de títulos Consultar o catálogo de títulos Fichas em ordem alfabética Localizar a estante onde se encontra o livro Pesquisar livro nas prateleiras

18 Índices Como recuperar os clientes de nome ‘Eduardo’? Sem índice
Busca seqüencial em todas as linhas da tabela Com índice no campo ‘nome’ Procurar o valor desejado no índice Valores ordenados no índice, viabilizam busca eficiente Obter um endereço do registro correspondente no arquivo físico Ponteiro para o bloco de disco que contém o dado desejado Recuperar o registro Ler o bloco do disco e recuperar o registro dentro do bloco

19 Tipos de Índices Índices com chave de busca única
Índice primário Índice clustering Índice secundário Índice multinível Índice multinível dinâmico: B-Trees e B+-Trees Índices com múltiplas chaves de busca Índice ordenado em múltiplos atributos Hashing particionado e grid files Índices espaciais

20 Tipos de Índices Índice primário Índice clustering Índice secundário
Especificado sobre a chave de classificação de um arquivo ordenado de registros Valores distintos para o campo de classificação Índice clustering Especificado sobre o campo de classificação de um arquivo ordenado de registros Valores repetidos para o campo de classificação Índice secundário Especificado sobre outros campos que não são os campos ou chave de classificação

21 Tipos de Índices Densos Esparsos (Não-densos)
Possuem uma entrada no índice para cada valor do campo de classificação e, portanto, uma entrada para cada registro do arquivo de dados Esparsos (Não-densos) Possuem entradas no índice para apenas alguns dos valores do campo de classificação Os demais são percorridos sequencialmente no bloco a partir do maior valor que seja menor ou igual ao campo de classificação

22 Índice primário Um índice primário é um arquivo ordenado cujos registros são de tamanho fixo e contêm dois campos Valor da chave de classificação (ordenação) Apontador para um bloco de disco (endereço do bloco) Existe uma entrada no índice para cada bloco no disco Cada entrada contém a chave do primeiro registro contido no bloco (âncora do bloco) Índices primários são inerentemente esparsos

23

24 Índice primário Inclusões e Exclusões
Grande problema para índices primários, pois precisam manter a ordenação Alterações causarão a mudança das âncoras Possível solução Usar blocos de overflow para evitar o rearranjo na inclusão Marcar registros excluídos Reorganização ocorrerá na reconstrução do índice

25 Índice clustering Tipo diferente de índice para acelerar a recuperação quando os registros de um arquivo são ordenados fisicamente com base em algum valor que não é chave (não possui valor distinto para cada registro) Esse valor é denominado campo de clustering Precisa existir uma entrada no índice para cada valor distinto do campo de classificação O apontador indica o primeiro bloco no qual registros contendo aquele valor poderão ser encontrados Índices clustering também são esparsos

26 Figura Um índice clustering para o campo NUM_DEPARTAMENTO, que não é campo-chave de classificação, de um arquivo EMPREGADO.

27 Figura Um índice clustering com um grupo (cluster) separado de blocos para cada grupo de registros que compartilhem o mesmo valor de campo clustering.

28 Índice Secundário Um índice secundário provê uma forma secundária de acesso a um arquivo para o qual um índice primário já exista Tanto pode ser referente a uma chave candidata, quanto a um atributo cujo valor possa se repetir O índice é um arquivo ordenado com dois campos Valor da chave de classificação (ordenação) Apontador para um bloco de disco (endereço do bloco) Podem existir diversos índices secundários para o mesmo arquivo com vários campos de indexação

29 Índice Secundário Índice para chave secundária (candidata)
Não é possível usar âncoras de bloco, pois o arquivo não está fisicamente ordenado pela chave de classificação Uma entrada no índice para cada registro do arquivo (índice denso) que pode apontar para o registro ou bloco Consome mais espaço em disco e mais tempo de acesso por causa do maior número de entradas Caso não existisse o índice secundário, seria necessário percorrer todo o arquivo

30 Figura Um índice secundário denso (com ponteiros de bloco) em um campo não é chave de classificação de um arquivo.

31 Índice Secundário Índice para campo que se repete (não-chave)
Opção 1: incluir várias entradas no índice (duplicadas), uma para cada registro (índice denso) Opção 2: manter registros de tamanho variável no índice com um campo multivalorado para armazenar os ponteiros para cada bloco onde há um registro para o campo de indexação Opção 3: manter uma entrada para cada valor distinto, mas apontar para um bloco contendo ponteiros para as várias ocorrências do valor no arquivo A opção 3 é a mais usada!

32 Figura Um índice secundário (com ponteiros de registro), em um campo que não é campo-chave, implementado em um nível adicional, indireto, de forma que as entradas de índice sejam de tamanho fixo e possuam valores de campo únicos.

33 Atualização de Índices
Independente do tipo de índice utilizado, ele deve ser atualizado sempre que um registro for inserido ou removido do arquivo de dados Inclusão Exclusão Localizar o registro Incluir o registro, caso não exista Remover o registro, caso exista Atualizar o índice

34 Quando criar índices? Quando criar um índice
Para acelerar a recuperação dos dados Para impor exclusividade aos registros Restrição de chave primária, cria um índice único Quando não criar um índice Consome espaço em disco Acarreta sobrecarga em operações de atualização (INSERT, UPDATE, DELETE)

35 Quais colunas indexar? Conhecendo os dados Determinando a seletividade
Determinando a densidade Determinando a distribuição de dados Diretrizes sobre indexação

36 Quais colunas indexar? Conhecendo os dados A estrutura física e lógica
As características dos dados Como os dados são usados Os tipos de consulta feitos A freqüência das consultas normalmente feitas

37 Quais colunas indexar? Determinando a seletividade
Seletividade é o percentual de linhas de uma tabela retornadas por uma query Alta seletividade (Bom para usar índices!) Alta restrição e baixo percentual Alta seletividade member_no 1 2 . last_name first_name Randall Flood Joshua Kathie 10000 Anderson Bill SELECT * FROM member WHERE member_no > 9001 = 10% Número de registros que atendem aos critérios Número total de registros em uma tabela =

38 Quais colunas indexar? Determinando a densidade
Densidade é o percentual de linhas duplicadas em um índice Se os dados ou a consulta tem baixa seletividade, geralmente a densidade é alta Alta densidade Um índice com um grande número de duplicatas Um índice único tem baixa densidade Prefira criar índices com baixa densidade

39 Quais colunas indexar? Determinando a densidade Alta densidade
last_name first_name Randall . Joshua Cynthia Tristan Ota Lani SELECT * FROM member WHERE last_name = ‘Ota’ Baixa densidade SELECT * FROM member WHERE last_name = ‘Randall’ Alta densidade

40 Distribuição não-homogênea (standard) de valores
Quais colunas indexar? Determinando a distribuição de dados Usar índices quando há uma distribuição não homogênea de valores Distribuição não-homogênea (standard) de valores F - J A - E K - O P - U V - Z Nome Número de Nomes

41 Quais colunas indexar? Diretrizes sobre indexação
Colunas que devem ser indexadas Chaves primárias e estrangeiras Colunas pesquisadas para a localização de faixas Colunas utilizadas em ORDER BY Colunas agrupadas durante a agregação

42 Quais colunas indexar? Diretrizes sobre indexação
Colunas que não devem ser indexadas As que sejam raramente referenciadas em uma consulta As que contenham poucos valores únicos (sexo!) Baixa seletividade Alta densidade As que sejam definidas com os tipos de dados BLOB (binary large objects)

43 Melhores Práticas Crie índices em colunas que unem tabelas
Use índices para impor exclusividade Examine os índices e descarte aqueles que não estão sendo usados Evite chaves com muitas colunas Crie índices em colunas que unem tabelas Crie índices que ofereçam suporte aos argumentos de pesquisa


Carregar ppt "Organização de Arquivos e Indexação"

Apresentações semelhantes


Anúncios Google