Anda di halaman 1dari 16

Universidade Estadual do Norte Fluminense Darcy Ribeiro

DISCIPLINA: BANCO DE DADOS II


PROFESSOR: LAURO GUIMARES

TRABALHO SOBRE RVORES B E B+

ALUNO: EDUARDO PORTELLA


E-MAIL: portella.edu@gmail.com

Campos
Outubro de 2013

rvores B

So rvores de pesquisa balanceadas especialmente projetadas para


a pesquisa de informao em discos magnticos e outros meios de
armazenamento secundrio.
Minimizam o nmero de operaes de movimentao de dados
(escrita/leitura) numa pesquisa ou alterao. O grau de um n pode
ser alto. Elas podem ser consideradas como uma generalizao
natural das rvores de pesquisa binrias.
As rvores so uma boa abordagem para dados em memria. As
rvores trabalham com arquivos, mas um tipo diferente de rvore
precisa ser usado para dados externos do que para dados em
memria.
A rvore apropriada uma rvore mlti-vias, parecida com uma
rvore 2-3-4, mas com muito mais itens de dados por n. Ela se
chama rvore B (tree-B). As rvores B foram concebidas como
estrutura apropriada para armazenamento externo por R. Bayer e E.
M. McCreight em 1972. rvores M-Vias permanentemente
balanceadas so chamadas de rvore B.

Um bloco por n
O acesso a disco mais eficiente quando o dado lido ou escrito em
um bloco de uma s vez.
Em uma rvore, a entidade que contm dados o n. O ideal
armazenar um bloco inteiro de dados em cada n da rvore, deste
modo, ler um n acessa um conjunto mximo de dados em um curto
espao de tempo.

Links
Em uma rvore, precisamos tambm armazenar os links para outros
ns. Em uma rvore em memria, estas ligaes so referncias
(ou ponteiros, em linguagens como Pascal e C) para os ns em outras
partes da memria.
Para as rvores armazenadas em um arquivo em disco, as ligaes
(links) so nmeros de blocos em um arquivo.

Caractersticas

A raiz tem no mnimo uma chave e dois filhos


Uma folha tem no mnimo d chave se no tem filhos
Todas as folhas esto no mesmo nvel (balanceamento)

Pesquisa em rvores B
Primeiro, o bloco contendo a raiz lido. O algoritmo de pesquisa
ento inicia a verificao de cada um dos registros (se ele no estiver
cheio, tantos quantos o n atualmente armazena) iniciando pelo
registro 0.
Quando ele encontra um registro com chave maior, ele sabe que deve
ir para o filho que reside entre este registro e o precedente. Este
processo continua at o n correto ser encontrado.
Se uma folha alcanada sem encontrar a chave especfica, a
pesquisa no obteve sucesso.

Insero em rvores B
A operao de insero, inicialmente com a rvore vazia, deve garantir que o n raiz ser
criado. Criado o n raiz, a insero das prximas chaves seguem o mesmo procedimento:
busca-se a posio correta da chave em um n folha e insere a chave garantindo a ordenao
destas. Aps feito isso podem ocorrer duas situaes:

Pgina folha est com um nmero menor de chaves do que o mximo


