ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Documentos relacionados
ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Arquivos Indexados. Vanessa Braganholo

Arquivos Indexados. Vanessa Braganholo

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Árvores B. Prof. Flávio Humberto Cabral Nunes

Árvores B* Letícia Rodrigues Bueno

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

Árvore-B* Profa. Dra. Cristina Dutra de Aguiar Ciferri

Seja d um número natural. Uma árvore B de ordem d é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Pesquisa em Memória Secundária. Prof. Jonas Potros

Árvores Genéricas de Busca

Acesso Sequencial Indexado

Árvores B. Definição: Seja t a ordem da árvore B. Uma árvore B de ordem t é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

INE5408 Estruturas de Dados. Gerência de Arquivos

Árvores-B + SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Árvores-B + SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Cristina Dutra de Aguiar Ciferri

Árvore-B + Profa. Dra. Cristina Dutra de Aguiar Ciferri

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de:

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores B. Prof. Leandro C. Fernandes. Estruturas de Dados. Adaptado de: Leandro C. Cintra e M.C.F. de Oliveira

INF 1010 Estruturas de Dados Avançadas

Matrizes esparsas: definição

Unidade 1 Introdução

Introdução. O que é um Banco de Dados (BD)?

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Universidade Estadual do Oeste do Parana - UNIOESTE Jhonata R.de Peder Marcelo Schuck

Sistemas de arquivos

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

Árvores B Parte IV. Revisão de Inserção. Organização. Variantes. Leandro C. Cintra Maria Cristina F. de Oliveira

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Árvores B. Árvores B Parte II. Características. Características. Construção Bottom-Up. Leandro C. Cintra Maria Cristina F. de Oliveira.

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Árvores-B + Profa. Dra. Cristina Dutra de Aguiar Ciferri. Algoritmos e Estruturas de Dados II Árvore-B +

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Árvores-B (Parte Ib) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Técnico em Informática. Banco de Dados. Profª Ana Paula Mandelli

Administração Sistemas Operacionais de Rede

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Introdução a Sistemas Gerenciadores de Banco de Dados

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

UNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL*

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Listas Lineares Ordenadas

BANCO DE DADOS. Introdução. Prof. Marcelo Machado Cunha

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Administração de Redes em Software Livre Aula 02 Instalando o GNU/Linux (CENTOS Minimal)

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach

Aplicações de listas Outras estruturas

GRAFOS E DIGRAFOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

BANCO DE DADOS. Araújo Lima. Fev / Araújo

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

Capítulo 11 Sistemas de Arquivos

Construção de árvores-b. Árvores-B (Parte II) Características Gerais. Características Gerais. Leandro C. Cintra M.C.F. de Oliveira

AULA SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS

BANCO DE DADOS Índices em BD Árvores B+

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de:

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Árvores. Exemplo de árvore 2-3-4

Algoritmo: Split. Árvores B Parte IV. Algoritmo: Split. Algoritmo: Split. Algoritmo: Split. Procedimento inicial. Parâmetros

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Sistemas de Informação. Sistemas Operacionais

Árvores-B (Parte II) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Árvores B. Árvore B (ou melhor B+)

Sumário. Índices Ordenados: Nível Único. Índices Primários. Bancos de Dados Avançados Índices. Índices: Ordenados em nível único Multiníveis

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

INE5408 Estruturas de Dados

Dicionários: B-Trees

Capítulo 8: Abstrações de dados

Sistemas de Arquivos

Transcrição:

ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES B+ É semelhante à árvore B, exceto por duas características muito importantes: Armazena dados somente nas folhas os nós internos servem apenas de ponteiros As folhas são encadeadas Isso permite o armazenamento dos dados em um arquivo, e do índice em outro arquivo separado 2

ÁRVORE B+ NA PRÁTICA Árvores B+ são muito importantes por sua eficiência, e muito utilizadas na prática: Os sistemas de arquivo NTFS, ReiserFS, NSS, XFS, e JFS utilizam este tipo de árvore para indexação Sistemas de Gerência de Banco de Dados como IBM DB2, Informix, Microsoft SQL Server, Oracle 8, Sybase ASE, PostgreSQL, Firebird, MySQL e SQLite permitem o uso deste tipo de árvore para indexar tabelas Outros sistemas de gerência de dados como o CouchDB, Tokyo Cabinet e Tokyo Tyrant permitem o uso deste tipo de árvore para acesso a dados 3

