Vous êtes sur la page 1sur 38

1

Estruturas de Dados II
Árvores Multiway
Árvore B+

Prof. DSc. Marcos José Negreiros Gomes


(UECE)
2

Origens
Criada por Wedekind, H. (1974) “On Selection of
Access Paths in a Data Base System”, Amsterdam:
North-Holland, pgs. 385-397.
3

1. Visão geral da necessidade


• Construção de banco de dados que mantenham
relação entre tabelas e organização destas de modo à
facilitar a busca de informação em tempo exequível.

• Os dados eram armazenados em tabelas que estavam


guardadas em disco ou em fita magnética, e desejava-
se desenvolver um modelo de ED que facilitasse o
acesso a qualquer dado da tabela específica.

• Além disso, havia limitação na quantidade de


memória nas máquinas em relação à quantidade de
dados de busca das tabelas, limitando o seu
armazenamento na memória principal.
4

1. Visão geral da necessidade


5

1. Visão geral da necessidade


6

• Esquematicamente tínhamos no passado:

Tabela

xMb
Índice

Disco ou fita Memória


y Kb
7

2. Solução Wedekind (1974)


• Estrutura de dados que seja uma árvore B, porém
as folhas contêm todos os índices da tabela alvo.
Memória
Primária - RAM
s Kb
Tabela
I3
I4 Tabela
x Mb
I2 I1 4
Índice
I1 I2 3
z Mb
I5 I3 1
I4 2
I5 5 Conjunto Sequência em
Memória Secundária
... ...
8
DEFINIÇÃO ÁRVORE B+

AS
Conjunto A

Conjunto S

S – Conjunto Sequência, contém todos os índices da tabela de busca;


Tabela de A – É uma árvore B, que contém índices de S.
índices num
BD
10

Características construtivas
1. A árvore B+ é implementada considerando:
▫ Região interna: armazenada como uma árvore B na
memória principal

▫ Região externa: armazenada em um arquivo (texto


com cabeçalho ou binário ou binário com
cabeçalho), sendo este disposto em memória
externa (disco, cache de disco), que contém todos os
índices de uma tabela que se deseja mapear em um
BD.
11

2. Estrutura de dados Básica


ArvB+:
m : Integer;
Deleted : array[1..2o] of boolean;
st = st of (folhaB, folhaB+, Raiz, Interno);
Ind = array[1...2o] of tipo.indice;
case st of
raiz, interno: array[1...2o + 1] of ^ArvB+;
folhaB: array[1...2o + 1] of word;
folhaB+: array[1...2o] of word;
end;
12

• O arquivo de índices está organizado em blocos de


vetores formando as páginas mais externas da B+.
As páginas são abertas sequencialmente sempre
ao final do arquivo.

0 1 2 3 4 5

0 1 2 3 4 5
13

• A árvore B+ se forma da mesma maneira que a


árvore B, porém o SPLIT de uma página folha da
B+ leva o elemento central para cima e o mantém
na folha.
14

os
e
Inserção
+

s
• Seja uma árvore B+ de ordem 2, utilizar o processo de
inserção de S = (41, 74, 32, 11, 22, 65, 27, 9, 18, 36, 47, 19,
a 8, 16, 33, 28, 51, 43, 54, 25, 38, 60, 35, 69, 44).
ão

41 74 32 11 22
Split (32)

41 74 32 11 22 Ordena 11 22 32 41 74

0 P
i
v
ô
15

65 27 9

32

11 22 32 27 9 41 74 65

0 1

Ordena
9 11 22 27 32 Split (22)

P
i
v
ô
16

Observar que a nova página é criada no


final do arquivo
18 36 47

22 32

9 11 22 18 41 74 65 36 47 27 32

0 1 2
Ordena

36 41 47 65 74
Split (47)
P
i
v
ô
17

19

22 32 47

9 11 22 18 19 36 41 47 27 32 65 74

0 1 2 3

Ordena
9 11 18 19 22
Split (18)
P
i
v
ô
18

