MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf ·...

57
Módulo V: Indexação em Banco de Dados (Aulas 1, 2 e 3) Clodis Boscarioli Banco de Dados I 2007

Transcript of MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf ·...

Page 1: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Módulo V: Indexação em Banco de Dados

(Aulas 1, 2 e 3)

Clodis Boscarioli

Banco de Dados I

2007

Page 2: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Agenda:

� Estruturas de Índices;� Conceitos;� Tipos de Índices:

� Primários;� Secundários;� Clustering;� Multiníveis;� Árvore B e B+;� Hash;

� Exemplos.

Page 3: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índice - Conceitos

� Estrutura de dados que recebe como entradauma propriedade de registro (por exemplo, um valor de um ou mais campos) e encontra os registros com essa propriedade rapidamente;

� Um índice permite localizar um registro semter que examinar mais que uma pequenafração dos registros possíveis;

� O(s) campo(s) cujos valores o índice se baseia formam a chave de pesquisa;

Índices são, portanto, estruturas de dados auxiliares cujo único propósito é tornar mais rápido o acesso a registros baseado em certos campos, chamados campos de indexação.

Blocos contendo registros

índice(valor)

Registros coincidentes

Page 4: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

� Índice primário - baseado na chave de ordenação;

� Índice de agrupamento (clustering) - baseado no campo de ordenação não-chave de um arquivo;

� Índice secundário - baseado em qualquer campo não ordenado de um arquivo;

� Índices multiníveis;

� Árvores B e B+;

� Tabelas Hash;

Estruturas de índices

Page 5: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices sobre Arquivos Seqüenciais

� Tipos de índices

10

20

30

40

50

60

Densos: uma entrada no arquivo de índices p/cada registro no arquivo de dados

Esparsos: apenas alguns registros de dados são representados no arquivo de índices

10

20

30

40

50

60

10

30

50

70

90

110

10

20

30

40

50

60130

150 70

80

Um índice denso sobre um arquivo de dados seqüenciais

Um índice esparso sobre um arquivo de dados seqüenciais

70

8070

80

Page 6: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Tipos de índices

� Índice Denso

� Seqüência de blocos contendo apenas as chaves dos registros e os ponteiros para os próprios registros

� Índice denso = (chave-ponteiro, registro)

� Índice Esparso

� Usa menos espaço de armazenamento que o índice denso ao custo de um tempo um pouco maior para localizar um registro dada a sua chave

� Índice esparso = (chave-ponteiro, blocos de dados)

Aponta para o 1o. registro do bloco

Page 7: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices Primários

� Modelo simples;

� Arquivo classificado (com dados) + arquivo de índices;

� Par (chave de pesquisa, ponteiro);

� Tuplas são classificadas pela chave primária;

� Útil quando a chave de pesquisa é a chave primária;

10

20

30

40

50

60 Arquivo seqüencial

Page 8: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índice primário para o campo-chave de classificação do arquivo.

Exemplo:

Page 9: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

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

Exemplo:

Page 10: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

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

Exemplo:

Page 11: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Fatores de eficiência do uso de índices

� O número de blocos de índices em geral é pequeno quando comparado com o número de blocos de dados;

� Tendo em vista que as chaves são classificadas, a pesquisa é rápida (pode-se usar um algoritmo de pesquisa binária);

� O índice pode ser pequeno o bastante para ser mantido permanentemente em buffers da memória principal. Nesse caso, uma pesquisa para uma determinada chave envolve apenas acessos à memória principal, sem precisar de operação de I/O.

Page 12: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices Secundários

O campo de indexação é um campo não ordenado do arquivo de dados. Podem haver muitos índices secundários para um mesmo arquivo.

Dois casos:

� O campo de indexação é um campo chave (às vezes chamado de chave secundária).

� O campo de indexação não é chave.

Page 13: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices Secundários

� É possível que mais de um registro tenha o valor da chave. Isso ocorre, por exemplo, quando a chave de pesquisa não é a chave primária;

� Solução: usar chave associada a um ponteiro para o primeiro dos registros com a chave K

