Вы находитесь на странице: 1из 18

1

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL


INSTITUTO DE INFORMTICA - CINCIA DA COMPUTAO
DEPARTAMENTO
DE
INFORMTICA
APLICADA
CLASSIFICAO E PESQUISA DE DADOS INF01124

EDUARDO DA SILVA SARDO 0981/00-4


IGOR RODRIGO MACHADO DE MENEZES 1422/98-1

TRABALHO FINAL
RVORES B+

Documentao do trabalho de implementao de uma rvore B+ que simula um


pequeno banco de dados.
Prof. Dr. Maurcio Lima Pilla
Turma U

Porto Alegre, dezembro de 2004

SUMRIO

LISTA DE ABREVIATURAS E SIGLAS .........................................................

LISTA DE FIGURAS ..........................................................................................

LISTA DE TABELAS ..........................................................................................

RESUMO ............................................................................................................

ABSTRACT ........................................................................................................

INTRODUO ............................................................................................

2
RVORES B ..............................................................................................
2.1 rvores B+ ..............................................................................................
2.2 Outras variaes ...................................................................................

8
8
9

3 DEFINIO DE RVORE B+ ....................................................................


3.1 Altura da rvore B+ ................................................................................
3.2 Ordem e capacidade de uma rvore B+ ...............................................

10
10
10

4 OPERAES ..............................................................................................
4.1 Criao ......................................................................................................
4.2 Busca .......................................................................................................
4.3 Insero ....................................................................................................
4.3.1 Diviso ..................................................................................................
4.3.2
Insero Propriamente dita ................................................................
4.4 Remoo ...................................................................................................
4.4.1 Fuso ....................................................................................................
4.4.2 Remoo Propriamente dita ...............................................................

12
12
12
12
13
13
14
14
14

CONCLUSO .............................................................................................. 16

REFERNCIAS .................................................................................................. 17

LISTA DE ABREVIATURAS E SIGLAS

AVL
LRU
ms
ns

Adelson-Velskii e Landism
Less Recently Used Menos Recentemente Usado.
milisegundos
nanosegundos

LISTA DE FIGURAS

Figura 2.1: rvore B de ordem m=4 ............................................................................ 9


Figura 2.2: Exemplo de uma rvore B+ de ordem m=5 e capacidade b=4 .................... 9
Figura 3.1: Comparao de um caso mnimo de rvore B+ com altura h, ordem m e
capacidade b ............................................................................................. 11
Figura 4.1: Insero da chave 40 em nodo com espao (1) e insero da chave 10 em
nodo cheio (2). Note que a raiz tambm estava cheia, necessitando de uma
diviso recursiva. Demais nodos formam omitidos para facilitar
entendimento. ........................................................................................... 13
Figura 4.2: Remoo de chaves em uma rvore B+ de ordem m= ............................. 15

LISTA DE TABELAS

Tabela 2.1: Comparao entre memria principal e secundria .................................... 9


Tabela 3.1: Exemplos de altura mxima de rvores B+ de ordem m, capacidade b=4,
com n elementos ....................................................................................... 11

RESUMO

Este documento uma explicao terica sobre rvores B+ e fornece a base para
entende como criar um banco de dados usando uma estrutura de rvore B+, suas
vantagens sobre outros algoritmos baseados em rvores e a melhor aplicao para ela.

Palavras-chave: rvore B+.

B+-TREE
ABSTRACT
This document is a theoretic explanation about B+-trees and gives the bases to
understand how create a data banc using B+-tree structure, its advantages over other tree
based algorithms and the best application for it.

Keywords:. B+-tree, Bplus-tree.

1 INTRODUO

Esta documentao visa dar o embasamento terico sobre rvores B+, descrevendo
de forma objetiva os passos necessrios implementao de um banco de dados
hipottico estruturado na forma de uma rvore B+, suas vantagens e noes bsicas do
custo das operaes envolvidas, tanto em relao ao uso de processador quanto a
acessos a disco.

2 RVORES B

rvores B so uma variao especfica de rvores destinadas a armazenar


