61
Estruturas de Indexação Profa. Maria Claudia Reis Cavalcanti Prof. Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da Professora Ana Maria de C. Moura – IME e Maria Luiza Campos - UFRJ

Estruturas de Indexação

  • Upload
    gusty

  • View
    44

  • Download
    0

Embed Size (px)

DESCRIPTION

Estruturas de Indexação. Profa. Maria Claudia Reis Cavalcanti Prof. Ronaldo Ribeiro Goldschmidt. Material adaptado das notas de aula da Professora Ana Maria de C. Moura – IME e Maria Luiza Campos - UFRJ. Índices. - PowerPoint PPT Presentation

Citation preview

Page 1: Estruturas de Indexação

Estruturas de Indexação

Profa. Maria Claudia Reis Cavalcanti

Prof. Ronaldo Ribeiro Goldschmidt

Material adaptado das notas de aula da Professora Ana Maria de C. Moura – IME e Maria

Luiza Campos - UFRJ

Page 2: Estruturas de Indexação

2

Índices São estruturas de dados (arquivos) adicionais àquelas

contendo os registros de dados (vide tópico anterior) Provêm caminhos de acesso alternativos aos

registros sem afetar a disposição física dos registros no arquivo

Um índice acelera a recuperação de registros baseada no campo de indexação Campo de indexação ou campo chave: atributos indexadores

usados para construir o índice e para encontrar o end. do registro buscado.

Chave de busca: outro termo utilizado para fazer referência ao conjunto de campos usado para indexação de um arquivo. Não confundir com o conceito de chave.

A princípio, qualquer subconjunto de campos do registro de um arquivo pode compor uma chave de busca para construção de um índice sobre tal arquivo.

Page 3: Estruturas de Indexação

3

ÍndicesO que é um índice: Estrutura de dados interna ao SGBD que permite acesso mais rápido às informações do banco.

Exemplo (simplificado):

1SMITH

2JONES

4CLARK

3BLAKE

5ADAMS

Endereço (Bloco)Nome

Índice sobre o atributo Nome de Fornecedor

ATENAS30ADAMSF5

LONDRES20CLARKF4

PARIS30BLAKEF3

PARIS10JONESF2

LONDRES20SMITHF1

CIDADESTATUSNOMECODIGOFornecedor

Observação: Índices devem ser utilizados com critério pois afeta desempenho das consultas e das demais operações.

Page 4: Estruturas de Indexação

4

Índices

Vantagens:Acesso mais rápido ao registro quando a

procura é sobre campo indexado.Menos I/O: arquivo de índice menor que

o arquivo de dados.Desvantagens:

Inclusão, exclusão e alteração ficam mais lentas.

Mais espaço de armazenamento.

Page 5: Estruturas de Indexação

5

Tipos de Índices

Ind. Primário x Índ. Secundário x Índ. Clustering

Índice Denso x Índice não Denso (Esparso)

Índice de um único nível x índices de Múltiplos Níveis

Índices Invertidos

Page 6: Estruturas de Indexação

6

Tipos de Índices

Um Índice Primário é construído sobre o campo-chave de classificação de um arquivo ordenado de registros Lembrando que: campo-chave de classificação é o campo

usado para ordenar fisicamente os registros do arquivo no disco, e cada registro deve possuir um valor único para o campo

Um Índice Clustering é construído sobre um campo de ordenação que não é um campo chave e por isso, diversos registros no arquivo podem ter o mesmo valor para este campo

Um Índice Secundário é construído sobre quaisquer outros campos que não os de ordenação física do arquivo.

Obs: Um arquivo pode ter, no máximo, um campo de classificação física, portanto, ele só terá um índice primário ou um índice de cluster, mas não ambos.

Page 7: Estruturas de Indexação

7

Um Índice Denso possui uma entrada no índice para cada registro no arquivo de dados.

• Os registros podem estar armazenados em qualquer ordem no arquivo.

Um Índice Não Denso (índice esparso) consiste num índice para blocos ou páginas do arquivo, cada um dos quais contendo um grupo de registros.

• Os registros precisam estar organizados segundo o atributo

indexador.

Tipos de Índices

Page 8: Estruturas de Indexação

8

Tipos de Índices

Ashby, 25, 3000

Smith, 44, 3000

Ashby

Cass

Smith

22

25

30

40

44

44

50

Índice Não Densosobre NOME

Arquivo de Dados

33

Bristow, 30, 2007

Basu, 33, 4003

Cass, 50, 5004

Tracy, 44, 5004

Daniels, 22, 6003

