Escolar Documentos
Profissional Documentos
Cultura Documentos
Trabalho Prático 2
Árvores B+
Dody Mambuque
Edmilson Manjate
Idácio Zibia
Wagner Devete
Docente:
Maio, 2019
Árvores B+, Crispino, Dody, Edmilson,Idácio e Wagner.
ÍNDICE
RESUMO...................................................................................................................................II
CAPÍTULO 1 INTRODUÇÃO..................................................................................................3
1.1 Introdução...........................................................................................................3
1.2 Justificação do Tema.................................................................................................3
1.5 Objectivos.................................................................................................................3
1.6 Resultados Esperados................................................................................................4
2. CAPÍTULO 2 FUNDAMENTACÃO TEÓRICA..................................................................5
2.1 Fundamentação Teórica............................................................................................5
2.1.1 Páginas internas.........................................................................................6
2.2. Funcionamento.........................................................................................................7
2.2.1. Inserção.....................................................................................................7
2.2.2. Remoção...............................................................................................................8
2.2.3. Pesquisa.....................................................................................................9
2.3. Vantagens...............................................................................................................10
2.4. Aplicação...............................................................................................................10
2.5. Estudo comparativo com outros tipos de árvores..................................................11
2.2.1. Caracteristicas das árvores B..................................................................11
I
RESUMO
O presente trabalho, Árvores B+, que são estruturas de dados do tipo árvores, tem como
objetivo falar das árvores B+, seu funcionamento, vantagens, aplicações, assim como fazer
um estudo comparativo com os outros tipos de arvores. Por fim, será apresentado um applet,
com as principais funcionalidades deste tipo de árvores, como forma de solidificar o conteúdo
teórico do trabalho.
II
CAPÍTULO 1 INTRODUÇÃO
1.1 Introdução
Uma árvore B+ é uma estrutura de dados do tipo árvore derivada das árvores B, mas com
uma forma diferente de armazenamento, que é o uso de suas chaves. Estas estruturas de
dados são muito empregadas em base de dados e sistemas de arquivos como o NTFS para
o Microsoft Windows, o sistema de ficheiros ReiserFS para Unix, o XFS para IRIX e Linux,
e o JFS2 para AIX, OS/2 e Linux..
1.5 Objectivos
Objectivo Geral:
O presente trabalho tem a finalidade de apresentar a estrutura de dados Árvores B+,
na organização e manutenção de dados e arquivos
Objectivos Específicos:
Dar a conhecer a definição de Árvore B+;
Apresentar o seu funcionamento;
Apresentar as suas Vantagens;
Identificar sua aplicação;
Fazer um estudo comparativo com as outras árvores.
3
1.6 Resultados Esperados
4
2. CAPÍTULO 2 FUNDAMENTACÃO TEÓRICA
A ideia inicial desta variação da árvore B é manter todas as chaves de busca em seus nós
folha de maneira que o acesso sequencial ordenado das chaves de busca seja um processo
mais eficiente do que em árvores B. Obviamente tal acesso sequencial também é possível nas
Árvores B mas, para isso, seria necessário algum algoritmo semelhante ao percurso em
ordem realizado numa árvore binária.
Para manter o acesso sequencial, cada nó folha contém apontadores para seus predecessores
ou sucessores na sequência de chaves e como nas árvores B, as chaves estão ordenadas tanto
em suas páginas internas quanto em páginas folha. Dessa forma, quando realizamos uma
busca por uma chave k e para encontrarmos a chave k+1, ou seja sua sucessora na ordem,
basta verificar a chave ao lado de k caso k+1 esteja na mesma página de k ou carregar a
próxima página contida na lista de páginas para verificar qual chave sucede k. Tal
procedimento em árvores B, seria mais dispendioso, pois, deveríamos buscar por k+1
iniciando pela raiz da árvore caso k+1 não estivesse na mesma página de k. Em comparação
com as árvores B, este tipo de acesso sequencial às chaves é um dos principais benefícios
proporcionados pelas árvores B+.
Além desta característica, também devemos analisar suas semelhanças com as árvores B. A
organização das páginas internas ou no inglês index set é semelhante a de uma árvore B, este,
por sua vez, armazena cópias de chaves para referênciar as buscas, mas não contém as chaves
em si. Já no sequence set estão as páginas folha que contém as chaves inseridas na árvore e
funciona como uma lista encadeada permitindo o acesso sequencial ordenado às chaves
independente do index set.
Para definir uma árvore B+ devemos levar em consideração alguns aspectos relativos ao
disco de memória secundária utilizado e a quantidade de memória primária disponível.
Assim, para escolher o tamanho de uma página de sequence set e, portanto, quantas chaves
5
esta pode armazenar é uma tarefa dependente do disco utilizado: suponhamos que cada
página folha armazene d chaves.
O index set, como dito anteriormente, apenas carrega cópias de chaves para referênciar a
busca e sua construção é semelhante ao de uma árvore B. Suponhamos que estes nós internos
possam apontar para n nós filhos, ou seja, uma árvore B com no máximo n-1 chaves por
página.
Com tais suposições, diferentemente das árvores B, os números d e n-1 não são
necessariamente iguais, mas, manter o tamanho físico em arquivo dessas páginas iguais
facilita a implementação da estrutura e geralmente o melhor a se fazer é manter o tamanho
físico em arquivo de ambas as páginas iguais.
As páginas internas apresentam apenas referências para a localização das chaves de busca
contidas nas páginas folha. Estas páginas incluem a página raiz da árvore e todos os nodos
internos (exceto as páginas folha). Ou seja, as páginas internas funcionam como um índice
que apenas apontam para a localização exata de uma chave e sua construção é semelhante ao
de uma árvore B com número mínimo de chaves igual a ⌈n/2⌉-1 e máximo de n-1 por página.
Nas páginas folha estão abrigadas todas as chaves inseridas e durante o processo de inserção
e remoção de chaves estas podem sofrer overflows (lotação) ou underflows (défice)
considerando que estas violem o número máximo igual a d ou mínimo igual a ⌊d/2⌋ permitido
de chaves.
6
2.2. Funcionamento
2.2.1. Inserção
Apenas inserimos a chave de maneira a manter a ordenação das chaves. Como mostra a
figura abaixo.
A página folha em questão deve sofrer uma operação de split. Tal operação cria uma nova
página em arquivo dividindo as chaves entre a nova página e a anterior. Assim devemos
escolher uma chave intermediária da sequência formada por todas as chaves da página folha
inclusive a chave a ser inserida e distribuir essas chaves de maneira que a nova página
contenha a chave intermediária e as chaves maiores do que ela e a página anterior contenha as
chaves menores do que a chave intermediária. Após isso a chave intermediária deve ser
inserida no index set semelhante ao processo de inserção em árvores B.
7
Figura 3: Antes e depois da inserção da chave 25 na árvore B+. Aqui a chave intermediária
do processo de split é a chave 22.
2.2.2. Remoção
8
Figura 4: Antes e depois da remoção da chave 10.
Figura 5: Antes e depois da remoção da chave Figura 6:Antes e depois da remoção chave 30
chave 2.
2.2.3. Pesquisa
A operação de pesquisa sobre uma árvore B+ pode ser realizada de duas maneiras: iniciando
a busca (linear ou binária) pelo apontador para o sequence set ou pelo apontador para a raíz
da árvore. O método mais eficiente é pelo apontador para a raíz na qual é semelhante ao
realizado numa árvore B. Dessa forma quando buscamos uma chave k, percorremos a árvore
de cima para baixo carregando as páginas internas e selecionando a página apontada pelo
ponteiro correspondente ao intervalo no qual pertence k e caso uma cópia de k esteja numa
página interna devemos carregar a página à direita de k. Encontrado uma página folha o
algoritmo deve buscar k nesta e responder se ela se encontra ou não. De salientar que a
operação de pesquisa sempre leva a uma página folha.
9
Fig.7. Pesquisar por 60.
2.3. Vantagens
2.4. Aplicação
Árvores B+ são muito importantes por sua eficiência, e muito utilizadas na prática,
nomeadamente:
Sistemas de arquivo NTFS, ReiserFS, NSS, XFS, e JFS utilizam este tipo de árvore
para indexação;
Sistemas de Gerência de Base de Dados como IBM DB2, Informix, Microsoft SQL
Server, Oracle 8, Sybase ASE, PostgreSQL, Firebird, MySQL e SQLite suportam este
tipo de árvore para indexar tabelas;
Outros sistemas de gerência de dados como o CouchDB, Tokyo Cabinet e Tokyo
Tyrant suportam este tipo de árvore para acesso a dados.
10
2.5. Estudo comparativo com outros tipos de árvores
Como foi dito anteriormente, as árvores B+, são uma variação das árvores B. Sendo assim
compete-nos fazer um estudo comparativo entre estas duas variantes juntamente com as
árvores B*, basendo-nos na comparação das suas características.
11
CAPITULO 3 CONCLUSÕES E RECOMENDAÇÕES
Conclusão
Em jeito de conclusão o grupo concluiu que a árvore B+ é semelhante à árvore B, exceto por
duas características muito importantes: armazena dados somente nas folhas – os nós internos
servem apenas de ponteiros e as folhas são encadeadas. Isso permite o armazenamento dos
dados em um arquivo, e do índice em outro arquivo separado.
- Para a busca é concluída quando se a tem certeza de que o registro foi encontrado quando se
chega em uma folha.
- Para inserção, quando for necessário particionar um nó durante uma inserção, o mesmo
raciocínio é utilizado, a diferença é que para a página pai sobe somente a chave. O registro
fica na folha, juntamente com a sua chave. Mas ATENÇÃO: isso vale apenas se o nó que está
sendo particionado for uma folha. Se não for folha, o procedimento é o mesmo utilizado na
árvore B.
- Para a remoção apenas no nó folha e as chaves excluídas continuam nos nós intermediários.
1
4. BIBLIOGRAFIA
Gazzola, M. G. (s.d.). Em D. C. Ciferri, Arvore B, B* e B+.
Szwarcfiter, J., & Markezon, L. (s.d.). Estruturas de Dados e seus Algoritmos (3a ed.). LTC.
https://pt.wikipedia.org/wiki/Usu%C3%A1rio:Aexpedito/B%2Btree;
http://www.ic.unicamp.br/~afalcao/mc202/aula19-ArvoreB+.pdf;
http://www2.ic.uff.br/~vanessa/material/ed/12-ArvoreBMais.pdf;
https://marciobueno.com/arquivos/ensino/ed2/ED2_04_Arvore_B+.pdf;
http://www2.ic.uff.br/~vanessa/material/ed2/09-ArquivosIndexados.pdf;
http://www2.ic.uff.br/~vanessa/material/ed2/09-ArquivosIndexados.pdf;