Вы находитесь на странице: 1из 61

Estruturas de Indexao

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
So estruturas de dados (arquivos) adicionais quelas
contendo os registros de dados (vide tpico anterior)
Provm caminhos de acesso alternativos aos registros sem
afetar a disposio fsica dos registros no arquivo
Um ndice acelera a recuperao de registros baseada no
campo de indexao
Campo de indexao 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 referncia ao
conjunto de campos usado para indexao de um arquivo. No
confundir com o conceito de chave.
A princpio, qualquer subconjunto de campos do registro de um
arquivo pode compor uma chave de busca para construo de um
ndice sobre tal arquivo.
2

ndices
O que um ndice:
Estrutura de dados interna ao SGBD que permite acesso mais
rpido s informaes do banco.
Exemplo (simplificado):
Fornecedor

CODIGO

NOME

STATUS

CIDADE

F1

SMITH

20

LONDRES

F2

JONES

10

PARIS

F3

BLAKE

30

PARIS

F4

CLARK

20

LONDRES

F5

ADAMS

30

ATENAS

ndice sobre o atributo Nome de Fornecedor


Nome

Endereo (Bloco)

ADAMS

BLAKE

CLARK

JONES

SMITH

Observao: ndices devem ser utilizados com critrio pois afeta


desempenho das consultas e das demais operaes.

ndices
Vantagens:
Acesso mais rpido ao registro quando a
procura sobre campo indexado.
Menos I/O: arquivo de ndice menor que o
arquivo de dados.

Desvantagens:
Incluso, excluso e alterao ficam mais
lentas.
Mais espao de armazenamento.
4

Tipos de ndices
Ind. Primrio x nd. Secundrio x nd. Clustering
ndice Denso x ndice no Denso (Esparso)
ndice de um nico nvel x ndices de Mltiplos

Nveis

ndices Invertidos

Tipos de ndices
Um ndice Primrio construdo sobre o campo-chave
de classificao de um arquivo ordenado de registros
Lembrando que: campo-chave de classificao 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 construdo sobre um campo


de ordenao que no um campo chave e por isso,
diversos registros no arquivo podem ter o mesmo valor
para este campo
Um ndice Secundrio construdo sobre quaisquer
outros campos que no os de ordenao fsica do
arquivo.
Obs: Um arquivo pode ter, no mximo, um campo de classificao fsica, portanto,
6
ele s ter um ndice primrio ou um ndice de cluster, mas no ambos.

Tipos de ndices
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 No Denso (ndice esparso) consiste num


ndice para blocos ou pginas do arquivo, cada um dos
quais contendo um grupo de registros.
Os registros precisam estar organizados segundo o atributo
indexador.

Tipos de ndices
Ashby, 25, 3000
22
Basu, 33, 4003
25
Bristow, 30, 2007
30
Ashby
33
Cass

Cass, 50, 5004

Smith

Daniels, 22, 6003


Jones, 40, 6003

40
44

44
Smith, 44, 3000

ndice No Denso
sobre NOME

50

Tracy, 44, 5004

Arquivo de
Dados
(ordenado por Nome)

ndice Denso
sobre Idade

ndices Primrios
Registros com 2 campos:
Campo de mesmo domnio da chave de classificao 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 contm 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 binria em um arquivo de ndices exige muito menos
acessos a blocos
9

10

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
nmero total de blocos: b = r/bfr = 30000/10 = 3000
blocos
Uma
busca
binria
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)

11

Exemplo 2 com ndice Primrio


Cont. Exemplo 1
chave de ordenao: 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 binria 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 binria sobre o arquivo de dados.
12

ndices Clustering
Campo de indexao no campo chave
Pode haver valores repetidos
chamado de campo de agrupamento

Registros com 2 campos:


Campo de mesmo domnio do campo de indexao 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 indexao assume
ndice esparso
No necessariamente o registro ncora contm o mesmo valor do
campo de indexao do ndice
Para aliviar o problema da incluso usa-se reservar um bloco ou
conj de blocos para cada valor distinto
13

14

15

Indices Secundrios
Pode haver vrios para um mesmo arquivo
Estrutura similar aos outros tipos: 2 campos
Pode ser construdo
sobre chave-candidata valor nico por registro
Uma entrada para cada entrada do ndice (ndice denso), pois
como o arquivo no est ordenado por chave-candidata, no
podem ser utilizadas ncoras de bloco
Como h um maior nmero de entradas, ento maior tempo
de busca em relao ao ndice primrio
Mas comparativamente ao arquivo no indexado, o ganho
maior, pois sem o ndice seria necessrio realizar uma busca
linear
16

17

Indices secundrios (cont.)


Tambm pode ser construdo
Sobre campo
repetidos