Jones, 40, 6003

Índice Densosobre Idade

(ordenado por Nome)

Page 9: Estruturas de Indexação

9

Índices Primários

Registros com 2 campos: Campo de mesmo domínio da chave de classificação do

arquivo de dados Ponteiro para um bloco de disco (end. bloco)

Uma entrada de índice para cada bloco Em cada entrada do índice, o valor do campo chave contém o

valor do mesmo campo no primeiro registro do bloco – registro âncora.

No. de entradas do índice = No. de blocos que ocupa o arquivo É um índice esparso Precisa de muito menos blocos que o arquivo que indexa,

portanto uma busca binária em um arquivo de índices exige muito menos acessos a blocos

Page 10: Estruturas de Indexação

10

Page 11: Estruturas de Indexação

11

Exemplo 1 – Sem Índices

r = 30.000 registros bloco B = 1.024 bytes. registro R = 100 bytes (reg. tamanho fixo) bfr(fator de blocagem) = B/R = 1024/100 = 10 registros por bloco número total de blocos: b = r/bfr = 30000/10 = 3000 blocosUma busca binária no arquivo necessitaria aproximadamente log2b = log2 3000 = 12 acessos ao bloco (supondo arquivo ordenado).Uma busca linear, precisaria, no pior caso, de 3000 acessos (registro desejado no último bloco)

Page 12: Estruturas de Indexação

12

Exemplo 2 – com Índice Primário

Cont. Exemplo 1 chave de ordenação: V = 9 bytes ponteiro (para arquivo) : P = 6 bytes, cada entrada no índice :Ri = 9 + 6 = 15 bytes;

fator de blocagem para o índice bfri = B/Ri = 1024/15 = 68 entradas por bloco.

n0 total de entradas no índice = n0 de blocos do arq. dados: ri/bfri = 3000/68 = 45 blocos.

Utilizando pesquisa binária no índice: log2 bi = log2 45 = 6 acessos a bloco.

pesquisa do registro usando o índice: 6 + 1 = 7 acessos (acesso adicional ao bloco no arquivo de dados), contra 12 da pesquisa binária sobre o arquivo de dados.

Page 13: Estruturas de Indexação

13

Índices Clustering

Campo de indexação não é campo chave Pode haver valores repetidos É chamado de campo de agrupamento

Registros com 2 campos: Campo de mesmo domínio do campo de indexação do arquivo de

dados Ponteiro para um bloco de disco (end. bloco)

Há uma entrada no índice para cada valor distinto que o campo de indexação assume Índice esparso Não necessariamente o registro âncora contém o mesmo

valor do campo de indexação do índice Para aliviar o problema da inclusão usa-se reservar um

bloco ou conj de blocos para cada valor distinto

Page 14: Estruturas de Indexação

14

Page 15: Estruturas de Indexação

15

Page 16: Estruturas de Indexação

16

Indices Secundários

Pode haver vários para um mesmo arquivo Estrutura similar aos outros tipos: 2 campos Pode ser construído

sobre chave-candidata – valor único por registro Uma entrada para cada entrada do índice (índice denso),

pois como o arquivo não está ordenado por chave-candidata, não podem ser utilizadas âncoras de bloco

Como há um maior número de entradas, então é maior tempo de busca em relação ao índice primário

Mas comparativamente ao arquivo não indexado, o ganho é maior, pois sem o índice seria necessário realizar uma busca linear

Page 17: Estruturas de Indexação

17

Page 18: Estruturas de Indexação

18

Indices secundários (cont.)

Também pode ser construídoSobre campo não-chave – com valores

repetidos Diversas entradas no índice com um mesmo valor Uma outra opção seria manter registros de

tamanho variável nas entradas de índice (campo multivalorado), com vários endereços de bloco para um dado valor de indexação

A opção mais usada mantém registros de índice fixos e acrescenta mais um nível com os endereços de bloco

Page 19: Estruturas de Indexação

19

Page 20: Estruturas de Indexação

20

Exemplo 3 – com Índice Secundário

r = 30.000 registros de R = 100 bytes ; B = 1.024 bytes (tamanho do bloco); n0 blocos(b) = 3.000; busca linear no arquivo de dados*: b/2= 3000/2 = 1.500 acessos (média); Utilizando um índice secundário tamanho campo chave V = 9 bytes; ponteiro de bloco (P) = 6 bytes; tamanho registro(índice) Ri = 9 + 6 = 15 bytes;

fator de blocagem (índice) bfri = B/Ri = 1024/15 = 68