EXEMPLO DE ÁRVORE B+ DE ORDEM D = 2 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 4

EXEMPLO DE ÁRVORE B+ DE ORDEM D = 2 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 Dados (lista encadeada) 5

EXEMPLO DE ÁRVORE B+ DE ORDEM D = 2 09 30 60 80 Índice 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 Dados (lista encadeada) 6

EXEMPLO DE ÁRVORE B+ DE ORDEM D = 2 09 30 60 80 Índice 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 IMPORTANTE: Índices repetem valores de chave que aparecem nas folhas (diferente do que acontece nas árvores B) Dados (lista encadeada) 7

BUSCA Só se pode ter certeza de que o registro foi encontrado quando se chega em uma folha Notar que comparações agora não são apenas >, mas 8

EXEMPLO: BUSCA DE 60 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 9

EXEMPLO: BUSCA DE 60 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 10

INSERÇÃO Quando for necessário particionar um nó durante uma inserção, o mesmo raciocínio do particionamento em Árvore B é utilizado A diferença é que para a página pai sobe somente a chave. O registro fica na folha, juntamente com a sua chave 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 11

EXEMPLO DE INSERÇÃO EM ÁRVORE B+ INSERIR CHAVE 32 Inserir chave 32 Inserção faria página ficar com 2d+1 chaves Solução: particionar o nó 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 12

EXEMPLO DE INSERÇÃO EM ÁRVORE B+ INSERIR CHAVE 32 W 09 30 60 80 P 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 Q Criar nova página Q 13

EXEMPLO DE INSERÇÃO EM ÁRVORE B+ INSERIR CHAVE 32 Dividir as chaves entre as duas páginas (30; 32; 40; 46; 47) d chaves na página original P chave d+1 sobe para nó pai W (mas registro é mantido na nova página) d+1 chaves restantes na nova página Q W 40 09 30 60 80 P 01 02 04 09 15 20 30 32 52 56 60 65 70 80 83 Q 40 46 47 14

EXEMPLO DE INSERÇÃO EM ÁRVORE B+ INSERIR CHAVE 32 W 40 09 30 60 80 P 01 02 04 09 15 20 30 32 52 56 60 65 70 80 83 Q 40 46 47 Ajustar ponteiros da lista encadeada 15

EXEMPLO DE INSERÇÃO EM ÁRVORE B+ INSERIR CHAVE 32 Inserir o 40 em W W 09 30 40 60 80 P 01 02 04 09 15 20 30 32 52 56 60 65 70 80 83 Q 40 46 47 16

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 09 30 40 48 60 80 01 02 04 30 32 48 50 52 56 60 65 70 80 83 09 15 20 40 42 46 47 17

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 Inserir chave 44 Inserção faria página ficar com 2d+1 chaves Solução: particionar o nó 09 30 40 48 60 80 01 02 04 30 32 48 50 52 56 60 65 70 80 83 09 15 20 40 42 46 47 18

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 W 09 30 40 48 60 80 01 02 04 09 15 20 30 32 48 50 52 56 60 65 70 80 83 40 42 46 47 P Q Criar nova página Q 19

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 W 44 Dividir as chaves entre as duas páginas (40; 42; 44; 46; 47) d chaves na página original P chave d+1 sobe para nó pai W (mas registro é mantido na nova página) d+1 chaves restantes na nova página Q 09 30 40 48 60 80 01 02 04 09 15 20 30 32 48 50 52 56 60 65 70 80 83 40 42 P Q 44 46 47 20

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 W 44 09 30 40 48 60 80 01 02 04 09 15 20 30 32 48 50 52 56 60 65 70 80 83 40 42 P Q 44 46 47 Ajustar ponteiros da lista encadeada 21

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 Inserir 44 em W Não há espaço: particionar Como é nó interno, vale a mesma regra de particionamento em Árvore B W 44 09 30 40 48 60 80 01 02 04 09 15 20 30 32 48 50 52 56 60 65 70 80 83 40 42 P Q 44 46 47 22

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 W Criar nova página Q P 44 Q 09 30 40 48 60 80 01 02 04 30 32 48 50 52 56 60 65 70 80 83 09 15 20 40 42 44 46 47 23