� Vantagem: otimizar as consultas

10

20

30

40

10

10

10

20

30

30

40

40

Índice denso quando são permitidas chaves de pesquisa duplicadas

Mais de

um reg

istro com o

valor de

uma de

term

inad

a ch

ave

Page 14: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Outro Esquema para Índices Secundários

� A entrada de índice para um bloco de dados é a menor chave de pesquisa que é nova, isto é, a chave não apareceu em um bloco anterior;

� Se não há chave de pesquisa nova no bloco, então sua entrada de índice contém a única chave de pesquisa encontrada nesse bloco;

� Pode-se encontrar os registros de uma chave de pesquisa K examinando-se o índice p/a primeira entrada cuja chave é:� Igual a K� Menor que K, mas a próxima

chave é maior que K� Segue-se o ponteiro da entrada. Se for

encontrado pelo menos um registro com a chave de pesquisa K, então a busca continua em blocos adicionais, até encontrar todos os registros com a chave de pesquisa K.

10

20

30

30

40

50

10

10

10

20

20

3060

7030

30

Índice esparso indicando a nova chave de pesquisa mais baixa em cada bloco

40

50

Page 15: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

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

Exemplo:

Page 16: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices Secundários sobre Campos Não Chave

Vários registros do arquivo de dados podem ter o mesmo valor para o campo de indexação.

� Opção 1: Várias entradas no índice com o mesmo valor, uma para cada registro. Índice denso.

� Opção 2: Uma entrada no índice para cada valor X do campo de indexação, com lista de ponteiros. Índice não denso.

� Opção 3: Uma entrada no índice para cada valor X do campo de indexação, com um ponteiro para o bloco que contém a lista de ponteiros para os registros com o valor X. Índice não denso.

Page 17: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Sumário:

Tipos de Índices

Campo de Ordenação Campo Não Ordenado

Campo chave Índice Primário Índice Secundário

(Chave)

Campo Não Índice de Índice SecundárioChave Agrupamento (Não chave)

Page 18: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Tipo de Índice Número de Entradas Denso ou Esparso

Primário Número de blocos no Esparsoarquivo de dados

Agrupamento Número de valores Esparsodistintos do campo de indexação

Secundário Número de registros Denso(chave) no arquivo de dados

Secundário Número de registros Densono arquivo de dados

(não chave) ouNúmero de valores Esparsodistintos do campo de indexação

Propriedades dos Índices

Page 19: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

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

Exemplo:

Page 20: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices de Múltiplos Níveis

� Motivação: se o arquivode índices se torna muito grande para ser armazenado embloco de disco, é interessante indexá-lo em mais de um nível

� Vantagem: índice pequeno pode ser mantido em memória e o tempo de busca é mais baixo

� Desvantagem: muitosníveis de índices podem aumentar a complexidade do sistema (talvez seja melhor usar a árvore-B)

10

90

170

250

330

410

10

30

50

70

90

110

490

570

130

150

170

110

130

150

10

20

30

40

50

60

70

80

90

100

Esparso ou denso Esparso

Page 21: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

� Um índice multinível é um “Índice de índice”.

� Primeiro nível: arquivo ordenado pela chave de indexação, valores distintos, entradas de tamanho fixo.

� Demais níveis: índice primário sobre o índice do nível anterior e assim sucessivamente até que no último nível o índice ocupe apenas um bloco.

� Número de acessos a bloco: um a cada nível de índice, mais um ao bloco do arquivo de dados.

Índices de Múltiplos Níveis

Page 22: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índice primário de dois níveis que se parece com a organização ISAM (IndexedSequential Acess Method – Método de Acesso Seqüencial Indexado).

Exemplo:

Page 23: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Índices de Múltiplos Níveis

Problema dos índices multiníveis: índices são arquivos fisicamente ordenados, portanto, ineficientes na inserção e remoção.

Solução:

� Deixar algum espaço em cada um dos blocos para inserção de novas entradas.

� Estruturas de dados: Árvores B e suas variações.