número total de blocos (índice) bi = ri/bfri = 30000/68 = 442 blocos. (arq. denso, onde o n0 de entradas = n0 de registros no arq. de dados) busca binária : log2 bi = log2 442 = 9 acessos a bloco pesquisa num registro 9 + 1 = 10 acessos (acesso adicional ao bloco)

10 contra 1500 acessos !!!

*: dados não ordenados

Page 21: Estruturas de Indexação

21

Resumo (1)

Campo de Indexação Utilizado para Classificar o Arquivo

Campo de Indexação Não Utilizado para Classificar o Arquivo

Campo de indexação é chave (não admite repetição de valor)

Índice Primário Índice Secundário (sobre chave candidata)

Campo de indexação não é chave (admite repetição de valor)

Índice Clustering Índice Secundário (sobre qualquer atributo não chave)

Page 22: Estruturas de Indexação

22

Resumo (2)

Tipo de Índice Número de Entradas de Índice (Primeiro Nível)

Denso ou Esparso

Âncora de Bloco no Arquivo de Dados

Primário Número de blocos do arquivo de dados

Esparso Sim

Clustering Número de valores distintos do campo de indexação

Esparso Sim/Não (*)

Secundário (sobre Chave Candidata)

Número de registros do arquivo de dados

Denso Não

Secundário (sobre campo que não é chave)

Número de registros

ou número de valores distintos do campo de indexação

Denso ou Esparso

Não

(*) – Sim, se todo valor distinto do campo de indexação iniciar um novo bloco; Não, caso contrário

Page 23: Estruturas de Indexação

23

Índices Invertidos

Emp(nome,sexo, est._civil, ....)Existe um índice secundário sobre o

20 e 30 atributos de Emp, p/ os quais o valor do atributo existe.

Consiste de um conj. de pares palavra (chave de pesquisa)-ponteiro, de tal forma que o índice aponta p/ as ocorrências onde aquele valor ocorre (=Verd)

Page 24: Estruturas de Indexação

24

Exemplo

feminino

Claudia....

Beatriz...

divorciado

Paulo....

Page 25: Estruturas de Indexação

Um índice de um único nível é um arquivo ordenado.

Por isso, é possível criar um índice não denso sobre um índice. Criamos assim um índice de dois níveis.

Esse processo pode ser repetido criando-se um índice de múltiplos níveis, ou uma estrutura de árvore.

Índices de múltiplos níveis (1)

Page 26: Estruturas de Indexação

26

Page 27: Estruturas de Indexação

Obs: Esta estrutura é mais eficiente pq: A busca em um índice de um nível leva Log 2 bi acessos

A busca em um índice multinível leva Log brfi bi acessos

Cada nível reduz o n. de entradas do nível anterior dividindo-o por bfri

Pode-se construir índices multiníveis sobre qq índice seja ele primário, clustering ou secundário

O problema com esta abordagem surge qdo precisamos incluir e excluir: pode gerar desbalanceamento

É necessária uma estrutura que se reorganize na medida da necessidade. Ex: árvores B e B+ - que são classificadas como índices multiníveis dinâmicos

Índices de múltiplos níveis (2)

Page 28: Estruturas de Indexação

28

Árvores

A

B C D

FE G H I

J K

nó raiz (nível 0)

nível 1

nível 2

nível 3

Árvore de altura 3

Sub-árvore de altura 2nó folha

Page 29: Estruturas de Indexação

29

Árvores de Busca Usada p/ pesquisa de registro, a partir do valor de um dos campos Uma árvore de ordem p é uma árvore em que cada nó contém no

máximo p-1 valores de busca e p ponteiros na ordem< P1, K1, P2, K2, ... , Pq-1, Kq-1, Pq >

onde: q p, Pi é um ponteiro para um nó filho (ou um ponteiro nulo) Ki é um valor de pesquisa (todos os valores são distintos).

Restrições:

Dentro de cada nó, K1 < K2 < ... < Kq-1

Para todos os valores X em uma subárvore apontada por Pi

Ki-1 < X < Ki para 1 < i < q

X < Ki para i = 1

Ki-1 < X para i = q

Page 30: Estruturas de Indexação

30

P1 K1 ... Ki-1 Pi Ki ... Kq-1 Pq

X X X

Ki-1 < X < Ki Kq-1 < XX < K1

5

3

1

6 9

7 8 12

Um nó de umaárvore de pesquisa

Uma árvore depesquisa de ordem p = 3

Page 31: Estruturas de Indexação

31

