Você está na página 1de 19

Monografia - rvore B+

Estrutura de Dados 2
Grupo:
Andrei Figueiredo, Andressa Oliveira, Bianca Albuquerque, Bruno Ferreira, Fellipe Pimentel,
Fernanda Oliveira, Flvio Wildner, Mayara Marques, Reinaldo Moraes.

ndice
1. Introduo
2. Histrico (quem e quando criou)
3. Estrutura da rvore sendo apresentada
4. Diferenas em relao rvore B
5. Algoritmo de busca
6. Algoritmo de insero
7. Algoritmo de excluso
8. Dicas de implementao
9. Quando utilizar
10. Referncias

Introduo
O presente trabalho sobre o estudo da rvore B+. Este projeto visa introduzir o
assunto, contextualizando a parte de sua histria, as diferenas em relao
rvore B e mostrando sua estrutura bsica, assim alcanando o objetivo de inferir o
conhecimento sobre a rvore B+.
A rvore B+ uma estrutura de dados derivada das rvores B, mas com uma forma
diferente de armazenamento de suas chaves, assim modificando tambm os
algoritmos de insero, busca e remoo de chaves. Essa estrutura muito
empregada em banco de dados e sistemas de arquivos pois visam reduzir as
operaes de leitura e escrita em memria secundria, uma vez que, essas
operaes so demoradas para um sistema computacional.
Atravs dessa estrutura foi possvel organizar um arquivo de modo que o
processamento sequencial e aleatrio de chaves fossem eficientes.
A maneira de obter essa organizao atravs da rvore B+ mantendo todas as
chaves de busca em seus ns folha de maneira que o acesso sequencial ordenado
das chaves de busca seja um processo mais eficiente.
O trabalho est organizado de forma que ser possvel adquirir o conhecimento
sobre essa estrutura com o propsito de utiliz-la da melhor forma possvel. Desta
maneira prosseguindo no projeto mostrando os algoritmos de busca, insero e
excluso da rvore B+, finalizando-o informando algumas dicas de implementao,
e em quais casos necessria sua utilizao e como faz-la.

Histria
A histria sobre o surgimento da rvore B+ no muito clara, pois no h um
consenso grande sobre quem realmente a criou e onde ela surgiu.
Em algumas pesquisas encontra-se fontes que afirmam que a rvore B+
aparentemente foi proposta por Donald Ervin Knuth e grande parte da
documentao sobre essa estrutura encontrada em forma de artigos ao invs de
livros.
Porm outras fontes que fazem referncia rvore B+, fazem essa referncia
atravs de uma vinculao com a rvore B. Onde dizem que a rvore B foi descrita
pela primeira vez no jornal Organizao e Manuteno de ndices Ordenados
grandes. Acta Informatica 1: 173-189 (1972) por Rudolf Bayer e Edward M.
McCreight, contudo a introduo do conceito da rvore B+ no feita de maneira
incisiva neste documento, em vez disso, a noo de manter todos os dados em ns
folha, que a estrutura conhecida hoje como rvore B+, levantada como uma
variante da rvore B, mas no especificada como uma estrutura independente.
Uma pesquisa inicial de rvores B, abrangendo tambm rvores B+ de Douglas
Comer: "The Ubiquitous B-Tree", ACM Computing Surveys. No qual ele observa que
a rvore B+ foi utilizada em um software de acesso a dados da IBM, afirmando esta
suposio baseado em um artigo que a IBM publicou em 1973.
A rvore B+ surgiu devido ao fato de existir uma certa deficincia na rvore B, no
que diz respeito ao alto custo de acesso ao disco para percorrer esta estrutura
sequencialmente quando os dados esto distribudos em pginas (blocos)
diferentes da memria.
Na rvore B+ todas as chaves so mantidas em ns folhas, e algumas chaves so
repetidas em ns no-folha para definir os caminhos para a localizao dos
registros individuais, j que na rvore B+ os dados s so encontrados nos ns
folhas.
As folhas so ligadas atravs de uma lista duplamente encadeada, de modo a
oferecer um caminho sequencial para percorrer as chaves na rvore.
Podemos citar algumas vantagens dessa estrutura de dados, como o aumento da
eficincia da localizao do prximo registro na rvore, que cai de O(log2N) em
rvore B para O(1) em rvore B+, outro benefcio que no necessrio manter
nenhum ponteiro de registro em ns no-folha e alm disso nesta estrutura
qualquer caminho da raiz para qualquer umas das folhas possui comprimento igual.