quantidades elevadas de dados, muito maiores do que a memria principal disponvel,
caso no qual uma rvore binria no se ajusta adequadamente.
A principal preocupao de uma rvore B armazenar os dados em memria
secundria, o disco rgido, por esse motivo sua estrutura voltada a usar blocos do
tamanho dos setores do disco rgido utilizado. Alm da estrutura em blocos, um objetivo
de uma rvore B reduzir o nmero de acessos a disco, entre 10.000 e 100.000 vezes
mais lento que a memria principal, sendo o nmero de acessos proporcional a altura da
rvore, uma arvore B com um grau de ramificao (ordem) maior que dois, para um
dado nmero de chaves, tem altura bem inferior a uma rvore AVL1 (rvore binria com
balanceamento dinmico), o que reduz significativamente o custo de uma pesquisa.
Normalmente a ordem de uma rvore B definida pelas caractersticas fsicas da
memria secundria empregada, o tamanho tpico de um setor de disco de 512 bytes,
desta forma um bloco desta rvore B+ seria de 512 bytes.
Tabela 2.1: Comparao entre memria principal e secundria
Tempo de
Velocidade de
Transferncia em
acesso
transmisso
10 ns
Memria Principal 10-9 s (10 ns)
1000 Mbyte/seg
10 Mbytes
Memria
10-3 s (10 ms)
50 Mbyte/seg
0,5 Mbytes
Secundria (disco)

2.1

rvores B+

Dentre as variaes das rvores B, est a rvore B+, cujo emprego est associado
necessidade de realizar buscas seriais no banco de dados. Devido dificuldade e alto
custo devido ao nmero excessivo de acessos a disco em uma busca serial quando os
dados esto distribudos em pginas (blocos) diferentes da memria, uma das
modificaes na rvore B original foi a de introduzir um duplo encadeamento entre as
diferentes pginas da rea de dados, de modo a permitir a leitura seqencial dos dados
das folhas, outra modificao a de replicar os ndices nas folhas, assim garantindo que
todos os dados podem ser acessados de forma seqencial.

AVL: em homenagem aos matemticos russos Adelson-Velskii e Landism 1962, rvore binria que
admire uma diferena de altura de no mximo 1 entre as suas sub-rvores esquerda ou direita.

2.2

Outras variaes

As rvores B admitem outras variaes, alm da rvore B+:


Uma delas a rvore B Virtual, onde includo um gerenciamento de memria de
modo a cachear a maior parte possvel dos dados na memria principal, melhorando
significativamente o desempenho, o acesso a disco s fito quando uma pgina no est
disponvel, substituindo outra que esteja em desuso, ou conforme a necessidade.
Outra possibilidade a rvore B*, proposta por Knuth em 1973, onde cada n possui
no mnimo dois teros das chaves.

Figura 2.1: rvore B de ordem m=4

Figura 2.2: Exemplo de uma rvore B+ de ordem m=5 e capacidade b=4

10

3 DEFINIO DE RVORE B+

Uma rvore B+ formada por nodos dimensionados conforme os setores do disco


rgido empregado. Todas as folhas esto no mesmo nvel, ou seja altura da rvore B+. O
grau mnimo t maior que um, e cada nodo interno possui no mnimo (t-1) chaves e no
mximo (2t-1) chaves, uma rvore no vazia possui pelo menos uma chave na raiz.
Por definio do trabalho ser utilizado um setor de disco do tamanho de 256 bytes.

3.1Altura da rvore B+
A altura da arvore B+ um fator importante, pois define o nmero de acessos a
disco. Desta forma uma rvore com n elementos tem sua altura h definida em relao do
grau mnimo t e o nmero de chaves:
n 1
h log
1.
2
t

3.2Ordem e capacidade de uma rvore B+


Para melhor aproveitamento, a capacidade deve ser a maior possvel, calculada
baseado no tamanho de uma pgina, ou setor fsico do disco rgido, tendo em vista o
tamanho dos dados armazenados e os elementos bsicos de um nodo como ponteiros,
etc.
Ordem m o nmero mximo de filhos de cada nodo de uma rvore. Capacidade b
o nmero mximo de dados armazenado em uma folha.
Dado um nmero total de elementos n, existe uma altura h tal que
h 2
h 1
n
m
m
b n b e h 2 log m b .
2
2
2