Dividir as chaves entre as duas páginas (09; 30; 40; 44; 48) d chaves na página original P chave d+1 sobe para nó pai W EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 chaves d+2 em diante na nova página Q W 40 P Q 09 30 44 48 60 80 01 02 04 30 32 48 50 52 56 60 65 70 80 83 09 15 20 40 42 44 46 47 24

EXEMPLO DE INSERÇÃO COM PARTICIONAMENTO DE NÓ INTERNO: INSERIR CHAVE 44 Reorganizar W W 40 P Q 09 30 44 48 60 80 01 02 04 30 32 48 50 52 56 60 65 70 80 83 09 15 20 40 42 44 46 47 25

EXCLUSÃO Excluir apenas no nó folha Chaves excluídas continuam nos nós intermediários 26

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 30 09 30 60 80 01 02 04 09 15 20 30 40 46 47 52 56 60 65 70 80 83 27

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 30 O valor 30 continua no índice! 09 30 60 80 01 02 04 09 15 20 40 46 47 52 56 60 65 70 80 83 28

EXCLUSÃO QUE CAUSA CONCATENAÇÃO Exclusões que causem concatenação de folhas podem se propagar para os nós internos da árvore Importante: Se a concatenação ocorrer na folha: a chave do nó pai não desce para o nó concatenado, pois ele não carrega dados com ele. Ele é simplesmente apagado. Se a concatenação ocorrer em nó interno: usa-se a mesma lógica utilizada na árvore B 29

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 60 80 01 02 04 09 15 40 46 47 52 60 65 80 83 30

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 60 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P Q Nó ficou com menos de d entradas necessário tratar isso Soma dos registros de P e Q < 2d Usar concatenação 31

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 60 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P Q Concatenação: Passar os registros de Q para P Eliminar a chave em W que divide os ponteiros para as páginas P e Q 32

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P Q Concatenação: Passar os registros de Q para P Eliminar a chave em W que divide os ponteiros para as páginas P e Q 33

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P Q Eliminar nó Q 34

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 09 30 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P Eliminar nó Q 35

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 Nó W ficou com menos de d chaves 09 30 80 W 01 02 04 09 15 40 46 47 60 65 80 83 P 36

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 W P 09 30 80 Q 01 02 04 09 15 40 46 47 60 65 80 83 Soma de total de chaves de P e Q < 2d Solução: concatenação 37

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 W P 09 30 80 Q Apagar Q 01 02 04 09 15 40 46 47 60 65 80 83 38

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 W P Apagar Q 09 30 80 01 02 04 09 15 40 46 47 60 65 80 83 39

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 W P 09 30 80 Como a raiz ficou vazia, apagar a raiz. P é a nova raiz. 01 02 04 09 15 40 46 47 60 65 80 83 40

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 52 P 09 30 80 Como a raiz ficou vazia, apagar a raiz. P é a nova raiz. 01 02 04 09 15 40 46 47 60 65 80 83 41

EXCLUSÃO QUE CAUSA REDISTRIBUIÇÃO Exclusões que causem redistribuição dos registros nas folhas provocam mudanças no conteúdo do índice, mas não na estrutura (não se propagam) 42

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 15 09 30 60 80 01 02 04 09 15 40 46 47 52 56 60 65 70 80 83 43

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 15 W 09 30 60 80 P Q 01 02 04 09 40 46 47 52 56 60 65 70 80 83 Nó ficou com menos de d entradas necessário tratar isso A soma dos registros dos irmãos adjacentes é = 2d Solução: redistribuição Como existem 2 opções, vamos optar pelo nó da direita 44

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 15 W 09 30 60 80 P Q 01 02 04 09 40 46 47 52 56 60 65 70 80 83 MAS... Se a chave do nó pai não precisa descer (porque não tem conteúdo, tem apenas a chave), porque não podemos concatenar P e Q? Resposta: ao concatenar P e Q, a página concatenada ficaria cheia, e a próxima inserção neste nó causaria um particionamento. Para evitar isso, continuamos obedecendo o critério: fazer concatenação apenas quando a soma da quantidade de chaves < 2d, e, sempre que tivermos as duas opções, optaremos pela redistribuição, que não se propaga. 45