Estrutura da rvore sendo apresentada


Para definir uma rvore B+ devemos levar em considerao disco de memria
secundria utilizado e a quantidade de memria primria disponvel. Assim, para
escolher o tamanho de uma pgina de sequence set e, portanto, quantas chaves
esta pode armazenar uma tarefa dependente do disco utilizado: suponhamos
que cada pgina folha armazene d chaves.
O index set, como dito anteriormente, apenas carrega cpias de chaves para
referenciar a busca e sua construo semelhante ao de uma rvore B.
Suponhamos que estes ns internos possam apontar para n ns filhos, ou seja, uma
rvore B com no mximo n-1 chaves por pgina.
Com tais suposies, diferentemente das rvores B, os nmeros d e n-1 no so
necessariamente iguais, mas, manter o tamanho fsico em arquivo dessas pginas
iguais facilita a implementao da estrutura e geralmente o melhor a se fazer
manter o tamanho fsico em arquivo de ambas as pginas iguais.

Pginas internas
As pginas internas apresentam apenas referncias para a localizao das chaves
de busca contidas nas pginas folha. Estas pginas incluem a pgina raiz da rvore
e todos os nodos internos (exceto as pginas folha). Ou seja, as pginas internas
funcionam como um ndice que apenas apontam para a localizao exata de uma
chave e sua construo semelhante ao de uma rvore B com nmero mnimo de
chaves igual a n/2-1 e mximo de n-1 por pgina.

Pginas folha
Nas pginas folha esto abrigadas todas as chaves inseridas e durante o processo
de insero e remoo de chaves estas podem sofrer overflows ou underflows
conforme estas violem o nmero mximo igual a d ou mnimo igual a d/2
permitido de chaves.

Diferenas em relao rvore B


No geral, as rvores B e B+ so bem semelhantes, possuindo apenas algumas
excees que sero abordadas nesse tpico.
A estrutura da rvore B+ tem sua estrutura de dados do tipo rvore derivada da
rvore B, mas com uma alterao no modo de armazenamento das chaves. Embora
essa diferena no gere grande alterao na gama de aplicao em banco de dados
e sistemas de arquivos, os algoritmos de insero e remoo so diferentes, j que
a rvore B+ mantem todas as chaves de busca em seus ns folha.
A motivao desta caracterstica conseguir fazer um acesso sequencial ordenado
nas chaves de busca, tornando o processo mais eficiente do que em uma rvores B
simples. Ou seja, ns folhas formam uma lista duplamente encadeada para um
acesso dos elementos em ordem sequencial, caso necessrio. Este acesso
sequencial s possvel na rvores B com o auxlio de um algoritmo que faa a
leitura da mesma em ordem, gerando um custo maior neste processo.
Com o objetivo de manter essa propriedade de acesso sequencial, cada n folha
possui um apontador para o prximo elemento, como na imagem.

A organizao dos ns internos semelhante a de uma rvore B, onde o n


armazena cpias de chaves para referenciar as buscas, mas no contm as chaves
em si.
Outra semelhana com as rvores B, o fato das chaves estarem ordenadas tanto
em suas pginas internas quanto em pginas folha. Dessa forma, para encontrar a
chave k+1 ao realizar uma busca por uma chave k (sua sucessora na ordem), basta
verificar a chave ao lado de k (caso k+1 esteja na mesma pgina de k) ou carregar a
prxima pgina contida na lista de pginas para verificar qual chave sucede k. Tal
procedimento em rvores B seria mais custoso, pois seria necessrio buscar por
k+1 iniciando pela raiz da rvore caso k+1 no estivesse na mesma pgina de k. Em
comparao com as rvores B, este tipo de acesso sequencial s chaves um dos
principais benefcios proporcionados pelas rvores B+.