no-chave

com

valores

Diversas entradas no ndice com um mesmo valor


Uma outra opo seria manter registros de tamanho
varivel
nas
entradas
de
ndice
(campo
multivalorado), com vrios endereos de bloco para
um dado valor de indexao
A opo mais usada mantm registros de ndice fixos
e acrescenta mais um nvel com os endereos de
bloco
18

19

Exemplo 3 com ndice Secundrio


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 (mdia);
Utilizando um ndice secundrio
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
nmero 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 binria : log2 bi = log2 442 = 9 acessos a bloco
pesquisa num registro 9 + 1 = 10 acessos (acesso adicional ao bloco)

*: dados no ordenados

10 contra 1500 acessos !!!


20

Resumo (1)

Campo de indexao
chave (no admite
repetio de valor)

Campo de Indexao
Utilizado para
Classificar o Arquivo

Campo de Indexao
No Utilizado para
Classificar o Arquivo

ndice Primrio

ndice Secundrio (sobre


chave candidata)

Campo de indexao no ndice Clustering


chave (admite
repetio de valor)

ndice Secundrio (sobre


qualquer atributo no
chave)

21

Resumo (2)
Tipo de ndice

Nmero de Entradas
de ndice (Primeiro
Nvel)

Denso ou
Esparso

ncora de Bloco
no Arquivo de
Dados

Primrio

Nmero de blocos do
arquivo de dados

Esparso

Sim

Clustering

Nmero de valores
distintos do campo de
indexao

Esparso

Sim/No (*)

Secundrio (sobre Nmero de registros do


Chave Candidata) arquivo de dados

Denso

No

Secundrio (sobre Nmero de registros ou


campo que no nmero de valores
chave)
distintos do campo de
indexao

Denso ou
Esparso

No

(*) Sim, se todo valor distinto do campo de indexao iniciar um novo bloco;
No, caso contrrio

22

ndices Invertidos
Emp(nome,sexo, est._civil, ....)
Existe um ndice secundrio 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
ocorrncias onde aquele valor ocorre
(=Verd)
23

Exemplo
Claudia....
feminino

Beatriz...

Paulo....
divorciado

24

ndices de mltiplos nveis (1)


Um ndice de um nico nvel um arquivo
ordenado.
Por isso, possvel criar um ndice no denso
sobre um ndice. Criamos assim um ndice de dois
nveis.
Esse processo pode ser repetido criando-se um
ndice de mltiplos nveis, ou uma estrutura de
rvore.

26

ndices de mltiplos nveis (2)


Obs: Esta estrutura mais eficiente pq:
A busca em um ndice de um nvel leva Log 2 bi acessos
A busca em um ndice multinvel leva Log brfi bi acessos
Cada nvel reduz o n. de entradas do nvel anterior dividindo-o
por bfri

Pode-se construir ndices multinveis sobre qq ndice seja ele


primrio, clustering ou secundrio
O problema com esta abordagem surge qdo precisamos
incluir e excluir: pode gerar desbalanceamento
necessria uma estrutura que se reorganize na medida da
necessidade. Ex: rvores B e B+ - que so classificadas
como ndices multinveis dinmicos

rvores
n raiz (nvel 0)

Sub-rvore de altura 2

nvel 1

nvel 2

nvel 3

n folha
rvore de altura 3

28

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 contm no
mximo 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 so distintos).
Restries:
Dentro de cada n, K1 < K2 < ... < Kq-1
Para todos os valores X em uma subrvore apontada por Pi
Ki-1 < X < Ki

para 1 < i < q

X < Ki

para i = 1

Ki-1 < X

para i = q
29

P1 K1

...

Ki-1 Pi Ki

... Kq-1 Pq

Um n de uma
rvore de pesquisa
X

X < K1

Ki-1 < X < Ki

X
Kq-1 < X

12

Uma rvore de
pesquisa de ordem p = 3
30

ndices Multinveis Dinmicos


rvores de Busca