Page 24: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Gerenciamento de índices na Modificações de Dados

� Problema com arquivos seqüenciais: com o tempo, um bloco não é mais suficiente para armazenar o conteúdo que era antes armazenado.

� Como controlar o problema?� Criar blocos de estouro (overflow). Blocos de estouro

não tem entradas em um índice esparso;� Inserir novos blocos na ordem seqüencial;� Se não houver lugar para inserir informação em um

bloco, alguma informação poderá ser transferida para outro bloco. Da mesma forma, blocos vazios poderão ser combinados.

Pode ser necessário modificar os índices

Page 25: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Árvores como Estruturas de ÍndicesA

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 grau 3

Sub-árvore de grau 2

Page 26: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

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

X X X

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

Um nó de umaárvore de pesquisa

5

3

1

6 9

7 8 12Uma árvore de

busca de ordem p = 3

Árvores de Busca

Page 27: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Árvores B

� Árvore de busca projetada com dois objetivos:� Manter a árvore balanceada e � Evitar o desperdício de espaço dentro de um nó, à custa de maior complexidade nos algoritmos de inserção e remoção.

� Introduzida por: R. Bayer e E. McCreight: “Organization and Maintenance of Large OrderedIndexes”, Acta Informatica, 1(3), Feb 1972.

� Revista por: D. Comer: “The Ubiquitous B-tree”, ACM Computing Surveys, 11(2), 1979.

Page 28: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Nó de uma árvore B

P1 K1 Pr1 P2 ... Ki-1 Pri-1 Pi Ki Pri ... Kq-1 Prq-1 Pq

X X X

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

dados dados

p/2 < q < p

Page 29: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Árvore B – Um Exemplo:

5

3 8

1 4 6 7 9 12

Page 30: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Capacidade das Árvores BObjetivo: Cada nó da árvore corresponde a um bloco de disco, por exemplo:

Tamanho da chave de pesquisa V = 9 bytesTamanho do ponteiro de blocos P = 6 bytesTamanho do bloco de disco B = 512 bytesCada nó pode ter no máximo:

p-1 ponteiros de dadosp-1 valores de chave de pesquisap ponteiros de árvore

(p-1) x 6 + (p-1) x 9 + p x 6 ≤ 51221 x p ≤ 527p = 25

Capacidade máxima em número de chaves:24 + 25 x 24 + 25 x 25 x 24 + 25 x 25 x 25 x 24 + ...

(extremamente improvável sob inserções e remoções aleatórias)

O número mínimo de chaves em um nó é p/2. Navathe et. Al (2005) afirmam que, por análise e simulação, após várias inserções e remoções em uma árvore B, os nós se estabilizam com aproximadamente 69% da capacidade. Nesta situação, separação e combinação de nós ocorrem muito raramente.

p x 0,69 = 27 x 0,69 = 17

capacidade média: 16 + 17 x 16 + 17 x 17 x 16 + 17 x 17 x 17 x 16 + ...

16 288 4.912 83.520

Page 31: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Árvores B+

Os nós de uma árvore-B+. (a) Nó interno de uma árvore-B+ com q - 1 valores de busca. (b) Nó folha de uma árvore-B+ com q - 1 valores de busca e q - 1 ponteiros de dados.

Page 32: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Capacidade de Árvores B+

Mesmo exemplo anterior:Tamanho da chave de pesquisa V = 9 bytesTamanho do ponteiro de blocos P = 6 bytesTamanho do bloco de disco B = 512 bytesCada nó pode ter no máximo:

p-1 valores de chave de pesquisap ponteiros de árvore

(p-1) x 9 + p x 6 ≤ 51215 x p ≤ 521p = 34 (maior do que na árvore B correspondente)

Capacidade média da árvore:

p x 0,69 = 34 x 0,69 = 23

22 + 23 x 22 + 23 x 23 x 22 + 23 x 23 x 23 x 22 + ...

22 528 12.166 279.840

ou seja, sua capacidade é bem maior que a de uma árvore B correspondente.

Page 33: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

