Você está na página 1de 40

Cap.

4
Indexao Estruturada em rvore
If I had eight hours to chop down a tree,
Id spent sharpening my ax.
-- Abraham Lincoln

Abel J.P. Gomes

Bibliography:
1. R. Ramakrishnan and J. Gehrke. Database Management Systems. Addison-Wesley, 2003
(cap.10).

1. Objectivos

Intuitivamente, o que est por detrs dos ndices


estruturados em rvore? Porque que so adequados
para seleces (SELECT) por gama de valores?
Como que faz pesquisa (SELECT), insero (INSERT) e
eliminao (DELETE) de registos num ndice ISAM?
Como que faz pesquisa (SELECT), insero (INSERT) e
eliminao (DELETE) de registos num ndice em rvore B+?
Qual o impacto de valores duplicados da chave na im
plementao de ndices?
O que a compresso de ndices, e porque que so
importantes?
O que que acontece aos idntificadores de registos
quando ndices dinmicos so actualizados? Como
que isto afecta os ndices conglomerados (clustered
indexes)?
2

2. Ficheiros,Pginas e Registos:
uma reviso

A abstraco de dados armazenados a de ficheiros de registos.


l
l

Dados de tamanho varivel requerem estruturas mais sofisticadas para


registos e pginas. (porqu?)
l
l

registos: offset array no header


pginas: Slotted pages com internal offsets & rea de espao livre

Muitas vezes melhor ser permissivo relativamente a questes como


gesto de espao livre, ordenao exacta, etc. (porqu?)
Ficheiros podem ser no-ordenados (heap), ordenados, ou algum tipo de
ficheiro ordenado (i.e., conglomerado) por uma chave de pesquisa
(search key).
l

Registos (records) residem em pginas (pages)


Physical Record ID (RID) = <page#, slot#>

Os compromissos so entre o custo de actualizao/manuteno e a velocidade


dos acessos via chave de pesquisa.
Ficheiros podem ser conglomerados (sorted) no mximo de uma maneira.

ndices podem ser usados para tornar mais rpidos muitos tipos de
acessos (i.e., percursos de acesso)

2. Indexao: Conceitos Bsicos

Mecanismos de indexao usados para acelerar o acesso


aos dados.
l p.ex., catlogo de autores numa biblioteca
Chave de pesquisa - atributo ou conjunto de atributos
usados para procurar records num ficheiro.
Um ficheiro de indexao ou, simplesmente, ndice
constitudo por records (chamados verbetes de
indexao) com a seguinte forma:
search-key

pointer

Os ndices so normalmente mais pequenos que o ficheiro original


Dois tipos essenciais de ndices:
l
l

ndices ordenados: as chaves de pesquisa so armazenadas


numa dada ordem
ndices de hashing: as chaves de pesquisa so distribudas
uniformemente por buckets usando uma hash function.4

3. Mtricas de avaliao de
ndices

Tipos de acesso suportados eficientemente;


p.ex.,
l records com um valor especfico no atributo
l ou records com um valor de atributo numa
dada gama de valores.
Tempo de acesso
Tempo de insero
Tempo de eliminao
Sobrecarga (overhead) de espao

4. ndices ordenados
Tcnicas de indexao avaliadas com base em:
Num ndice ordenado, verbetes de indexao so
armazenados e ordenados segundo o valor da chave de
pesquisa; p.ex., catlogo de autores numa biblioteca.
ndice primrio: num ficheiro sequencialmente ordenado, o
ndice cuja chave de pesquisa especifica a ordem sequencial do
ficheiro.
l
l

Tambm designado por ndice de aglomerao


A chave de pesquisa dum ndice primrio usual mas no
necessariamente a chave primria.

ndice secundrio: um ndice cuja chave de pesquisa especifica


uma ordem diferente da ordem sequencial do ficheiro. Tambm
designado por ndice de no-aglomerao.
Ficheiro de ndice sequencial: ficheiro ordenado
sequencialmente com um ndice primrio.
6

5. Ficheiros de indexao densos

ndice denso um record de indexao aparece para


todo o valor da chave de pesquisa no ficheiro.

Ficheiros de indexao esparsos

Menos espao e menor sobrecarga de manuteno para inseres e


eliminaes.
Normalmente mais lento que o ndice denso em localizar records.
Bom compromisso: ndice esparso com verbete de indexao para todo o
bloco num ficheiro, correspondendo a menor valor da chave de pesquisa num
bloco.

6. ndice Multi-nvel

Se ndice primrio no cabe na