Algoritmo de Busca
Semelhante ao realizado na rvore B, o algoritmo de busca em uma rvore B+,
percorre a rvore da raiz at uma pgina folha. A pesquisa no para se a chave
procurada for encontrada em uma pgina ndice, pois todos os registros esto
guardados apenas em pginas folhas. Caso a chave encontrada pertena uma
pgina ndice, a busca segue pelo apontador direita at que uma pgina folha
seja encontrada.
De maneira recursiva, uma chave C comparada com a primeira chave da raiz. Caso
ela seja menor, chamada recursivamente a mesma funo para o n do filho mais
esquerda. Caso contrrio, compara com as chaves seguintes at encontrar uma
que seja maior ou, caso no encontre, buscar o filho mais direita recursivamente
at encontrar a chave em uma folha, encontrar uma chave maior ou ser maior que
as demais chaves folha(caso a chave no seja encontrada).
Dessa forma quando buscamos uma chave k, percorremos a rvore de cima para
baixo carregando as pginas internas e selecionando a pgina apontada pelo
ponteiro correspondente ao intervalo no qual pertence k. Caso uma cpia de k
esteja numa pgina interna, devemos carregar a pgina direita de k. Ao encontrar
uma pgina folha, o algoritmo deve buscar k nesta e responder se ela se encontra
ou no.

Passos do algoritmo de busca do registro 60.

Fonte: http://homepages.dcc.ufmg.br/~rainerpc/cursos/pa/aulas/10arvoresb+.pdf

Algoritmo de Insero
A insero em uma rvore B+ feita somente em suas folhas, anlogo ao que
acontece na rvore B. Deve-se respeitar o nmero mnimo (m/2) e mximo(m) de
filhos em cada pgina. Caso o nmero de elementos da pgina seja igual a m,
operao de ciso deve ser feita.
Para se inserir um elemento em uma arvore B+ de ordem m, os seguintes passos
devem ser realizados:
Localizar a folha em que o elemento deve ser inserido.
Localizar a posio de insero dentro da folha.
Inserir o elemento.
Se aps inserir o elemento a folha estiver completa, realiza-se a ciso.

Abaixo segue um exemplo de insero em uma arvore B+ de ordem 3:


Elementos: 1-2-3-4-5-6-7

Inserindo o elemento 1

Inserindo o elemento 2

Inserindo o elemento 3

Inserindo o elemento 4

Aps a insero do elemento 4, a pgina completada, ou seja, o nmero mximo


de elementos por pgina extrapolado, ocorrendo a ciso ou split da pgina.

Inserindo elemento 5

Novamente a capacidade da pagina estourada. Aplica-se a ciso.

Feito
a
ciso,
a
capacidade
da
pgina raiz tambm extrapolada. O processo de ciso deve ser efetuado,
resultando configurao abaixo.

Inserindo o elemento 6

Inserindo o elemento 7

Na insero do elementos de 6 e 7, mais 3 operaes de ciso foram necessrias,


resultando na arvore abaixo.

Remoo
Um elemento s pode ser removido de uma pgina folha, entretanto algumas
verificaes so necessrias na hora da excluso. Seja m a ordem de uma rvore B+.
O nmero de filhos que cada pgina pode ter no mnimo (m/2) filhos e no
mximo m filhos. Isso significa que a quantidade mnima e mxima de elementos
em cada pgina (m/2)-1 e m-1 respectivamente.

Caso 1
Seja n a quantidade de elementos de uma pgina folha. Aps a retirada do
elemento desta pgina: n > (m/2)-1. Este o caso mais simples, nenhuma
modificao estrutural da rvore precisar ser feita. Vejamos um exemplo de
rvore que possui m = 5 como ilustrado na f igura 1.

Figura 1. Remoo da chave 10


Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B

Aps a excluso do elemento 10, nenhuma alterao foi realizada.

Caso 2
Aps a retirada do elemento da pgina folha: n < (m/2)-1. Neste caso, h 2
possibilidades de modificao para manter a organizao da rvore. So elas: a
redistribuio e concatenao.

Redistribuio
Sejam pginas irms p1 e p2, retira-se um elemento de p1 tal que n1 < (m/2)-1; n2 >
(m-1)/2.

Transfere-se o menor elemento de p2 para p1, caso p2 esteja direita de


