Árvores-b (parte ii) -...
TRANSCRIPT
![Page 1: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/1.jpg)
Árvores-B (Parte II)
Leandro C. Cintra
M.C.F. de Oliveira
2004
Fonte: Folk & Zoelick, File Structures
(atualizado 2007 c/ material Profa. Cristina Ciferri)
![Page 2: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/2.jpg)
Construção de árvores-B
![Page 3: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/3.jpg)
3
Características Gerais
Organizar e manter um índice para um arquivo de acesso aleatório altamente dinâmico
Índice
n elementos (x,a) de tamanho fixo
...
chave de busca campo de
referência
n
x a
![Page 4: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/4.jpg)
4
Características Gerais
Índice extremamente volumoso
Buffer-pool pequeno apenas uma parcela do índice pode ser
carregada em memória principal
operações baseadas em disco
Desempenho proporcional a logK
I ou melhor
• I: tamanho do índice
• K: tamanho da página
de disco
![Page 5: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/5.jpg)
5
Construção Top-Down de árvores paginadas
É simples construir uma árvore paginada se todo o conjunto de chaves é conhecido antes de iniciar a construção
Inicia-se pela chave do meio para obter uma árvore balanceada
Porém, é complicado se as chaves são recebidas em uma seqüência aleatória
![Page 6: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/6.jpg)
6
Construção Top-Down de árvores paginadas
Ordem: C S D T A M P I B W N G U R K E H O L J Y Q Z F X V
![Page 7: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/7.jpg)
7
Construção Top-Down de árvores paginadas
Na figura anterior, a construção foi feita top-down, a partir da raiz
Sempre que uma chave é inserida a árvore dentro da página sofre uma rotação, sempre que necessário, para manter o balanceamento
Construção a partir da raiz implica em que as chaves iniciais estarão necessariamente na raiz
C e D não deveriam estar no topo, pois acabam desbalanceando a árvore de forma definitiva
Esta árvore não está tão ruim, mas o que aconteceria se as
chaves fossem fornecidas em ordem alfabética?
![Page 8: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/8.jpg)
8
Construção Top-Down de árvores paginadas
Questões como garantir que as chaves na página raiz são
boas separadoras, i.e., dividem o conjunto de chaves de maneira balanceada ?
como impedir o agrupamento de chaves que não deveriam estar na mesma página (como C, D e S, por exemplo)
como garantir que cada página contenha um número mínimo de chaves ?
![Page 9: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/9.jpg)
9
Árvore B
Características
balanceada
bottom-up para a criação (em disco)
nós folhas nó raiz
Inovação
não é necessário construir a árvore a partir do nó raiz, como é feito para árvores em memória principal e para as árvores anteriores
![Page 10: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/10.jpg)
10
Construção Bottom-Up
Conseqüências chaves “erradas” não são mais alocadas no nó
raiz elimina as questões em aberto de chaves
separadoras e de chaves extremas
não é necessário tratar o problema de desbalanceamento usando algoritmos de reorganização da árvore
na árvore-B, as chaves na raiz da árvore
emergem naturalmente
![Page 11: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/11.jpg)
11
Características
Nó (= página de disco)
seqüência ordenada de chaves
conjunto de ponteiros
número de ponteiros = número de chaves + 1
não há uma árvore explícita dentro de uma página (ou nó da árvore)
![Page 12: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/12.jpg)
12
Características
Ordem número máximo de ponteiros que pode ser armazenado
em um nó
exemplo: árvore-B de ordem 8 máximo de 7 chaves e 8 ponteiros
Observações número máximo de ponteiros é igual ao número máximo
de descendentes de um nó
nós folhas não possuem filhos, e seus ponteiros são nulos
![Page 13: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/13.jpg)
13
Estrutura Lógica de um Nó
chave
1
chave
q
chave
3
chave
2
chave
q-1 ...
< chave 1 > chave 1
< chave 2
> chave 2
< chave 3
> chave q-1
< chave q
> chave q
![Page 14: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/14.jpg)
14
campo de
referência
(omitido)
chave
de
busca
Estrutura Lógica de um Nó
chave
1
chave
q
chave
3
chave
2
chave
q-1 ...
< chave 1 > chave 1
< chave 2
> chave 2
< chave 3
> chave q-1
< chave q
> chave q
campos de
tamanho fixo
![Page 15: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/15.jpg)
15
registro
completo
chave
de
busca
Estrutura Lógica de um Nó
chave
1
chave
q
chave
3
chave
2
chave
q-1 ...
< chave 1 > chave 1
< chave 2
> chave 2
< chave 3
> chave q-1
< chave q
> chave q
![Page 16: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/16.jpg)
16
Exemplo
D H K
A B C E G I J L M * * * * * * * * * * * * * * * *
![Page 17: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/17.jpg)
17
Inserção de Dados (Chave)
Característica
sempre realizada nos nós folhas
Situações a serem analisadas
árvore vazia
overflow no nó raiz
inserção nos nós folhas
![Page 18: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/18.jpg)
18
Inserção: Situação Inicial
Criação e preenchimento do nó primeira chave: criação do nó raiz
demais chaves: inserção até a capacidade limite do nó
Exemplo nó com capacidade para 7 chaves
chaves: letras do alfabeto
situação inicial: árvore vazia
![Page 19: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/19.jpg)
19
Inserção: Situação Inicial
Chaves B C G E F D A
inseridas desordenadamente
mantidas ordenadas no nó
Ponteiros (*)
nós folhas: -1 ou fim de lista (NIL)
nós internos: RRN do nó filho ou -1
Nó raiz (= nó folha)
F * G * * E * D * C * B * * A
![Page 20: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/20.jpg)
20
* * *
Passo 1 – particionamento do nó (split) nó original nó original + novo nó
split 1-to-2
as chaves são distribuídas uniformemente nos dois nós
chaves do nó original + nova chave
Exemplo: inserção de J
Inserção: Overflow Nó Raiz
* * * D * C * B * * A * * * J G * F * * E
![Page 21: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/21.jpg)
21
* * * * *
Passo 2 – criação de uma nova raiz
a existência de um nível mais alto na árvore permite a escolha das folhas durante a pesquisa
Exemplo
Inserção: Overflow Nó Raiz
* * * * * * * * * * *
* * * * * *
qual deve ser a chave separadora?
![Page 22: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/22.jpg)
22
Passo 3 – promoção de chave (promotion)
a primeira chave do novo nó resultante do particionamento é promovida para o nó raiz
Exemplo
Inserção: Overflow Nó Raiz
* * * * * *
* * * * * * D * C * B * * A * * * J G * F * *
E
![Page 23: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/23.jpg)
23
Inserção: Nós Folhas
Passo 1 – pesquisa
a árvore é percorrida até encontrar o nó folha no qual a nova chave será inserida
Passo 2 – inserção em nó com espaço
ordenação da chave após a inserção
alteração dos valores dos campos de referência
nó folha em
memória principal
![Page 24: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/24.jpg)
24
Inserção: Nós Folhas
Passo 2 – inserção em nó cheio
particionamento
criação de um novo nó (nó original nó original + novo nó)
distribuição uniforme das chaves nos dois nós
promoção
escolha da primeira chave do novo nó como chave separadora no nó pai
ajuste do nó pai para apontar para o novo nó
propagação de overflow
![Page 25: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/25.jpg)
25
Exemplo
Insira as seguintes chaves em um índice árvore-B
C S D T A M P I B W N G U R K E H O L J Y Q Z F X V
Ordem da árvore-B: 4
em cada nó (página de disco)
número de chaves: 3
número de ponteiros: 4
![Page 26: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/26.jpg)
26
C S D T A M P I B W N G U R K ...
Passo 1 – inserção de C, S, D
criação do nó raiz
C
C S
C D S
C D S
-1 -1 -1 -1
0
![Page 27: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/27.jpg)
27
C S D T A M P I B W N G U R K ...
Passo 2 – inserção de T
nó raiz cheio
C D T
1
S
2
0
S T
• particionamento do nó
• criação de uma nova raiz
• promoção de S
![Page 28: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/28.jpg)
28
C S D T A M P I B W N G U R K ...
Passo 3 – inserção de A
nó folha com espaço
A C T
S
2
D
0 1
![Page 29: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/29.jpg)
29
C S D T A M P I B W N G U R K ...
Passo 4 – inserção de M
nó folha 0 cheio
A C
D
T M
S
1 0 3
2
• particionamento do nó
• promoção de D
D M
S
![Page 30: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/30.jpg)
30
C S D T A M P I B W N G U R K ...
Passo 5 – inserção de P, I, B, W
nós folhas com espaço
A B
D
T I
S
C M P W
0 3
2
1
A C M
M P
T
![Page 31: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/31.jpg)
31
C S D T A M P I B W N G U R K ...
Passo 6 – inserção de N
nó folha 3 cheio
A B
D
P I
N
C M
S
T
1
W
0 3
2
1
• particionamento do nó
• promoção de N
D S
I M P N P
![Page 32: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/32.jpg)
32
C S D T A M P I B W N G U R K ...
Passo 7 – inserção de G, U, R
nós folhas com espaço
A B
D
P G
N
C I
S
T U M R W
0 3
2
1 1
I M P T W
![Page 33: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/33.jpg)
33
C S D T A M P I B W N G U R K ...
Passo 8 – inserção de K
nó folha 3 cheio
A B
D
M G
K
C I P R T
1
U W
S
6
N
7
0 3
2
1 4
• particionamento do nó 3
• promoção de K
• particionamento do nó 2
• promoção de N
G I M K K M
D N S K N S
![Page 34: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/34.jpg)
34
... E H O L J Y Q Z F X V
Finalizar a construção da árvore
![Page 35: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/35.jpg)
35
Exercícios
Na árvore-B do exemplo anterior, insira a chave $, sendo que $ < A.
Insira as seguintes chaves em um índice árvore-B C S D T A M P I B W N G U R K E H O L J Y Q Z
F X V
diferentemente do exemplo anterior, escolha o último elemento do primeiro nó para promoção durante o particionamento do nó.
![Page 36: Árvores-B (Parte II) - wiki.icmc.usp.brwiki.icmc.usp.br/images/e/e5/Arquivo_12_-_Árvores_B,_parte_2.pdf · 3 Características Gerais Organizar e manter um índice para um arquivo](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c64ca2d09d3f2ad6e8bb1ac/html5/thumbnails/36.jpg)
36
Exemplo Inserção: C S D T A M P I B W N G U R K E H O L J Y Q Z F X V