memria, o acesso torna-se
dispendioso.
Para reduzir o nmero de acessos
ao disco procura de records de
indexao, trata-se ndice primrio
mantido em disco como um ficheiro
sequencial e constri-se um ndice
esparso sobre ele.
ndice exterior um ndice
esparso do ndice primrio
ndice interior o ndice
primrio
Mesmo se o ndice exterior
demasiado grande para caber na
memria principal, um outro nvel
de indexao pode ser criado, e
assim por diante.
ndices de todos os nveis tm de
ser actualizados face a uma
insero ou eliminao dum record
dum ficheiro.

7. ndices Estruturados em rvore:


Introduo

Tcnicas de indexao estruturada em rvore


suportam quer seleces por gama quer seleces
por igualdade.
l
l

Seleces da forma field <op> constant


Seleces por igualdade (op =)
l

ISAM (Indexed Sequential Access Method): estrutura


esttica; tecnologia de indexao primitiva.
B+ tree: dinmica; ajusta-se graciosamente face a
inseres e eliminaes.

Quer ndices em rvore quer ndices em hashing


podem ser usados, mas os ndices baseados em
hashing so mais eficientes.

Seleces por gama (op um de <, >, <=, >=,


BETWEEN)
l

ndices hash no funcionam nestes casos.

10

7.1 Uma nota de precauo

ISAM uma ideia fora de moda


l

As rvores B+ so normalmente melhores, mas como


veremos nem sempre assim .

Contudo, os ndices ISAM so importantes para


comear a compreender as tcnicas de indexao
l

So mais simples que as rvores B+, mas basicamente


desfrutam das mesmas ideias

11

8. Pesquisas por Gama de Valores:


motivao para os ndices em rvore

Consideremos um ficheiro de estudantes ordenados por gpa.


Encontre todos os estudantes com gpa > 3.0
l

Se os dados esto num ficheiro ordenado, faa pesquisa binria para


encontrar o primeiro estudante que satisfaz aquela condio; a partir
da, percorra sequencialmente o ficheiro at ao fim para encontrar todos
os outros alunos.
O custo da pesquisa binria numa base de dados pode ser muito elevado.
(porqu?)

A ideia simples por detrs de uma soluo:


l
l

l
l

crie um segundo ficheiro, chamado ficheiro de indexao (index file);


estruturado em registos da forma
<first key on page, pointer to page>
cada um dos quais se refere a uma pgina do ficheiro (de dados)
original;
ordenado pelo atributo chave (p.e. gpa);
o formato duma pgina do ficheiro de indexao o seguinte:

verbete de indexao
P
0

k 2

k m

Pm
12

8. Pesquisas por Gama:


motivao para os ndices em rvore(cont.)

Assim, a pesquisa binria ocorre agora no ficheiro de indexao para


identificar a pgina que contm o primeiro valor da chave (gpa) que
satisfaz a seleco por gama (no nosso exemplo, o primeiro
estudante com gpa>3.0).
Depois, seguimos o ponteiro para a pgina que contm o primeiro
registo de dados com aquele valor da chave.
Podemos ento percorrer o ficheiro de dados sequencialmente a
partir daquele ponto em diante para devolver os outros registos que
satisfazem a mesma condio.

Ficheiro
de Indexao

kN

k1 k2

One-level
Index Structure
Page 1

Page 2

Page 3

Page N

Faz-se a pesquisa binria sobre um ficheiro de indexao


que mais pequeno do que o ficheiro de dados!

Ficheiro
de Dados
13

9. ISAM
(Indexed Sequential Access Method)

A possibilidade de o ficheiro de indexao ter um tamanho


muito grande fez surgir a ideia da indexao em rvore.
Basicamente, o que se fez foi aplicar a ideia primitiva de
indexao (do acetato anterior) repetidamente por forma a
criar uma estrutura de indexao multi-nvel!

Non-leaf
Pages

Leaf
Pages
Overflow
page

Primary pages

Pginas-folha contm verbetes de dados (data entries).

14

9.1 rvore ISAM: exemplo

Verbetes de indexao:<search key value, page id>;


direccionam a pesquisa para os verbetes de dados
existentes nas folhas da rvore.
Exemplo em que cada n tem 2 verbetes:
Root
40

10*

15*

20

33

20*

27*

51

33*

37*

40*

46*

51*

63

55*

63*

97*

15

9.2 Insert: exemplo para registos cujas


chaves tm os valores 23, 48, 41 e 42
Root
40

Index
Pages
20

33

20*

27*

51

63

51*

55*

Primary
Leaf

10*

15*

33*

37*

40*

46*

48*

41*

Pages

Overflow

23*

63*

97*