permitido (d-Nesse caso apenas inserimos a chave de maneira
ordenada na pgina
Pgina folha completa ou com o nmero mximo de chaves permitido
(d-1): Nesse caso ocorre o overflow da pgina em questo e
necessrio a operao de split para manter o balanceamento da
rvore.
1. Primeiramente escolhe-se um valor intermedirio na sequncia
ordenada de chaves da pgina incluindo-se a nova chave que
deveria ser inserida. Este valor exatamente uma chave que
ordenada com as chaves da pgina estar no meio da
sequncia.
2. Cria-se uma nova pgina e os valores maiores do que a chave
intermediria so armazenados nessa nova pgina e os
menores continuam na pgina anterior (operao de split).
3. Esta chave intermediria escolhida dever ser inserido na
pgina pai, na qual poder tambm sofrer overflow ou dever
ser criada caso em que criada uma nova pgina raiz. Esta

srie de overflows pode se propagar para toda a rvore B, o que


garante o seu balanceamento na insero de chaves.

Remoo em rvores B
O algoritmo de remoo de uma rvore B deve garantir que as propriedades da rvore sejam
mantidas, pois uma chave pode ser eliminada de qualquer pgina e no apenas de pginas
folha. Nessa operao podem ocorrer underflows nas pginas, ou seja, quando h um nmero
abaixo do mnimo permitido (d/2-1) de chaves em uma pgina.

Caso da figura 1: Neste caso a remoo da chave 8 no causa o underflow na pgina


folha em que ela est, portanto ela simplesmente apagada e as outras chaves so
reorganizadas mantendo sua ordenao.

Caso da figura 2: O caso da figura 2 apresentado a tcnica de redistribuio de


chaves. Na remoo da chave 18, a pgina que contm essa chave possui uma pgina
irm direita com um nmero superior ao mnimo de chaves (pgina com chaves 24, 25 e
26) e, portanto, estas podem ser redistribudas entre elas de maneira que no final nenhuma
delas tenha um nmero inferior ao mnimo permitido.

Caso da figura 3: Nesta figura foi removido a chave 5, como no foi possivel utilizar a
tcnica de redistribuio, pois as pginas irms possuem o nmero mnimo de chaves,
ento foi necessrio concatenar o contedo da pgina que continha a chave 5 com sua
pgina irm esquerda e a chave separadora pai. Ao final do processo a pgina pai fica
com uma nica chave (underflow) e necessrio diminuir a altura da rvore de maneira
que o contedo da pgina pai e sua irm, juntamente com a raiz, sejam concatenados para
formar uma pgina nica.

Caso da figura 4: A remoo da chave 13 nesse caso foi realizado com a substituio
do 13 pelo menor nmero da subrvore direita de 13 que era o 14. Essa troca no
causou o underflow da pgina em que estava o 14 e, portanto no gerou grandes
alteraes na rvore.

Caso da figura 5: Caso semelhante ao anterior, mas esse ocorre o underflow da


pgina que contm a menor chave da subrvore direita de 13. Com isso, como no
possivel a redistribuio, concatena-se o contedo dessa pgina com sua irm direita o
que gera tambm underflow da pgina pai. O underflow da pgina pai tambm resolvido
com a concatenao com sua irm e a raiz, resultando na diminuio da altura da rvore.

Construo de uma pequena rvore B

A figura (a) mostra um n raiz que j est cheio;


Itens com chaves 20,40,60 e 80 j foram inseridas na rvore.
Um novo item de dado com a chave 70 deve inserido,
resultando na diviso de um n.
A raiz est sendo dividida, dois novos ns so criados: uma
nova raiz e um novo n para a direita do que est sendo
dividido.

Na figura (b) inserimos mais dois itens: 10 e 30.


Eles preenchem totalmente o filho da esquerda, tal como
apresentado nas figura (c).
O prximo item a ser inserido, 15, divide o filho esquerda,
como visto na figura (d).
Aqui o item 20 foi promovido para cima, na raiz.

Na fig. (e) trs itens, 75,85 e 90, so inseridos


O terceiro filho dividido, causando a criao de um novo n e
a promoo do item intermedirio, 80, para a raiz.
O resultado disto visto na figura (f).

Novamente trs itens, 25, 35 e 50, so adicionados fig. (g)


Os primeiros dois itens enchem totalmente o segundo filho
E o terceiro filho divido, provocando a criao de um novo n
e a promoo do item intermedirio, 35, para a raiz, como pode
ser visto na figura (h).

Agora a raiz est cheia.


Contudo, inseres subseqentes no necessariamente
causaro a diviso do n, porque os ns so divididos somente
quando uma nova insero em um n cheio efetuada, no
quando um n cheio encontrado em uma pesquisa sobre a
rvore.
Assim, 22 e 27 so inseridos no segundo filho sem causar
qualquer diviso, como apresentado na figura (j).

O prximo item a ser inserido, 32, no causa uma diviso, na


realidade, ele causa duas divises.
O segundo n filho, est cheio, deste modo, ele dividido,
como visto na figura(l).
O item 27, promovido a partir da diviso, no foi colocado no
seu lugar porque a raiz est cheia.
Portanto a raiz tambm precisa ser dividida, resultando no
arranjo presente na figura (M).

rvores B+
uma variante da rvore B. Os ns internos so indexados para
acesso rpido aos dados. As folhas possuem estrutura diferente da
rvore B. Elas formam um conjunto de sequncia, de modo que varrer
essa lista de folhas resulta nos dados obtidos na ordem ascendente.
Ela um ndice implementado como uma rvore B regular mais uma
lista ligada de dados.
Inserir em uma folha que tenha espao, significa colocar a folha em
ordem.
Inserir em uma folha cheia: A folha dividida, o novo n includo no
conjunto de sequncias.
A primeira chave do nono n copiada (no movida como na rvore
B) para o ascendente. Poder exigir reorganizao no nodo
ascendente. Se o ascendente est cheio, ocorre mesmo processo da
rvore B.
As localizaes dos registros esto associadas apenas s chaves
contidas nos ns-folhas; assim, uma busca termina apenas num nfolha (ou seja, a busca no para se a chave for encontrada num n
que no seja folha).
Vantagem: facilidade de percorrer os ns sequencialmente, que
uma das maiores deficincias de rvores B.

A lista encadeada de folhas de uma rvore B+ denominada


conjunto de sequncia
A busca utilizando rvore B+ pode ser vista como uma extenso da
busca sequencial indexada: cada nvel da rvore pode ser visto como
um array de ndices para o nvel inferior e o ltimo nvel um array
de ndices para os registros.
Quando uma chave removida de uma folha, ela pode ainda ser
mantida em algum n no-terminal.
rvores B+ so to eficientes quanto rvores B em termos de busca e
insero
Outra vantagem das rvores B+ que, como os ns que no so
folhas no contm ponteiros para os registros, pode-se usar o espao
economizado para aumentar o tamanho dos ns, e isto um fator de
otimizao.

Insero
A insero de uma nova chave em uma rvore B+ semelhante a
insero em uma rvore B: ocorre sempre em um n folha.
Passos:
Localizar a folha dentro da qual a chave deve ser inserida;
Localizar a posio de insero dentro da folha;
Inserir a chave;
Se, aps a insero, a folha estiver completa, realizar a ciso
da pgina.
Insero (Exemplo) ordem M = 5
Inserir chave 85

Inserir chave 60

Inserir chave 52

Inserir chave 70 <= Realizar ciso


Insero -> Ciso de Pgina

As M-1 chaves sero divididas em dois grupos:


as (M-1 div 2) chaves menores ficam na folha esquerda;
as (M-1 div 2) chaves maiores ficam na folha direita;
A maior chave da esquerda copiada para o n pai.
Insero (Exemplo - cont.)
Inserir chave 70 (antes)

Inserir chave 70 (depois)

Inserir chave 58

Inserir chave 37 <= Realizar ciso


Inserir chave 37 (depois)

Inserir chaves 54, 110

Inserir chave 230 <= Realizar ciso


Inserir chave 230 (depois)

Inserir chave 56 <= Realizar ciso


Inserir chave 56 (depois)

Remoo
Remoo de uma chave X
Caso 1: A chave X aparece apenas em um n folha.
A chave X simplesmente removida e a folha reorganizada;
Remover a chave 80 (antes)

Remover a chave 80 (depois)

Caso 2: A chave X aparece tambm em ns internos (ndice)


A chave X removida;
A folha reorganizada;
A chave X no removida dos ns internos.
Remover a chave 85 (antes)

Remover a chave 85 (depois)

Remover a chave 110 (antes)

Remover a chave 110 (depois)

Quando uma chave retirada de um n folha, o nmero de chaves


restantes pode ser menor que (M-1)/2.
Tratamentos:
Concatenao
Redistribuio

Remoo com Concatenao


Duas pginas P e Q so chamada irmos adjacentes se tm o
mesmo pai W e so apontadas por ponteiros adjacentes em W.
P e Q podem ser concatenadas se so irmos adjacentes e juntas
possuem menos de M-1 chaves.
Remoo com Concatenao
A concatenao agrupa as entradas de duas pginas em uma s;
No n pai deixa de existir uma entrada: aquela da chave que se
encontra entre os ponteiros para P e Q.
Essa chave simplesmente removida do n pai.

Referncias Bibliogrficas

[1]Tenenbaum, A. M., Langsam, Y. e Augenstein, M. J., Estrutura de


Dados Usando C, MakronBooks, 1995.
[2]Slides da professora Annabell Del Real Tamariz, da disciplina Banco
de Dados II.
[3]http://marciobueno.com/arquivos/ensino/ed2/ED2_04_Arvore_B+