EXEMPLO DE EXCLUSÃO EM ÁRVORE B+ EXCLUIR CHAVE 15 W 09 46 60 80 P Q 01 02 04 09 40 46 47 52 56 60 65 70 80 83 (09; 40; 46; 47) d primeiras chaves ficam em P Chave d+1 sobe para substituir a chave que já existia lá Registros d+1 em diante ficam em Q Note que a chave 46 sobe para W para substituir a chave 30, mas o registro correspondente é colocado em Q. 46

EXEMPLO (MOSTRANDO OS DADOS NAS FOLHAS) Neste exemplo, a árvore B+ tem o nó raiz e 3 folhas Ordem da árvore é d = 2 45 20 45 RONAN M 49 CLARA F 56 RAQUEL F 68 ADRIEL M 20 MARIANA FF 23 JONAS M 24 MATHIAS M 31 SANDRO M 01 JOSE M 02 MARIA F 05 ANA F 10 MARCOS M 47

CONSIDERAÇÕES SOBRE IMPLEMENTAÇÃO EM DISCO Pode-se utilizar três arquivos: Um arquivo para armazenar os metadados Ponteiro para a raiz da árvore Flag indicando se a raiz é folha Um arquivo para armazenar o índice (nós internos da árvore) Um arquivo para armazenar os dados (folhas da árvore) 48

ESTRUTURA DO ARQUIVO DE ÍNDICE O arquivo de índice estará estruturado em nós (blocos/páginas) Cada nó possui Inteiro representando o número de chaves (m) armazenadas no nó Flag booleano que diz se página aponta para nó folha (TRUE se sim, FALSE se não) Ponteiro para o nó pai (para facilitar a implementação de concatenação) p 0, (s 1, p 1 ), (s 2,p 2 ),..., (s d,p d ), (s d+1,p d+1 ),..., (s 2d+1, p 2d+1 ), onde: p i é um ponteiro para uma página (dentro deste arquivo, se flag é FALSE, no arquivo de dados, se flag é TRUE) s i é uma chave 49

ESTRUTURA DO ARQUIVO DE DADOS O arquivo de dados também estará estruturado em nós (blocos/páginas) Cada nó possui Inteiro representando o número de chaves (m) armazenadas no nó Ponteiro para o nó pai (para facilitar a implementação de concatenação) Ponteiro para a próxima página 2d registros 50

CONSIDERAÇÕES SOBRE IMPLEMENTAÇÃO Se o sistema de armazenamento tem tamanho de bloco de B bytes, e as chaves a serem armazenadas têm tamanho k bytes, a árvore B+ mais eficiente é a de ordem d= (B / k) 1 Exemplo prático: Tamanho do bloco do disco B = 4KB = 4096 bytes Tamanho da chave k = 4 bytes d = (4096/4) 1 = 1023 Quantas chaves cada nó da árvore terá, nessa situação? 2d = 2046 chaves!

DICA Como determinar o tamanho do bloco de disco em vários sistemas operacionais: http://arjudba.blogspot.com/2008/07/how-to-determine-os-block-size-for.html 52

EXERCÍCIO: ÁRVORE B+ Passo 1) Desenhar uma árvore B+ de ordem 2 que contenha registros com as seguintes chaves: 1, 2, 3, 8, 15, 35, 36, 38, 39, 41, 43, 45,, 59 Como d = 2: Cada nó tem no máximo 4 chaves Cada nó tem no máximo 5 filhos Passo 2) Sobre o resultado do passo 1, excluir os registros de chave: 3, 38, 1, 41 Passo 3) Sobre o resultado do passo 2, incluir os registros de chave: 5, 14, 52, 53, 54 53

IMPLEMENTAÇÃO Implementar busca, inserção e exclusão em árvore B+ armazenada em disco. Detalhes estão no Google Classroom. 55

REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 5 INSTITUTO DE COMPUTAÇÃO - UFF 56

AGRADECIMENTOS Exemplo cedido por Renata Galante INSTITUTO DE COMPUTAÇÃO - UFF 57