5

3 7 8

8 1 3 4 5 9 12 6 7

Árvore B+ – Um Exemplo:

Ver slides inserção e remoçãoVer slides inserção e remoção

Page 34: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Um exemplo de inclusão em uma árvore-B+ de ordem p = 3 e pfolha = 2.

Exemplo:

Page 35: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Um exemplo de remoção em uma árvore-B+.

Exemplo:

Page 36: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash Estático

0

1

2

N-1

h

h(chave) mod N

chave

Páginas Primárias dos Buckets

Páginas de Overflow

Entradas do tipo <chave, * >

h = função hash

Índice Estruturado por Hash

Page 37: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash Estático - Busca

0

1

2

5

h

h(14) mod 6 = 2

14

Dados ordenados pela chave

Consultando < 14, * > h(x) = x

N = 6

4

3

….<14,* >

Page 38: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash Estático - Inserção

0

1

2

5

h

h(7) mod 6 = 1

7

Dados ordenados pela chave

Inserindo < 7, * >

4

3

< 7, * >

Cheia

Page 39: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash Estático - Remoção

0

1

2

5

h

h(25) mod 6 = 1

25

…Removendo < 25, * >

4

3

< 25, * >

Dados ordenados pela chave

Page 40: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Função Hash

� Componente importante da técnica Hash;

� Deve distribuir valores das chaves de maneira uniforme nos buckets;

� Número de buckets = N = parâmetro;

� h(x) = a*x + b

� a, b: parâmetros de ajuste

Page 41: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash - Custos

� Páginas primárias podem ser armazenadas em páginas de disco sucessivas.

� Caso não haja overflow:

�Busca requer 1 I/O

� Inserção e Remoção requerem 2 I/O

� Custo pode ser alto se existem muitas páginas de overflow.

Page 42: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Desvantagens do Hash Estático

� Número de buckets é fixo.

� Se arquivo encolhe muito, o espaço é desperdiçado, já que os buckets são fixos.

� Crescimento do arquivo produz longas cadeias de páginas de overflow, prejudicando o desempenho da busca.

Page 43: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash - Alternativas

� Alternativa 1:

� Periodicamente modificar a função hash e reestruturar todo o arquivo de modo a evitar páginas de overflow.

� «rehash» toma muito tempo.

� Indice não pode ser utilizado durante o processo de

«rehash».

� Alternativa 2: Hash dinâmicos

� Extensível

Page 44: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash Extensível

� Solução 1: quando algum bucket ficar cheio:

� Dobrar o número de buckets;

� Distribuir as entradas nos novos buckets.

Defeito: o arquivo todo deve ser lido e reorganizado e o dobro de páginas devem ser escritas.

� Solução 2: utilizar um diretório de ponteiros para os buckets:

� Dobrar o número de entradas no diretório.

� Separar somente os buckets que ficaram cheios.

Page 45: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Convenção de Notação

Bucket contendo entradas do arquivo de índice

25* 10* 25* 8* 8*

Representa a entrada <k,*>, onde h(k) = 25

h = função hash fixa

Page 46: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Diretório de Buckets

Diretorio: só armazena ponteiros para os buckets;número de registros = número de buckets;

Bucket 1

Contém todas as entradas <k,*> tais que h(k) mod N = 1

1

2

3

N

Bucket 2

Bucket 3

Page 47: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash - O que pode variar

� Função hash não varia.

� O número N de buckets varia.

� A medida que os buckets se enchem, estes se duplicam, e o diretório de buckets duplica.

� Resultado:

� se um único bucket duplica, o diretório todo de buckets duplica;

� Dois ponteiros do diretório podem apontar para o mesmo bucket;

� Só duplicam os buckets que ficam cheios;

� Ao contrário do hash estático, registros em buckets duplicados (decorrentes de um overflow) podem ser facilmente localizados através do novo ponteiro no diretório de buckets.

Page 48: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo:

00

01

10

11

2

Diretório

Profundidade Global

4* 12* 32* 16*

2

1* 5* 21*