p1 ou o maior elemento de p2 para p1, caso p2 esteja esquerda;
A flag de separao entre as pginas substituda pela chave do menor dos
elementos restantes em p2, caso ela esteja direta de p1 ou pela chave do
elemento transferido caso p2 esteja esquerda.

Um exemplo da redistribuio mostrado na figura 2.

Figura 2. Remoo da chave 2


Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B

A redistribuio tambm pode ser feita em pginas adjacentes que no so irms.


Suponhamos que um elemento de uma pgina p foi excludo. Caso a irm estivesse
com o nmero mnimo de elementos, haveria a possibilidade de transferir o maior
elemento da pgina anterior a p ou o m
enor elemento da pgina posterior.
Neste caso, a flag que separa os pais destas pginas deve ser substituda pela
chave do elemento que foi transferido, caso ele seja da pgina anterior ou pela
chave do menor elemento entre aqueles que restaram da pgina posterior. A
imagem abaixo (figura 3) mostra a redistribuio feita a partir da pgina anterior a
p.

Figura 3. Remoo da chave 30


Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B

Concatenao
A concatenao realizada quando no h possibilidade de redistribuio entre
pginas adjacentes irms e no irms. A concatenao propagvel e, quando
atinge a raiz, a rvore diminui sua altura. Sejam p1 e p2 pginas irms adjacentes.
Ao remover um elemento de p1, n1 < (m/2)-1.
-

Verifica-se o tamanho (n2) de p2 .


Se n2 = (m/2)-1 (possui nmero mnimo de elementos), ento os elementos
de p1 e p2 sero inseridos em uma pgina p.
O ponteiro que apontava para p1 excludo e o ponteiro que apontava p2
agora passa a apontar para p.

Caso o pai de p tenha um nmero de flags inferior a (m/2)-1, a concatenao desta


pgina dever ser realizada tambm. Isso explica o porqu a concatenao
propagvel. Segue um exemplo de concatenao na f igura 4.

Figura 4. Remoo do elemento 61


Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B

Dicas de Implementao
1. Utilize sempre as melhores tcnicas de balanceamento para manter todas as
folhas no mesmo nvel.
2. Tenha certeza que cada n possui pelo menos da metade das chaves.
3. A Altura da sua rvore, sempre estar por volta de log (n)/log (k/2), onde N
o nmero de valores da rvore e K o nmero mximo de chaves para cada
bloco.
4. Um Algoritmo de busca da raiz at suas folhas funciona de forma mais
eficiente do que um algoritmo especfico para suas folhas.
5. Todo caminho da raiz at uma folha X, deve ter o mesmo tamanho, citado no
tpico 3.

Quando Utilizar rvore B+


1.
2.
3.
4.
5.
6.

Quando preciso de meios eficientes de acesso aos dados.


Quando necessrio um acesso sequencial.
Quando preciso diminuir a altura da rvore.
Quando preciso representar o funcionamento de um banco de dados.
Quando uma rvore B no suficiente para armazenar todos os registros.
Quando no se pode prejudicar performance com excluso, incluso e
adio.

Referncias
https://prezi.com/s0oi7_7da1o6/arvores-b/
http://othonbatista.com/arquivos/unifacs/estrutura-dados-2/aulas/aula-arvore-b+.pdf
http://othonbatista.com/arquivos/unifacs/estrutura-dados-2/aulas/aula-arvore-b+.pdf
http://homepages.dcc.ufmg.br/~rainerpc/cursos/pa/aulas/10arvoresb+.pdf
http://www.inf.ufrgs.br/~irmmenezes/lib/exe/fetch.php?media=user:trabalho_final_cpd.pdf
http://www.univasf.edu.br/~marcelo.linder/arquivos_aed2/aulas/aula6.pdf
http://www.univasf.edu.br/~marcelo.linder/arquivos_aed2/aulas/aula7.pdf
https://www.youtube.com/watch?v=CYKRMz8yzVU - B+ Tree Basics 1
http://www.ufjf.br/jairo_souza/files/2009/12/5-Indexa%C3%A7%C3%A3o-Arvore_B.pdf
https://en.wikipedia.org/wiki/B%2B_tree#History
https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B
https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

Você também pode gostar