Índices Multiníveis Dinâmicos Árvores de Busca

De ordem p (máximo de endereços apontados por um nó) <P1,k1,P2,k2, …kq-1, Pq> onde q <= p k1 < k2 <… < kq-1

Pode haver ponteiros nulos

Cada nó da árvore pode ser armazenado em um bloco Um ponteiro Pi pode apontar para registros ou blocos de

registro que contenham um dado valor ki

Page 32: Estruturas de Indexação

32

Estruturas do tipo Árvore B

São estruturas balanceadas de múltiplos níveis, cada bloco do índice contendo espaço para um número fixo de ponteiros.

Constituem estruturas dinâmicas, cujos nós se re-arranjam automaticamente com inserções e deleções de forma a manter a estrutura balanceada.

B significa Balanced, pois todas as folhas estão a mesma distância do nó raiz.

Assim as Árvores B garantem uma eficiência previsível.

Permitem rápida recuperação de dados tanto randômica quanto sequencialmente.

Page 33: Estruturas de Indexação

33

Exemplo de Árvore-B

Page 34: Estruturas de Indexação

34

Árvore B: Balanceamento

Ao tentar inserir em um nó completo Se for raiz, o nó se divide em dois nós de nível 1,

onde somente o valor do meio se mantém na raiz.

Se não for raiz, o nó se divide em dois, e o valor do meio sobe para o nó pai, e se o nó pai estiver completo, propaga-se a divisão até chegar a raiz

Ao excluir um nó com metade da capacidadeEle é combinado com seus vizinhos

Page 35: Estruturas de Indexação

35

Inserções e Deleções em Árvores B

nó de uma árvore Bde ordem p = 3

Valores a inserir: 8,5,1,7,3,12,9,6,4

Page 36: Estruturas de Indexação

36

Inserções e Deleções em Árvores B

5 8 insere 8, 5insere 1 (overflow)

1

Page 37: Estruturas de Indexação

37

Inserções e Deleções em Árvores B

5

1 8

separa, novo nível

Page 38: Estruturas de Indexação

38

Inserções e Deleções em Árvores B

5

1 3 7 8

insere 7, 3insere 12 (overflow)

12

Page 39: Estruturas de Indexação

39

Inserções e Deleções em Árvores B

5 8

1 3 7 12

separa, mesmo nível

Page 40: Estruturas de Indexação

40

Inserções e Deleções em Árvores B

5 8

1 3 6 7 9 12

insere 9, 6insere 4 (overflow)

4

Page 41: Estruturas de Indexação

41

Inserções e Deleções em Árvores B

5

3 8

1 4 6 7 9 12

separa e propaga

Page 42: Estruturas de Indexação

42

Exemplo 4

Campo de busca V = 9 bytes Tamanho do bloco B = 512 bytes Tamanho do Ponteiro de Registro Pr = 7 bytes Tamanho do Ponteiro de Bloco P = 6 bytes Cálculo da ordem p de uma árvore: cada nó pode