11

h 2

h
1

folhas
1

m
2
2

m
2
2
h 2

m
m
b
(h 2 )
folhas 2
elementos 2
2
2 2
Figura 3.1: Comparao de um caso mnimo de rvore B+ com altura h, ordem m e
capacidade b
Tabela 3.1: Exemplos de altura mxima de rvores B+ de ordem m, capacidade b=4,
com n elementos.
n 103 104 105 106 107 108
m
10
20
30
40
50
100

5
4
4
3
3
3

6
5
4
4
4
4

8
6
5
5
5
4

9
7
6
6
5
5

11
8
7
6
6
5

12
9
8
7
7
6

12

4 OPERAES

Para a implementao de um banco de dados baseado em uma rvore B+ so


necessrias operaes bsicas:
Construo: uma rvore B+ vazia criada;
Destruio: uma rvore B+, no necessariamente vazia destruda;
Busca: dada uma determinada chave feita sua busca na estrutura da rvore B+;
Insero: insere uma nova chave dentro da rvore B+, uma chave j existente
no pode ser inserida novamente;
Remoo: remove da rvore uma chave, no necessariamente a chave precisa
existir.

4.1

Criao

A operao de criao de uma rvore B+ vazia feita pela alocao de uma posio
de memria para a raiz da rvore, e pela inicializao dos valores de folha, grau e sua
gravao em disco.
A complexidade da operao de (1) e 1 acesso memria secundria.

4.2

Busca

O algoritmo de busca em uma rvore B+ uma simples generalizao do algoritmo


de busca em rvores binrias. De maneira recursiva uma chave C comparada com a
primeira chave da raiz, caso seja menor chamado recursivamente a mesma funo para
o nodo 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, ou encontrar uma chave maior ou
ser maior que as demais chaves folha.
A Busca em uma rvore B+ de uma complexidade de O(t) passos por nvel da
rvore, realizando um acesso memria secundaria. Uma busca em uma rvore B+
realiza O(h) = O (logt n) acessos a memria secundria e O(ht) = O (t logt n) operaes.

4.3

Insero

A realizao de uma insero em uma rvore B+ no to simples quanto em


rvores binrias, pois devido existncia de mais de uma chave por nodo, pode ocorrer
o fato de o nodo no qual a chave deveria ser inserida estar cheio, e para isso ser
necessrio dividir o nodo em dois.

13

4.3.1 Diviso
Quando um nodo atinge 2t-1 chaves ele considerado cheio, no podendo receber
mais nenhuma chave, mas no entanto pode ser necessria a alocao de uma nova chave
nesta posio, para isso feita a operao de diviso de nodo cheio, inserindo a chave
central no nvel superior e transformando o nodo cheio em dois novos nodos.
A operao de diviso realiza 3 acessos escrita na memria secundria e O (t)
operaes.
4.3.2 Insero propriamente dita
Para realizar a insero primeiramente necessria uma busca recursiva pela posio
onde deve ser inserida a chave.
Uma das possibilidades insero na raiz, estando ela cheia, neste caso a altura da
rvore ser alterada conforme operao de diviso, supra citada, seguida da insero da
nova chave.
A insero pode ser feita em um nodo folha ou no corpo da rvore. No primeiro caso
localizado o nodo folha e feita uma busca serial do final do vetor at encontrar a
posio onde deve ser inserida a chave, neste processo a chaves existentes so
deslocadas uma posio para criar o espao para a nova chave. Aps realizada a
insero o nodo gravado. J se for um nodo interno, ser realizada uma busca pela
sub-rvore onde deve ser inserida a chave, no caso de nodo cheio ser realizada a
diviso (figura 4.1).
No pior caso de uma insero ela se dar numa folha, necessitando O (h) chamadas
recursivas do procedimento de insero, cada uma com O (1) acessos a memria
secundria e O (t) operaes. A complexidade total de O (logt n) acessos a memria
secundria e O (t logt n) operaes.

Figura 4.1: Insero da chave 40 em nodo com espao (1) e insero da chave 10 em
nodo cheio (2). Note que a raiz tambm estava cheia, necessitando de uma diviso
recursiva. Demais nodos formam omitidos para facilitar entendimento.