8 16

18 22 32 47

0 9 1 36 2 27 3 65 4 19
11 41 32 74 22
18 47
8
16

Ordena 8 9 11 16 18

P Split (11)
i
v
ô
19

P
i Split (22)
v
ô

11 18 22 32 47

0 8 1 36 2 27 3 65 4 19 5 16
9 41 32 74 22 18
11 47
20

33 28 51 43
Split (41)
22

11 18 32 47

0 8 1 36 2 27 3 65 4 19 5 16
9 41 32 74 22 18
11 47 28 51
33
43

Ordena 33 36 41 43 47
Pivô
21

22

11 18 32 41 47

0 8 1 33 2 27 3 65 4 19 5 16 6 43
9 36 32 74 22 18 47
11 41 28 51
22

Deleção
• A partir da árvore B+ abaixo, utilizar o processo de
remoção de D = (28, 42, 37, 54).
36
28

20 28 47 78

15 26 29 39 42 54 87

10 20 21 28 29 33 37 42 44 54 56 87 91
15 26 36 39 47 78 99
23

36

20 26 47 78

15 21 29 39 42 54 87

10 20 21 26 29 33 37 42 44 54 56 87 91
15 36 39 47 78 99
24

36

20 26 47 78

15 21 29 39 44 54 87

10 20 21 26 29 33 37 44 47 54 56 87 91
15 36 39 78 99
25

36

20 26 47 78

15 21 29 39 44 54 87

10 20 21 26 29 33 39 44 47 54 56 87 91
15 36 78 99
26

36

20 26 47 78

15 21 29 39 44 56 87

10 20 21 26 29 33 39 44 47 56 78 87 91
15 36 99
27

• Inserindo 13

13
36

20 26 47 78

13 15 21 29 39 44 56 87

10 15 20 21 26 29 33 39 44 47 56 78 87 91
13 36 99
28

• Removendo agora R = (29, 56, 21)

29
36

20 26 47 78

13 15 21 29 39 44 56 87

10 15 20 21 26 29 33 39 44 47 56 78 87 91
13 36 99
29

29 56

36

20 26 47 78

13 15 21 33 39 44 56 87

10 15 20 21 26 33 36 39 44 47 56 78 87 91
13 99
30

56 21

36

20 26 44 78

13 15 21 33 39 47 87

10 15 20 21 26 33 36 39 44 47 78 87 91
13 99
31

21

36

15 26 44 78

13 20 33 39 47 87

10 15 20 26 33 36 39 44 47 78 87 91
13 99
32

Remoção
• O processo de remoção na árvore B+ é semelhante à Árvore B
na sua essência. O cuidado que se deve ter é com os elementos
Pivôs das páginas. Estes elementos são reduzidos até a ordem
das páginas interna e folha, e ao serem removidos, se estiverem
na região da B (páginas na memória dinâmica), devem também
ser removidos desta e trocados pelo novo pivô da pagina folha
correspondente.

• A remoção de um índice da B+ significa uma sinalização para a


retirada de registros da tabela que a árvore mapeia. Muito
cuidado se deve ter ai, pois se houver tabelas conectadas a
outras pelo mesmo índice da origem num Banco de Dados, será
necessário marcar os índices e registros nas demais que
precisam ser removidos, iniciando da tabela filha mais
profunda à tabela atual. Uma vez mapeados, os registros devem
ser então retirados em cada tabela um a um sem prejuízo para a
organização do Banco.
33

Remoção
• Seja uma árvore B+ de ordem 1 mostrada a seguir.
Considerar a remoção dos elementos de D  S. Onde
D=(28,42,37,54)
28
34

Remoção
42
35

Remoção
37
36

Remoção
54
37

Remoção
38

Remoção

O quê será preciso fazer para a Árvore B+


anterior baixar de nível?

Este trabalho foi realizado com o apoio do Monitor (2017)


Pedro Jorge Figueredo

Vous aimerez peut-être aussi