conter no máximo p ponteiros de dados e p-1 valores (p * 6) + ((p-1)*(7+9) <= 512 (22 * p) <= 528 Escolhe-se p de modo que se aproveite bem o bloco (23) Poderia ser 24, mas reserva-se espaço no bloco para

informações adicionais como o número q de entradas no nó

Page 43: Estruturas de Indexação

43

Estruturas do tipo Árvore B+

Há diversas variedades de árvores B, a maior parte das implementações usa a árvore B+.

Na árvore B+ apenas os nós folha têm ponteiros para os registros (ou blocos de registros) de dados.

Uma árvore B+ de grau m tem as seguintes propriedades: Todo nó tem entre [m/2] e m filhos

(onde m é um inteiro > 3 e usualmente ímpar), exceto a raiz que não tem um limite inferior (m pode ser 0).

Todas as folhas estão no mesmo nível, ou seja, a mesma distância da raiz.

Um nó não folha com n filhos contém n-1 chaves.

Page 44: Estruturas de Indexação

44

Exemplo de Árvore B+

Ponteiro para afolha com menor chave maior que Kq-1

Page 45: Estruturas de Indexação

45

1250

0625 1000 1425 2000

0350 0625

1300

1250 1300 1425 1600 20000350 0625 1000

1600

1425 20001000 1250

Folhas

Registros de Dados

Um exemplo simples de Árvore B+

Page 46: Estruturas de Indexação

46

5 8

Insere 8, 5Tenta inserir 1 (overflow)

árvore B+ de ordem p = 3 p folha = 2

1

Inserir: 8,5,1,7,3,12,9,6,4

Inserções e Deleções em Árvores B+

Page 47: Estruturas de Indexação

47

5

1 5 8

separação:novo nível

Inserções e Deleções em Árvores B+

Page 48: Estruturas de Indexação

48

5

1 5 7 8

insere 7tenta inserir 3 (overflow)

3

Inserções e Deleções em Árvores B+

Page 49: Estruturas de Indexação

49

3 5

1 3 5 7 8

separaçãomesmo nível

Inserções e Deleções em Árvores B+

Page 50: Estruturas de Indexação

50

3 5

1 3 5 7 8

tenta inserir 12 (overflow)

12

Inserções e Deleções em Árvores B+

Page 51: Estruturas de Indexação

51

5

3 8

7 8 1 3 5 12

separação,propagação,novo nível

Inserções e Deleções em Árvores B+

Page 52: Estruturas de Indexação

52

5

3 8

7 8 1 3 5 9 12

insere 9tenta inserir 6 (overflow)

6

Inserções e Deleções em Árvores B+

Page 53: Estruturas de Indexação

53

5

3 7 8

8 1 3 5 9 12 6 7

separação,mesmo nível

Inserções e Deleções em Árvores B+

Page 54: Estruturas de Indexação

54

5

3 7 8

8 1 3 4 5 9 12 6 7

insere 4

Inserções e Deleções em Árvores B+

Page 55: Estruturas de Indexação

55

Eliminando 8 5

3 7

1 3 4 5 9 12 6 7

Inserções e Deleções em Árvores B+

Page 56: Estruturas de Indexação

56

Eliminando 3 5

1 4

4 6 7 1 5

7

9 12

Inserções e Deleções em Árvores B+

Page 57: Estruturas de Indexação

57

Exemplo 5

Campo de busca V = 9 bytes Tamanho do bloco B = 512 bytes Tamanho do Ponteiro de Registro Pr = 7 bytes Tamanho do Ponteiro de Bloco P = 6 bytes Cada nó interno tem no máximo p ponteiros de dados e p-1

valores e cada nó folha tem no máximo pfolha ponteiros (p * 6) + ((p-1)*(9) <= 512 (15 * p) <= 521 Escolhe-se p de modo que se aproveite bem o bloco (34)

Cabem mais entradas que na árvore B correspondente (pfolha * (7+ 9)) + 6 <= 512 16 * pfolha <= 506 Escolhe-se pfolha = 31 Também no caso da árvore B+ se reserva um espaço do bloco

para informações adicionais

Page 58: Estruturas de Indexação

58

Bons Candidatos

Bons/ Maus candidatos para índice Examinar as consultas e operações sobre as relações

Atributos da Primary key Atributos usados em junções (chaves estrangeiras) Atributos usados na cláusula WHERE: escolha aqueles

usados em mais consultas ou nas consultas consideradas críticas

Atributos usados na ordenação do resultado das consultas Atributos onde agregados são frequentemente calculados

Maus Candidatos Atributos com alta taxa de atualização Atributos com poucos valores distintos, com má distribuição

de valores Atributos muito longos

Page 59: Estruturas de Indexação

59

Resumo

Diferentes estruturas de armazenamento existem, cada uma adequada para determinados requisitos

É comum se ter diversos índices definidos sobre um arquivo , cada qual com diferentes campos indexadores. No entanto, se o arquivo for muito dinâmico, a manutenção dos índices torna-se cara.

O projeto físico é altamente dependente do SGBD em questão, pois normalmente variam bastante seus mecanismos de alocação e gerenciamento de páginas e áreas de disco, além das alterativas de estruturas oferecidas.

Após a etapa inicial de implantação de um BD, seu uso fornece informações valiosas para que se faça o tuning do mesmo, refinando o projeto inicial.

Page 60: Estruturas de Indexação

60

ResumoArquivos HEAP são bons para tabelas

pequenas ou temporáriasArquivos ordenados ou baseados em

estruturas de árvore são adequados para buscas do tipo intervalo (>, etc.) ou segundo a ordem do atributo de ordenação. Também servem para buscas baseadas em igualdade.

Arquivos Hashed são bons para seleções baseadas em igualdade

Page 61: Estruturas de Indexação

61

Atividades Práticas

Exercícios do livro-texto (Elmasri e Navathe): 14.1 a 14.7, 14.14 a 14.16.

• Cap. 14 – Elmasri e Navathe

• Cap. 12 – Silberschatz e Korth

Estruturas de Indexação

Leituras Recomendadas