4.4

Remoo

14

O caso inverso da insero, desta vez necessrio verificar o nmero mnimo de


chaves no nodo resultante (t-1), caso o nodo resultante no cumpra esta definio, devese realizar a fuso.
4.4.1 Fuso
Quando um nodo do qual deve-se remover uma chave possui (t-1) chaves, ele j est
com o tamanho mnimo admissvel, a remoo de uma chave faz necessria a fuso
deste nodo com um nodo vizinho.
No caso de dois nodos adjacentes possurem (t-1) chaves pode-se realizar a fuso
dos dois nodos onde a chave do nodo pai que divide os dois nodos adjacentes ser
reposicionado no nodo resultante juntamente com as chaves dos adjacentes.
A operao de diviso realiza 3 acessos escrita na memria secundria e O (t)
operaes.
4.3.2 Remoo propriamente dita
Um pouco mais delicada de a operao simtrica (insero), para a remoo so
necessrios alguns passos para garantir a estrutura de uma rvore B+.
A remoo de chaves ir incorrer em um dos casos conforme Figura 4.2:
(1) Remoo simples e direta, quando o nodo possui no mnimo t chaves;
(2) Remoo de chave quando o nodo possui t-1 chaves e o nodo adjacente pelo
menos t chaves;
a) Pode ser realizado emprstimo do vizinho da direita;
b) Pode ser realizado emprstimo do vizinho da esquerda;
(3) Na excluso de uma chave pode ocorrer de dois nodos adjacentes possurem
t-1 chaves, neste caso ocorrer a fuso dos dois nodos adjacentes;
(4) Na excluso de uma chave de um nodo intermedirio, pode ocorrer de dois
nodos filhos possurem t-1 chaves cada, neste caso ocorrer a fuso dos dois
nodos filhos adjacentes.
O custo das operaes idntico aos de insero, no pior caso a remoo se dar numa
folha, necessitando O (h) chamadas recursivas do procedimento de remoo, cada uma
com O (1) acessos a memria secundria e O (t) operaes. A complexidade total de
O (logt n) acessos a memria secundria e O (t logt n) operaes.

15

Figura 4.2: Remoo de chaves em uma rvore B+ de ordem m=6.

16

5 CONCLUSO

Aps o estudo de diferentes tipos de rvores, e sua comparao com rvores B+,
notasse que alm de ser uma estrutura que aproveita as caractersticas fsicas dos
computadores para um melhor desempenho, as rvores em geral tm um ganho em
relao s demais por sua altura reduzida em relao a rvores binrias, mais uma vez
reduzindo o tempo de operao com um menor nmero de acessos a disco. O ganho
ainda pode ser maior se for estruturado como uma rvore B+ Virtual, colocando uma
boa parte da rvore na memria principal, e com um gerenciamento de memria virtual
do tipo menos recentemente utilizada (LRU) ter as pginas mais recentes disponveis, o
que facilita a insero e excluso de chaves.

17

REFERNCIAS

CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L. Introduction to


Algorithms. McGraw Hill, 1990.
Projeto de Algoritmos. Disponvel em <http://www.cs.ust.hk/faculty/dimitris/
COMP530/notes/l6.pdf> acesso em dezembro de 2004.
Today's Lecture. Disponvel em <http://www.soe.ucsc.edu/classes/cmps180/Winter03/
Lectures/B+-Trees.pdf> acesso em dezembro de 2004.
ZIVIANI, N. Projeto de Algoritmos com Implementaes em Pascal e C. So Paulo,
Livraria Pioneira Editora, 1993.

18

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL


INSTITUTO DE INFORMTICA - CINCIA DA COMPUTAO
DEPARTAMENTO
DE
INFORMTICA
APLICADA
CLASSIFICAO E PESQUISA DE DADOS INF01124

EDUARDO DA SILVA SARDO 0981/00-4


IGOR RODRIGO MACHADO DE MENEZES 1422/98-1

TRABALHO FINAL
RVORES B+

Porto Alegre, dezembro de 2004

Вам также может понравиться