2

10*

2

15* 7* 19*

2

Bucket A

Bucket B

Bucket C

Bucket D

Páginas de dados

Profundidade Local

N = 4 = 22

Últimos2 dígitos darepresentação binária de h(k)

Page 49: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo – Inserção

00

01

10

11

2

Diretório

4* 12* 32* 16*

2

1* 5* 21*

2

10*

2

15* 7* 19*

2

Páginas de dados (buckets)

Inserindo 13*

13*

Page 50: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo – Inserção

00

01

10

11

2

Diretório

4* 12* 32* 16*

2

1* 5* 21*

2

10*

2

15* 7* 19*

2

Inserindo 20*

13*

4* 12* 20*

2

32* 16*

2

Page 51: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo – Inserção

00

01

10

11

2

Diretório

1* 5* 21*

2

10*

2

15* 7* 19*

2

Inserindo 20*

13*

4* 12* 20*

3

32* 16*

3

000

001

010

011

100

101

110

111

3

GlobalLocal

Bucket A1

Bucket A2

Bucket D

Bucket C

Bucket C

N = 8 = 23

Últimos3 dígitos darepresentação binária de h(k)

Page 52: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo – Inserção

110

2

Diretorio

4* 12* 32* 16*

2

1* 5*

2

10*

2

15* 7* 19*

2

Inserindo 9*

4* 12* 20*

3

32* 16*

3

2

Diretório

000

001

010

011

100

101

100

111

3

Global

21* 13*

Page 53: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Exemplo – Inserção

110

2

Diretorio

4* 12* 32* 16*

2

1* 9*

3

10*

2

15* 7* 19*

2

Inserindo 9*

4* 12* 20*

3

32* 16*

3

2

Diretorio

000

001

010

011

100

101

100

111

3

Global

5* 21* 13*

3

Page 54: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Regra Geral para Inserção de k*

Se Nível global = d� Calcula h(k);� Considera a entrada m do diretório, onde

m = número correspondente aos d últimos dígitos da representação binária de h(k);

� Dirige-se para o bucket indicado;� Se o bucket estiver cheio e nível local = d

� Divide o bucket e duplica o diretório de buckets;� Se o bucket estiver cheio e nível local = d-1

� Divide o bucket, mas não duplica diretório.

Page 55: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash - Possíveis Problemas

� Distribuição tendenciosa dos valores h(k): muitos em um único bucket. � Este é um problema que pode ser resolvido no momento da

criação do índice: basta ajustar a função h de modo a ter uma distribuição uniforme.

� Colisão: quando existem muitas entradas <k,*> com mesmo h(k), que não cabem em uma página� Este é um problema que só aparece à medida que o arquivo

cresce.� Neste caso, páginas de overflow são utilizadas.

Page 56: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Hash - Vantagens e Limitações

� Hash é excelente para seleção por igualdade na chave.� Não suporta seleção range (>, <, <=, >= )� B-Trees suportam seleção range e são quase tão boas quanto Hash para

igualdade.� Técnica de indexação Hash é muito útil na implementação do operador

Junção, que inclui diversas seleções por igualdade. Muitos SGBDs só implementam índices estruturados por B-Trees.

� Diferença de custo entre B-Tree e Hash é significativa neste caso.

Page 57: MóduloV: Indexação em Banco de Dados (Aulas 1, 2 e 3)clodis/BDI/BDI_2007_Modulo5_1.pdf · Índice -Conceitos Estrutura de dados que recebe como entrada uma propriedade de registro

Referências Bibliográficas

� Sistemas de Banco de Dados. (Cap. 11) Abraham Silberchatz, Henry F. Korth e S. Sudarshan. 3ª Edição. Makron Books, 1999.

� Sistemas de Banco de Dados. (Cap. 14) Ramez Elsmari, 4ª Edição. Shamkant B. Navathe. Pearson Addison Wesley, 2005.

� Database Management Systems. (Cap. 8-10) R. Ramakrishnan e J. Gehrke. McGraw-Hill, 2ª Edição, 2000.