Pages
42*

Assuno: cada pgina folha pode conter 2 verbetes

16

9.3 Delete:
exemplo para os verbetes 42*, 51* e 97*
Root
40

Index
Pages
20

33

20*

27*

51

63

Primary
Leaf

10*

15*

33*

37*

40*

46*

48*

41*

Pages

Overflow

23*

55*

63*

Pages

Note que 51* aparece nos nveis de indexao, mas no no nvel dos dados
17

9.4 ISAM uma estrutura esttica

Estrutura esttica: inseres/eliminaes


afectam s as pginas folha.
Criao de ficheiros: pginas folha (dos dados)
so alocadas sequencialmente e ordenadas
pela chave de pesquisa; depois, as pginas de
indexao so alocadas, seguindo-se as
pginas de transbordo (overflow pages).
Pesquisa: comea na raiz; usa-se
comparaes da chave para atravessar a
rvore at folha. Custo = log F N ; F =
#verbetes/pgina (i.e., fanout), N = #pginas
folha. No h necessidade de ponteiros`nextleaf-page. (porqu?)
Insero: encontre a folha qual o verbete
de dados pertence, e coloque-o l. Use uma
pgina de transbordo se for necessrio.
Eliminao: encontre e remova o verbete de
dados da sua folha; se a folha ficar vazia,
liberte-a da memria.

Data Pages
Index Pages
Overflow pages
Page allocation
in ISAM

18

9.5 ISAM: prs & contras

Inseres e remoes afectam s o contedo das pginas


folha.
Contras?
l

Longas cadeias de transbordo podem desenvolver-se se


um nmero significativo de inseres feito na mesma folha
tempo de devoluo dum registo numa cadeia de
transbordo tem um custo adicional.
Para remediar este problema, a rvore inicialmente criada
de tal modo que 20% do espao de cada pgina deixado livre.

Prs?
l

O facto que s pginas folha so modificadas tambm tem uma


vantagem importante relativamente ao acesso concorrente
base de dados. Assim, s as pginas folha tm de ser trancadas
por forma a permitir o acesso exclusivo durante as transaces.
Esta uma vantagem significativa relativamente a uma rvore B
+.
19

10. rvore B+:


o ndice mais usado

Como no ISAM, todas as pesquisas atravessam a rvore desde a raiz


at s folhas, mas a estrutura dinmica. Ela ajusta-se graciosamente a
inseres e eliminaes.
Insero/eliminao com um custo de logF N; mantm a rvore
equilibrada-em-altura.
l
F = fanout, N = #pginas folha
Ocupao mnima de 50% (excepto na raiz). Cada n contm m
verbetes, d m2d; d chamada a ordem da rvore.
Suporta pesquisas por igualdade e por gama duma forma eficiente.

Index Entries
(to direct search)

double linked list

Data Entries
("Sequence set")

Index
File

20

10. rvores B+:


pesquisa de verbetes de dados

A pesquisa comea na raiz, cabendo s comparaes da chave


direccion-la para uma folha (como acontece no ISAM).
Pesquisa para 5*, 15* e todos os verbetes de dados >=
24* ...
Root
13

Tree order d=2


Tree height = 1

2*

3*

5*

7*

14* 16*

17

24

19* 20* 22*

30

24* 27* 29*

33* 34* 38* 39*

Com base na pesquisa para 15*, sabemos que ele no est na rvore!
21

10. rvores B+ Trees na Prtica

Ordem tpica: 100.


l
l

Capacidades tpicas:
l
l

Factor tpico de preenchimento: 67%.


fanout mdio= 133

Altura 2: 1333 =
2,352,637 verbetes
Altura 3: 1334 = 312,900,700 verbetes

Muitas vezes mantm-se nveis de topo da rvore na


buffer pool:
l
l
l

Nvel 1 =
1 pgina =
8 Kbytes
Nvel 2 =
133 pginas =
1 Mbyte
Nvel 3 = 17,689 pginas = 133 MBytes
22

11. Algoritmo Insert


de um Verbete de Dados numa rvore B+

Encontre a folha certa L.


Coloque o verbete de dados em L.
l
l

Isto pode acontecer recursivamente:


l

Se L tem espao suficiente, termina!


Seno, tem de particionar L (em L e num novo n L2)
Redistribui verbetes equitativamente, e copia a chave
intermdia para cima.
Insere verbete de indexao que aponta para L2 no
n pai de L.
Para particionar um n de indexao, redistribua verbetes
equitativamente, mas translade para cima a chave
intermdia. (Faa o contraste com a partio dum n
folha.)

Parties de ns fazem crescer a rvore; a partio


da raiz faz crescer a rvore em altura.
l

Crescimento da rvore: em largura ou em altura.


23

11.1 Exemplo:
insero do verbete de dados 8*
Root
13

3*

2*

5*

7*

17

24

30

19* 20* 22*

14* 16*

24* 27* 29*

33* 34* 38* 39*

Root
17

2*

3*

24

13

5*

7* 8*

14* 16*

19* 20* 22*

30

24* 27* 29*

33* 34* 38* 39*


24

12. Partio de Pgina de Dados vs. Pgina


de Indexao: do exemplo anterior relativo
insero de 8*

Observe
como a
ocupao
mnima
garantida
quer na
partio
duma
pgina folha
quer duma
pgina de
indexao.
Note a
diferena
entre
copiar-paracima e
transladarpara-cima.

Partio duma Pgina de Dados


2*

3*

5*

7*

8*

Verbete a inserir no n pai. (Note


que 5 copiado para cima e
continua a aparecer na folha.)

2*

3*

5*

7*

8*

Partio duma Pgina de Indexao


5

17

13

17

24

30

Verbete a inserir no n pai. (Note


que 17 transladado para cima e
s aparece uma vez no ndice.)

25

13. Algoritmo Delete


dum Verbete de Dados de uma rvore B+

Comece na raiz; encontre a folha L qual o verbete


pertence.
Remova o verbete.
l

Se L est pelo menos preenchida por metade, termina!

Se L tem s d-1 verbetes,


Tente re-distribuir verbetes entre L e o seu n irmo (n
adjacente com o mesmo n pai que L).
Se re-distribuio falha, coalesa L com o irmo.

Se ocorreu coalescncia, h que eliminar verbete


(apontando para L ou irmo) a partir do n pai de L.
Coalescncia pode propagar-se raiz, com a
consequente diminuio da altura da rvore.
26

13.1 Exemplo:
eliminao dos verbetes de dados
19* e 20*
Root
17

2*

3*

5*

7* 8*

Eliminao de 19* fcil.


Eliminao de 20* feita
com re-distribuio. Noltese como a chave
intermdia copiada para
cima.
5

2*

3*

24

13

14* 16*

19* 20* 22*

7* 8*

24* 27* 29*

33* 34* 38* 39*

Root
17

27

13

5*

30

14* 16*

22* 24*

30

27* 29*

33* 34* 38* 39*


27

13.2 Exemplo:
e depois eliminar o verbete de dados 24*
Root
17

2*

3*

27

13

5*

7* 8*

22* 24*

14* 16*

Eliminao de 24* feita


com coalescncia das
folhas.
Observe o atirar fora do
verbete de dados (
direita), e transladar para
baixo do verbete de
indexao (no acetato
seguinte)...

30

33* 34* 38* 39*

27* 29*

30

22*

27*

29*

33*

34*

38*

39*
28

13.2 Exemplo (cont.):


e depois a eliminao do verbete de
dados 24*
Root
5

2*

3*

5*

7*

8*

13

14* 16*

17

30

22* 27* 29*

33* 34* 38* 39*

Eliminao de 24* tambm


feita com coalescncia de
pginas no-folha.

Os exemplos anteriores ilustram o seguinte:


Re-distribuio de verbetes entre folhas, e
Coalescncia entre pginas folha e entre pginas no-folha.
Vejamos agora o quarto e ltimo caso referente re-distribuio de
verbetes entre pginas no-folha
29

13.3 Exemplo:
re-distribuio entre pginas no-folha

Consideremos a rvore mostrada em baixo durante a


eliminao de 24*, com a diferena que o n no-folha que
contm a chave 30 tem um n irmo que pode dispensar verbetes
(17 e 20). (Qual poderia ser a rvore inicial?)
Em contraste com o exemplo anterior, podemos re-distribuir
verbetes do n filho esquerdo da raiz para o n irmo direita.
Root
22

2* 3*

5* 7* 8*

13

14* 16*

17

30

20

17* 18*

20* 21*

22* 27* 29*

33* 34* 38* 39*

30

13.3 Exemplo (cont.):


re-distribuio entre pginas no-folha
Root
22

2* 3*

5* 7* 8*

13

17

14* 16*

Intuitivamente, verbetes so redistribudos em consequncia da


translao do verbete de partio
para o n pai.
Isto implica a re-distribuio do
verbete de indexao com chave 20
para o n irmo.
5

2* 3*

5* 7* 8*

17* 18*

20* 21*

22* 27* 29*

33* 34* 38* 39*

Root
17

13

14* 16*

30

20

20

17* 18*

20* 21*

22

30

22* 27* 29*

33* 34* 38* 39*


31

14. Questes Pragmticas das rvores B+

Compresso de chaves
Carregamento em massa (bulk-loading) duma rvore B
+

32

14.1 Compresso de chaves

importante para aumentar o fan-out. (porqu?)


Os valores da chave nos verbetes de indexao s
direccionam o trfego; muitas das vezes, podemos
comprimi-las.
l

p.e., se temos verbetes de indexao adjacentes com as


chaves Dannon Yogurt, David Smith e Devarakonda
Murthy, podemos abreviar David Smith para Dav. (As
outras chaves podem ser comprimidas tambm...)
isto correcto? No propriamente! O que acontece se exite
um verbete de dados Davey Jones? (S podemos comprimir
David Smith para Davi)
Em geral, durante a compresso, temos de deixar cada
verbete de indexao maior do que qualquer valor da chave
(em qualquer sub-rvore) sua esquerda.

Insero/eliminao tm de ser modificadas em


conformidade.

33

14.2 Carregamento em massa de uma


rvore B+

Se temos uma grande coleco de registos, e


queremos criar uma rvore B+ sobre algum campo ou
atributo duma tabela, a insero registo a registo
torna-se uma operao muito lenta.
l

Tambm conduz utilizao mnima de folhas --- porqu?

Carregamento em massa pode tornar este processo


muito mais eficiente.

34

14.2 Carregamento em massa de uma


rvore B+ (cont.)

Initializao: ordene todos os verbetes de dados; insira


ponteiro para a primeira pgina (folha) numa nova pgina que
alojar a raiz.

Raiz

3* 4*

Pginas ordenadas de verbetes de dados;


ainda no existentes na rvore B+

6* 9*

10* 11*

12* 13* 20* 22* 23* 31* 35* 36*

38* 41* 44*

35

14.2 Carregamento em massa de uma


rvore B+ (cont. 1)

Verbetes de indexao para as pginas folha do sempre


entrada direita da pgina de indexao mais direita,
imediatamente acima do nvel de folhas. Quando fica cheio,
particiona-se. (A partio pode propagar-se no sentido
ascendente da rvore at raiz.)
Raiz

3* 4*

6* 9*

10

12

20

23

35

Pginas de verbetes de dados


que ainda no esto na rvore

10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44*

36

14.2 Carregamento em massa de uma


rvore B+ (cont.2)

Muito mais rpido que inseres repetidas, em particular


quando se tem em conta o trancamento (locking) de pginas
para acesso exclusivo!
Raiz

20

10

3* 4*

6* 9*

12

35

23

Pginas de verbetes de dados


que ainda no esto na rvore
38

10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44*

37

14.2 Carregamento em massa de uma


rvore B+ : sumrio

Opo 1: inseres mltiplas.


l
l

Lenta.
No permite armazenamento sequencial das folhas.

Opo 2: carregamento em massa


l
l
l
l

Tem vantagens no que respeita ao controlo da


concorrncia.
Menor nmero de I/Os durante a construo da rvore.
Folhas podem ser armazenadas sequencialmente (e
ligadas, obviamente).
Pode controlar-se o factor de preenchimento das
pginas.

38

Sumrio

ndices estruturados em rvore so ideais para pesquisas por gama, mas


tambm so adequados para pesquisas por igualdade.
ISAM uma estrutura esttica.
l
l

S as pginas folha so modificadas; pginas de transbordo so necessrias.


Cadeias de transbordo podem degradar o desempenho, a no ser que o
tamanho do conjunto de dados e a distribuio de dados permaneam
constantes.

rvore B+ uma estrutura dinmica.


l

Inseres/eliminaes deixam a rvore equilibrada em altura; o custo


log F N.
Fanout (F) elevado significa que a profundidade da rvore raramente ser
mais do que 3 ou 4.

Quase sempre melhor que manter um ficheiro ordenado.

Tipicamente, 67% de ocupao mdia do espao.

Normalmente prefervel ISAM, parte das consideraes de locking;


ajusta-se graciosamente ao crescimento.
Se os verbetes de dados so registos de dados, as parties podem
mudar os rids!

39

FIM DE CAPTULO

Sumrio (cont.)

A compresso de chaves aumenta o fanout, o que reduz a altura.


O carregamento em massa pode tornar mais rpida a criao duma
rvore B+ quando o conjunto de dados muito grande.
o ndice mais usado nos sistemas de gesto de bases de dados devido
sua versatilidade. Um dos componentes mais optimizados dum DBMS.

40

Você também pode gostar