De ordem p (mximo de endereos 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
31

Estruturas do tipo rvore B


So estruturas balanceadas de mltiplos nveis, cada
bloco do ndice contendo espao para um nmero fixo
de ponteiros.
Constituem estruturas dinmicas, cujos ns se rearranjam automaticamente com inseres e delees de
forma a manter a estrutura balanceada.
B significa Balanced, pois todas as folhas esto a mesma
distncia do n raiz.
Assim as rvores B garantem uma eficincia previsvel.
Permitem rpida recuperao de dados tanto randmica
quanto sequencialmente.
32

Exemplo de rvore-B

33

rvore B: Balanceamento
Ao tentar inserir em um n completo
Se for raiz, o n se divide em dois ns de nvel 1,
onde somente o valor do meio se mantm na raiz.
Se no 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 diviso at chegar a raiz

Ao excluir um n com metade da capacidade


Ele combinado com seus vizinhos

34

Inseres e Delees em
rvores B

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

n de uma rvore B
de ordem p = 3

35

Inseres e Delees em
rvores B

1
5

insere 8, 5
insere 1 (overflow)

36

Inseres e Delees em
rvores B

5
separa, novo nvel

37

Inseres e Delees em
rvores B

insere 7, 3
insere 12 (overflow)

12

38

Inseres e Delees em
rvores B

separa, mesmo nvel


12

39

Inseres e Delees em
rvores B

8
insere 9, 6
insere 4 (overflow)

12

40

Inseres e Delees em
rvores B
5

separa e propaga

12
41

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
Clculo da ordem p de uma rvore: cada n pode conter
no mximo 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 espao no bloco para
informaes adicionais como o nmero q de entradas no n

42

Estruturas do tipo rvore B+


H diversas variedades de rvores B, a maior parte das
implementaes usa a rvore B+.
Na rvore B+ apenas os ns folha tm 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 no tem um limite inferior (m pode ser 0).
Todas as folhas esto no mesmo nvel, ou seja, a mesma distncia
da raiz.
Um n no folha com n filhos contm n-1 chaves.

43

Exemplo de rvore B+

Ponteiro para a
folha com menor
chave maior que Kq-1
44

Um exemplo simples de
rvore B+
Folhas

1250
0625

0350

0350

1000

0625

0625

1425

1000

1000

1250 1300

1250

2000

1425 1600

2000

1425
1300

2000

1600

Registros de Dados
45

Inseres e Delees em
rvores B+
Inserir: 8,5,1,7,3,12,9,6,4
rvore B+ de ordem p = 3
p folha = 2
1

Insere 8, 5
Tenta inserir 1
(overflow)

46

Inseres e Delees em
rvores B+

separao:
novo nvel
1

47

Inseres e Delees em
rvores B+

insere 7
tenta inserir 3
(overflow)

5
3

48

Inseres e Delees em
rvores B+
separao
mesmo nvel
3

49

Inseres e Delees em
rvores B+
tenta inserir
12 (overflow)
3

5
12

50

Inseres e Delees em
rvores B+
5
separao,
propagao,
novo nvel
3

12

51

Inseres e Delees em
rvores B+
5

insere 9
tenta inserir 6
(overflow)
3

8
6

12

52

Inseres e Delees em
rvores B+
5
separao,
mesmo nvel
3

12

53

Inseres e Delees em
rvores B+
5
insere 4

12

54

Inseres e Delees em
rvores B+
Eliminando 8
5

12

55

Inseres e Delees em
rvores B+
Eliminando 3
5

12

56

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 mximo p ponteiros de dados e p-1 valores
e cada n folha tem no mximo 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
Tambm no caso da rvore B+ se reserva um espao do bloco para
informaes adicionais
57

Bons/ Maus candidatos


para ndice
Examinar as consultas e operaes sobre as
relaes
Bons Candidatos
Atributos da Primary key
Atributos usados em junes (chaves estrangeiras)
Atributos usados na clusula WHERE: escolha aqueles usados em
mais consultas ou nas consultas consideradas crticas
Atributos usados na ordenao do resultado das consultas
Atributos onde agregados so frequentemente calculados
Maus Candidatos
Atributos com alta taxa de atualizao
Atributos com poucos valores distintos, com m distribuio de
valores
58
Atributos muito longos

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 dinmico, a
manuteno dos ndices torna-se cara.
O projeto fsico altamente dependente do SGBD em
questo, pois normalmente variam bastante seus
mecanismos de alocao e gerenciamento de pginas e
reas de disco, alm das alterativas de estruturas
oferecidas.
Aps a etapa inicial de implantao de um BD, seu uso
fornece informaes valiosas para que se faa o tuning
do mesmo, refinando o projeto inicial.
59

Resumo
Arquivos HEAP so bons para tabelas pequenas ou
temporrias
Arquivos ordenados ou baseados em estruturas de
rvore so adequados para buscas do tipo
intervalo (>, etc.) ou segundo a ordem do atributo
de ordenao. Tambm servem para buscas
baseadas em igualdade.
Arquivos Hashed so bons para selees baseadas
em igualdade
60

Estruturas de Indexao
Leituras Recomendadas
Cap. 14 Elmasri e Navathe
Cap. 12 Silberschatz e Korth

Atividades Prticas
Exerccios do livro-texto (Elmasri e Navathe): 14.1 a
14.7, 14.14 a 14.16.
61

Вам также может понравиться