1) B-Trees são estruturas de dados em forma de árvore utilizadas para armazenar grandes quantidades de informação em disco, de forma a minimizar os acessos ao disco.
2) As B-Trees possuem nós internos com entre ceil(M/2) e M filhos e folhas com entre 1 e M-1 chaves, onde M é a ordem da árvore.
3) Operações como pesquisa, inserção e remoção em B-Trees requerem tipicamente O(logM N) acessos ao disco no pior caso, onde
2. Motivação
● Grandes quantidades de informação
– Requer armazenamento externo (disco)
– Acesso a disco lento (várias ordens de
grandeza pior que memória)
– Procurar organização que minimize acessos
a disco talvez desprezando quantidade de
processamento?
● Organização em árvore
– Árvore de grau K
– N elementos: acessos = O(logK N) tu r a s d
s tru e
E
Da
2003/04 9- 2
9-2
ados
B-Trees
os
3. Exemplo
● Registo Civil
– Bilhetes de Identidade
– Cerca de 10.000.000 registos diferentes
– Cada registo:
● Nomes (próprio, pai, mãe): 128 bytes cada
● Datas, locais, etc.: 128 bytes
● => Total 1K byte por registo
●
Servidor
– 1 IPC @ 2GHz, 1000 APS
– 100 utilizadores simultâneos tu r a s d
s tru e
● ~ 1IPC @ 20MHz, 10APS
E
Da
2003/04 9- 3
9-3
ados
B-Trees
os
4. Exemplo: árvore binária
● Supondo AVL (ou outra binária
equilibrada)
– Profundidade: log2(107) ~ 27
– Pesquisa feita em média em 27 acesso, a 10
APS = 2.7s
● Se variarmos o grau (N) da árvore
– N=5: P=log5(107) ~ 11; GD = 60%
– N=10: P=log10(107) ~ 7; GD = 75%
– N=128: P=log128(107) ~ 4; GD = 85% s tru
tu r a s d
e
E
Da
2003/04 9- 4
9-4
ados
B-Trees
os
5. Exemplo
●
Grau suficientemente alto:
– Limite superior sobre o número de acessos a disco:
objectivo valor pequeno (3-5 acessos.)
● Resta saber como fazer...
– Ideia geral: árvore N-ária.
– Cada nó contém K=O(N) chaves.
– Busca envolve fazer uma pesquisa (p/ex binária)
sobre cada nó.
– Caso não esteja, desce-se para um filho particular.
tu r a s d
s tru e
E
Da
2003/04 9- 5
9-5
ados
B-Trees
os
6. B-Tree: Esquema
k1 k2 k3 ki
<k1 k1<k<k2 k>ki
tu r a s d
s tru e
E
Da
2003/04 9- 6
9-6
ados
B-Trees
os
7. O que são: B-Trees
● Definição (“Propriedade BT”):
– B-Tree de ordem M
● Nós interiores:
– Entre ceil(M/2) e M filhos
– Se tiver N<=M filhos, terá exactamente N-1 chaves
● Folhas: todas à mesma profundidade
– Por construção
– Têm entre 1 e M-1 chaves
● Raíz: folha ou tem no máximo M filhos
– Nós interiores:
● Referências aos filhos (F[i], i=1..M)
● Chaves contidas (K[i], i=1..M-1)
– Folhas
tu r a s d
● Chaves contidas (K[i], i=1..M-1) s tru e
E
Da
2003/04 9- 7
9-7
ados
B-Trees
os
8. Exemplos simples
●
Ex: B-tree de ordem 3, tb designada por árvore
2-3
– 3: grau máximo dos nós
– 2: número máximo de chaves nos nós
● B-Tree de ordem 3 (i.e. árvore 2-3)
tu r a s d
s tru e
E
Da
2003/04 9- 8
9-8
ados
B-Trees
os
9. B-Tree: Exemplo
10
2, 5 15
0 3 7, 8 12, 13 17, 18
tu r a s d
s tru e
E
Da
2003/04 9- 9
9-9
ados
B-Trees
os
10. B-Tree: Pesquisa
● Simples, semelhante a pesquisa binária
– em cada nó interior
● Se X=K[i], encontramos
● Se K[i-1]<X<K[i], procurar no filho F[i]
– nas folhas
● Só resulta se encontrarmos
tu r a s d
s tru e
E
Da
2003/04 9- 10
9-10
ados
B-Trees
os
11. B-Tree: Inserção
● Inicialmente igual à pesquisa, obtemos a
folha onde seria para inserir
– Forçosamente numa folha
●
Caso não haja violação da propriedade
BT (i.e. há menos que M valores na
folha):
– Inserimos e pronto.
– Possivelmente há que ajustar os valores de
mj nos no caminho até à folha
●
Caso não caiba: temos de repor a
quot;legalidadequot;... s tru
tu r a s d
e
E
Da
2003/04 9- 11
9-11
ados
B-Trees
os
12. B-Tree: Re-equilibrar (insersão)
● Dá-se mais um irmão à folha onde se iria
inserir:
● Transita-se uma chave Km (mediana) da antiga folha
(aumentada com a chave a inserir) para o pai
● Divide-se os valores (<Km, >Km) entre as novas folhas
● Caso não seja possível (pai já tem M filhos)
– Dividir o pai em dois:
● cada um com a metade dos filhos (que ficam na mesma)
● Transitando uma chave (mediana) do antigo pai para o
avô
● Caso não seja possível, repetir operação ao
nível do avô, etc... até à raíz uturas d r
st e
E
Da
2003/04 9- 12
9-12
ados
B-Trees
os
13. B-Tree: Re-equilibrar (insersão)
●
Chegando à raíz, e esta estando cheia…
– Cria-se uma nova raíz.
● Com a mediana (Km) da antiga
– Parte-se a antiga raíz em dois
● Dividindo os valores da raíz anterior (<Km, >Km)
●
Mantém-se os filhos e fica-se com uma árvore
mais profunda
tu r a s d
s tru e
E
Da
2003/04 9- 13
9-13
ados
B-Trees
os
14. B-Tree: Exemplo (1)
●
Inserção dos inteiros
0, 5, 10, 15, 2, 7, 12, 17, 3, 8, 13, 18
0 0,5 0,5,10 5 5
0 10 0 10, 15
5 5 5, 10
0, 2 10, 15 0, 2 7, 10, 15 0, 2 7 tru 15 de
tu r a s
s
E
Da
2003/04 9- 14
9-14
ados
B-Trees
os
15. B-Tree: Exemplo (2)
5, 10 5, 10
0, 2 7 12, 15 0, 2 7 12, 15, 17
5, 10, 15
0, 2 7 12 17
10
5 15
tu r a s d
s tru e
E
Da
2003/04 9- 15
9-15
ados
0, 2 7 12 17 B-Trees
os
16. B-Tree: Exemplo (3)
10
2, 5 15
0 3 7, 8 12, 13 17, 18
tu r a s d
s tru e
E
Da
2003/04 9- 16
9-16
ados
B-Trees
os
17. B-Tree: remoção
• Semelhante à inserção
• Se número de elementos da folha resultante
>1, não precisa fazer mais nada.
• Se número de elementos da folha = 1
– Combinar elemento restante com um irmão
– Se passou a ser filho único, repetir operação ao
nível superior
– Se se chegar à raíz, toma-se como nova raíz o seu
filho único
tu r a s d
s tru e
E
Da
2003/04 9- 17
9-17
ados
B-Trees
os
18. B-Tree: análise
• Profundidade máx. duma B-Tree de ordem M
– ceil(logfloor(M/2) N)
• Pesquisa
– Em cada nó, fazemos O(log M) trabalho para
determinar por onde vamos (c/ pesquisa binária)
– pior caso: O(log N)
• Inserção e remoção
– Como pesquisa, mas podemos ter de fazer O(M)
para repor as condições
– pior caso: O(M logM N) = O((M/log M) log N)
tu r a s d
s tru e
E
Da
2003/04 9- 18
9-18
ados
B-Trees
os
19. B-Tree: usos
• Uso principal: Bases de dados
– Árvore mantida em disco, não em memória
– Número de acessos a nós = número de acessos a
disco
• Operação sempre muito lenta
• Convem que sejam poucos (e grandes)
• O(logM N)
– Na prática, usam-se valores de M que:
• sejam “grandes”
• permitam que um nó inteiro caiba num bloco de disco
(p/ex uma página de VM, tipicamente 8K)
• em geral serão valores entre 32 e 256
tu r a s d
s tru e
E
Da
2003/04 9- 19
9-19
ados
B-Trees
os