BANCO DE DADOS Índices em BD Árvores B+

Documentos relacionados
ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

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

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

Organização de Arquivos

Á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

Bases de Dados. Índices. Discos. transferência lenta. transferência rápida e em blocos (512B ~ 4KB) e aos bytes. memória.

Acesso Sequencial Indexado

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento

Modelo Relacional. Josino Rodrigues

Índices. SCE-203 Algoritmos e Estruturas de Dados II

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

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

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Árvores B Partes I e II

Processamento da Consulta. Processamento da Consulta

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

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

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

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

Sumário. Definição do Plano de Execução

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

3 Plano de Execução de Consultas

Gerência de Memória. Paginação

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

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I

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

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

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

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Ordenação e Busca em Arquivos

ORGANIZAÇÃO DE ARQUIVOS INDEXADOS

Métodos de Busca Parte 1

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

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

Índices. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Etapa III - Implementação de Operadores da Álgebra Relacional; Etapa IV - Comparação experimental de varredura sequencial x acesso aleatório

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Sistemas Operacionais. BC Sistemas Operacionais

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

Estrutura de indexação de arquivos

Hashing externo (II) Graça Nunes. Fonte: Folk & Zoelick, File Structures

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

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Profa. Dra. Cristina Dutra de Aguiar Ciferri. Estruturas de Indexação de Dados

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

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

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

Introdução Métodos de Busca Parte 1

Gerenciamento de Memória

Introdução a Ciência da Computação Estrutura e Organização das Informações PROFESSORA CINTIA CAETANO

Sistemas de Arquivos. (Aula 23)

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

Hashing convencional...

Armazenamento em disco com uso de índices

Aula 18 Árvores B e parâmetros de compilação

Organização de Arquivos. Leandro C. Cintra M.C.F. de Oliveira Thiago A. S. Pardo Cristina D. A. Ciferri

Introdução. Introdução

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Módulo 5. Arquitetura do SQL Server. Estruturas de Armazenamento. Armazenamento físico e lógico. Páginas

Árvores Binárias de Busca (ABB) 18/11

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

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

Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

Sistemas Operacionais. Sistema de Arquivos. Edeyson Andrade Gomes.

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa

Implementação de Diretórios (1)

Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS. Prof. Victor Halla

11/8/2010. Tópicos. Organização e Indexação de Dados em Memória Secundária

UFU/FACOM/BCC Gerenciamento de Bancos de Dados 2019/1-1 a Lista de Exercícios Prof. Ilmério Reis da Silva

Aula 16. Tópicos Especiais II Banco de Dados. Prof. Dr. Dilermando Piva Jr.

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

Sumário. Sumário. Algoritmos e Estruturas de Dados II Organização de Arquivos. Organização de Arquivos. Seqüência de bytes (stream)

Sistemas de arquivos

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

INE5408 Estruturas de Dados

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

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Aula 16 Árvores Patricia e Árvores B

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

Banco de Dados. Módulo 15 - Estruturas de Indexação

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

Caching. Caches do Sistema de Ficheiros

Chapter 11: Indexing and Hashing. José Alferes Sistemas de Bases de Dados - ISCTEM janeiro de 2017

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Armazenamento Secundário. Endereços no disco. Organização da informação no disco. Organização da informação no disco

Memória Virtual. Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII

ALGORITMOS DE ORDENAÇÃO

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

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

Transcrição:

BANCO DE DADOS Índices em BD Árvores B+ Bacharelado em Ciência da Computação IFCE - Campus Aracati - Semestre 2018.2 Prof. Érica Gallindo - erica.gallindo@ifce.edu.br

Arquivos de banco de dados Um arquivo de banco de dados é particionado em unidades de armazenamento de tamanho fixo chamados blocos. Blocos são tanto unidades de armazenamento como unidades de transferência de dados. Um arquivo de banco de dados é armazenado permanentemente no disco e partes dele são movidas temporariamente para a memória principal. 2

Transferência de dados entre memória e disco A memória principal é divida em unidades de armazenamento chamadas de frames (pages) O disco é dividido em unidades de armazenamento de tamanho fixo chamadas blocos. Quando um banco de dados é acessado por uma consulta SQL, alguns dos blocos de arquivos são transferidos para a memória principal. SGBDs desejam minimizar o número de transferências de bloco entre o disco e a memória. O acesso a disco pode ser reduzido mantendo-se o maior número possível de blocos na memória. Buffer de disco porção da memória disponível para armazenar cópias de blocos de disco. Gerenciador de buffer subsistema responsável por alocar espaço de buffer na memória principal. 3

Transferência de dados entre memória e disco Páginas de memória Blocos de disco output input disco buffer 4

Gerenciamento de Buffer Se o bloco não está no buffer, o gerenciador de buffer: Aloca espaço no buffer para o bloco Substitui algum outro bloco, se necessário, para gerar espaço para o novo bloco. Lê o bloco do disco para o buffer e retorna o endereço do bloco na memória principal para quem solicitou. Gerenciador de buffer também tem suporte a forced output de blocos com o objetivo de recuperação. Muitos sistemas substituem blocos usando a estratégia least recently used (LRU) 5

Organização de Arquivos Um DB é organizado como uma coleção de arquivos. Cada arquivo é uma sequência de registros Um registro é uma sequência de campos Exemplo de arquivo com 12 registros 6

Índices Quando realizamos uma consulta ou uma alteração, o SGBD é responsável por encontrar os dados e fazer a sua manipulação. Mas como os dados são armazenados internamente nos arquivos dos bancos de dados? Supondo que tenhamos uma tabela Conta com aproximadamente 1 bilhão de registros e desejássemos: 1) Encontrar todas as contas da agência UFC. 2) Encontrar o saldo do número de conta 537. Como faríamos? 7

Índices Em um livro, como você recupera uma página de leitura sabendose o assunto que se deseja ler? Índice é uma ferramenta usada pelo SGBD para facilitar a busca em tabelas nos bancos de dados Índices fornecem referências para os itens de dados que contém um valor específico. Pode haver mais de um índice para um arquivo Ex: procurar um livro por autor, assunto ou por título Um atributo ou um conjunto de atributos usados para procurar registros em um arquivo é chamado de chave de busca (search key) 8

Conceitos Básicos Mecanismos de indexação são usados para agilizar o acesso ao dado desejado. Cada estrutura de índice é associada a uma chave de busca específica Chave de Busca atributo (ou conjunto de atributos) utilizado para localizar registros em um arquivo. Um arquivo de índice consiste de entradas de índice da forma Chave de busca ponteiro Tipicamente arquivos de índices são bem menores que os arquivos de dados 9

Índices Ordenados Em um índice ordenado, as entradas de índice são armazenadas classificadas pelo valor da chave de busca. Ex: índice de um livro ou catálogo de livros em uma biblioteca Os valores das chaves de busca estão ordenados e associados com os registros de dados. Os próprios registros de dados também podem estar ordenados de alguma forma Ex: livros são armazenados em uma biblioteca de acordo com algum atributo (Eg: Dewey Decimal Classification CDD) 10

Índices Ordenados Índice Primário: é um índice cuja chave de busca especifica a ordem sequencial do arquivo Também chamado de clustering index A chave de busca (search key) de um índice primário usualmente é a chave primária Índice Secundário: é um índice cuja chave de busca especifica uma ordem diferente da ordem sequencial do arquivo Também chamado de non-clustering index. Arquivo sequencial indexado: arquivo sequencial ordenado com um índice primário 11

Arquivo Sequencial Indexado index-sequencial file Instructor id Chave primária 12

Índices densos e esparsos Uma entrada de índice (index entry ou index record) consiste: de um valor de chave de busca (search-key); e apontadores para um ou mais registros que tenham aquele valor de chave. O apontador para um registro consiste Do identificador de um bloco de disco Um deslocamento (offset) dentro de um bloco de disco para identificar o registro dentro do bloco 13

Arquivos de Índices Densos dense index files Índice denso - entrada de índice aparece para cada chave de busca no arquivo. O registro de índice contém o valor da chave de busca e um ponteiro para o primeiro registro de dados com aquele valor de chave de busca O restante dos registros com o mesmo valor de chave de busca devem ser armazenados sequencialmente depois do primeiro registro; Como o índice é agrupado, registros são armazenados na mesma ordem da chave de busca 14

Arquivos de Índices Densos dense index files Índice denso no atributo ID da relação instructor Uma entrada de índice para cada valor de chave de busca Valores de chave de busca 15

Arquivos de Índices Densos dense index files Índice denso no atributo dept_name, com o arquivo instructor ordenado por dept_name Valores de chave de busca Uma entrada de índice para cada valor de chave de busca 16

Índices Densos (Clustering x Non-Clustering) Os dois exemplos anteriores são de índices denso agrupados (dense clustering index), já que ambas relations estão armazenadas na ordem da chave de busca. O que ocorre se a relação não estiver armazenada de forma ordenada pela chave de busca? In a dense nonclustering index, the index must store a list of pointers to all records with the same search-key value. Assim, índices densos podem ser agrupados (clustering) ou não-agrupados (non-clustering) 17

Arquivos de Índices Esparsos Sparse Index Files Índice esparso: contém entradas de índices somente para alguns valores da chave de busca. Aplicável somente quando registros são ordenados sequencialmente por chave de busca; em outras palavras, somente agrupados (clustering) Para localizar um registro com a chave de busca de valor K: Encontre a última entrada de índice anterior a K, ou seja, a entrada de índice com a maior chave de busca que seja menor que K Procure o arquivo de forma sequencial, iniciando do registro para o qual aponta o registro de índice localizado 18

Ex: localizar o instrutor com o id=22222 Qual a entrada do índice com a maior chave de busca menor que K=22222? Ex de índice esparso: As palavras no início de cada página de um dicionário formam um índice esparso no conteúdo das páginas do dicionário. 19

Arquivos de Índices Esparsos sparse index files Comparado aos índices densos: Menos espaço e menos overhead de manutenção para inserção e remoção. Geralmente mais lento que os índices densos para localizar o registro. Tradeoff espaço x tempo de acesso: Acesso aos blocos é minimizado mantendo-se o tamanho dos índices o menor possível 20

Índices Multinível Suponha a construção de um índice denso sobre uma relação com 1 milhão de tuplas e que 100 entradas de índice caibam em um bloco de dados de 4kb Assim: Esse índice ocuparia 1.000.000/100*4k= 4Gb Arquivos índices grandes são armazenados como arquivos sequenciais no disco Se um arquivo de índice é pequeno o bastante para caber na memória, o tempo para localizar uma entrada é pequeno. Por outro lado, se o índice é tão grande que não cabe na memória, blocos de índice precisam ser trazidos do disco quando necessários. A busca de uma entrada no índice pode então requerer várias leituras de bloco de dados. Assim o processo de busca em índices grande pode custar muito. 22

Índices Multinível Para lidar com o problema, trata-se o índice como se fosse um arquivo sequencial e constrói-se um outer index (sparse) sobre o índice original (agora chamado inner index) O outer index pode ser sparse porque as entradas de índice estão ordenadas. Para localizar um registro Procura o registro no outer index com a maior chave menor que o valor procurado O ponteiro aponta para um bloco do inner index Repete-se a busca no inner index e chega-se ao bloco de dados que contém o registro procurado O outer index vai ocupar menos espaço na memória É possível inserir novos níveis, caso necessário 23

Índices Índices oferecem benefícios substanciais para a localização de registros de dados. Mas... A atualização de índices impõe overhead na modificação de banco de dados Quando um arquivo é modificado, todo índice para o arquivo precisa ser atualizado 24

Atualização de Índices - Inserção Realizar uma pesquisa usando o valor de chave de busca que aparece no registro a ser inserido Índices Densos Se o valor da chave de busca não aparecer no índice, então insira uma entrada de índice, com o valor de chave de busca, na posição apropriada Senão Adiciona um ponteiro para o novo registro na entrada de índice ou adiciona o registro depois dos outros registros com a mesma chave de busca Índices Esparsos Se o índice armazena uma entrada para cada bloco do arquivo, nenhuma mudança precisa ser feita no índice, a menos que um novo bloco seja criado. Nesse caso, o primeiro valor de chave de busca que aparece no novo bloco é inserido no índice 25

Atualização de Índices - Exclusão Realizar uma pesquisa usando o valor de chave de busca que aparece no registro a ser excluído Índices Densos Se o registro excluído for o único registro com seu valor específico de chave de busca, é realizada a exclusão do índice. senão, o registro armazena o ponteiro somente para o primeiro registro com o valor da chave de busca. Índices Esparsos Se houver uma entrada para a chave de busca no índice, ela é excluída substituindo a entrada no índice pelo próximo valor de chave de busca no arquivo (em ordem de chave de busca). Se o próximo valor de chave de busca já tiver uma entrada de índice, a entrada é excluída em vez de ser substituída 26

O que vimos até então... Para se obter acesso rápido aos registros em um arquivo, utilizase a estrutura de índices Cada estrutura de índice é associada a uma chave de busca específica Um arquivo pode ter múltiplos índices em distintas chaves de busca Se o arquivo que contém os registros é sequencialmente ordenado, um índice primário é um índice cuja chave de busca também define a ordem sequencial do arquivo. Normalmente, a chave de busca de um índice primário é a chave primária Índices cujas chaves de busca especificam uma ordem diferente da ordem sequencial do arquivo são chamados de índices secundários. 27

O que vimos até então... Índices ordenados Primários (ou clustering) Secundários (ou non clustering) Tipos Densos: uma entrada de índice aparece para cada chave de busca no arquivo. Para índices primários ou secundários Esparsos: uma entrada de índice aparece somente para algumas das chaves de busca. Somente para índices primários Índices Multinível 28

Atualização de Índices Índices oferecem benefícios substanciais na busca por registros. Independente do tipo de índice utilizado, todo índice deve ser atualizado sempre que um registro for inserido ou excluído do arquivo. Atualizações de índice também devem ocorrer quando atributos de chave de busca forem afetados por atualizações; Ex: se o depto de um instrutor for alterado, um índice sobre o atributo nome_dept também deverá ser adequadamente atualizado Atualização pode ser modelada como exclusão antigo + inclusão de novo (registros e índices) Dessa forma, atualizar índices impõe overhead na modificação da base de dados 29

Arquivos de Índices de Árvores B+

Arquivos de Índices de Árvore B+ Desvantagens de arquivos sequenciais indexados Performance degrada na medida em que o arquivo cresce Índices de árvores B+ são uma alternativa aos arquivos sequenciais indexados Vantagens de arquivos de índices de árvores B + : Mantém sua eficiência apesar da inclusão e exclusão de dados Desvantagens de arquivos de índices de árvores B + : Overhead extra para inserção e deleção. Adiciona overhead de espaço. Como suas vantagens superam suas desvantagens, a estrutura de índices de árvores B+ é a mais utilizada das estruturas de índices que mantém sua eficiência até mesmo para arquivos atualizados com frequência. 31

Árvore B+ Uma árvore B+ é uma árvore balanceada que satisfaz às seguintes propriedades: Todos os caminhos da raiz às folhas são do mesmo tamanho Cada página possui um máximo de n descendentes (ordem da árvore = n ) Cada nó que não é raiz ou folha tem entre n/2 e n filhos Um nó folha tem entre (n-1)/2 e n-1 valores de chaves de busca Casos especiais: Se a raiz não é uma folha, ela tem pelo menos 2 filhos Se a raiz é uma folha (isto é, não há outros nós na árvore), ela pode ter entre 0 e (n-1) valores de chaves de busca. * função teto, converte um número real no menor número inteiro maior ou igual a x 32

Exemplo de uma B + -Tree 1. Todos os caminhos da raiz às folhas são do mesmo tamanho * função teto, converte um número real no menor número inteiro maior ou igual a x 33

Exemplo de uma B + -Tree 2. Cada página possui um máximo de n descendentes (ordem da árvore = n ) N=4 * função teto, converte um número real no menor número inteiro maior ou igual a x 34

Exemplo de uma B + -Tree 3. Cada nó que não é raiz ou folha tem entre n/2 e n filhos Entre 2 e 4 filhos 3 filhos 2 filhos * função teto, converte um número real no menor número inteiro maior ou igual a x 35

Exemplo de uma B + -Tree 4. Um nó folha tem entre (n-1)/2 e n-1 valores de chaves de busca Entre 2 e 3 chaves de busca 3 chaves 2 chaves 3 chaves 2 chaves 2 chaves * função teto, converte um número real no menor número inteiro maior ou igual a x 36

Estrutura de um nó de uma árvore B+ Nó típico K i são os valores de chaves de busca (search-key values) P i são: ponteiros para os filhos (para nós não folha) ponteiros para registros (para nós folha) As chaves de busca em um nó são ordenadas K 1 < K 2 < K 3 <... < K n 1 37

Nós folhas em uma árvore B + Propriedades de um nó folha: Para i = 1, 2,..., n 1, o ponteiro P i aponta para um registro de arquivo com valor de chave de busca K i P n aponta para o próximo nó folha na ordem de chave de busca Se L i e L j são nós folha e i < j, os valores de chaves de busca de L i são menores ou iguais aos valores de chave de busca de L j i=1 i=2 i=3 i=4 38

Nós folhas em uma árvore B + Nós não folha formam um índice multinível esparso nos nós folhas. Para um nó não folha com m ponteiros Todas as chaves de busca na sub-árvore para a qual P 1 aponta são menores que K 1 Para 2 i n 1, todas as chaves de busca na sub-árvore para a qual P i aponta tem valores maiores ou iguais a K i 1 e menores que K i Todas as chaves de busca na sub-árvore para a qual P n aponta tem valores maiores ou iguais a K n 1 39

Exemplo de uma Árvore B+ Nós folha devem ter entre (n 1)/2 e n 1 valores Para esta árvore os nós folha terão entre 3 e 5 valores Nós não-folha (exceto nó raiz) devem ter n/2 e n. entre 3 e 6 filhos Árvore B + para o arquivo instructor (n = 6) Raiz que não é folha deve ter no mínimo dois filhos. 40

Consultas em Árvores B+ Localizar registro com valor de chave de busca V V = search key Define C= nó raiz while (C não é um nó folha) begin Seja i = menor número tal que V <= C.K i Se este número i não existir então Seja P m = último ponteiro não nulo do nó end senão Atribua C = C.P m se (V = C.K i ) então Atribua C = C.P i+1 senão Atribua C = C.P i /* V < C.K i */ 41

Consultas em Árvores B+ Localizar registro com valor de chave de busca V /* C é o nó folha */ Seja i o valor mínimo tal que K i = V Se existir este valor i, então siga ponteiro P i até o registro desejado. senão nenhum registro com valor de chave de busca V existe 42

Atualizações em Árvores B + 1.Quando um registro é inserido ou excluído de uma relação, os índices devem ser atualizados adequadamente. 2.Atualizações podem ser modeladas como exclusão e inserção; nos concentraremos nos últimos dois 3.Inserção e exclusão são mais complicadas que a busca, pois pode ser necessário: Dividir um nó que se torna muito grande como resultado de uma inserção Unir nós (combinar nós) que se tornaram muito pequenos como resultado de uma remoção (menos de n/2 ponteiros). 43

Atualizações em Árvores B + : Inserção 1. Encontrar o nó folha no qual o valor de chave de busca deverá aparecer (usando a mesma técnica da busca) 2. Se o valor de chave de busca já estiver presente no nó folha Adiciona o registro ao arquivo 3. Se o valor de chave de busca não estiver presente, então Adiciona o registro ao arquivo Se existe espaço, insere o par (key-value, pointer) no nó folha Caso contrário, divide o nó como discutido a seguir. 44

Atualizações em Árvores B + : Inserção Dividindo um nó folha: Pegue, de forma ordenada, os n pares (search-key value, pointer), incluindo o que está sendo inserido. Coloque os primeiros n/2 no nó original e o restante no novo nó. Seja o p o ponteiro para o novo nó e seja k o menor valor de chave de busca em p. Insert (k,p) no pai do nó que foi dividido. Se o pai ficar cheio, divide e propaga as divisões em direção ao topo. Divisão de nós procede em direção à raiz até que um nó não cheio seja encontrado. No pior caso o nó raiz pode se dividido aumentando a altura da árvore em 1. 45

B + -Tree Inserção: Divisão de nó-folha B + -Tree antes e depois da inserção de Adams 46

Atualizações em Árvores B + : Inserção Resultado do nó contendo Brandt, Califieri e Crick ao inserir Adams Próximo passo: inserir entrada com (Califieri,pointer-to-new-node) no pai 47

Consultas em Árvores B+ Na prática, poucos nós precisam ser acessados em árvores B+ Normalmente um nó tem o mesmo tamanho de um bloco de disco (tipicamente 4k) Com uma chave de busca de 32bytes e um ponteiro de disco de 8bytes, n (ordem) é em torno de 100 Se há K valores de chave de busca no arquivo, a altura da árvore não é maior que log n/2 (K). Com 1 milhão de valores de chave de busca no arquivo e n = 100 No máximo log 50 (1,000,000) = 4 nós são acessados em uma consulta. Comparação: com árvore binária balanceada com 1 milhão de chaves de busca em torno de 20 nós são acessados. Diferença significante visto que cada leitura de bloco pode exigir um acesso a disco (em torno de 20 milisegundos em um disco comum) 48

Observações sobre árvores B + Como as conexões entre nós são feitas por ponteiros, blocos logicamente próximos não precisam estar fisicamente próximos. Os níveis não-folha de uma árvore B + formam uma hierarquia de índices multiníveis esparsos. A árvore B+ contém um número relativamente pequeno de níveis. Dessa forma buscas podem ser conduzidas de maneira eficiente. O nível abaixo da raiz tem no mínimo 2* n/2 valores O próximo nível tem no mínimo 2* n/2 * n/2 valores.. etc. Se existem K valores de chaves de busca no arquivo, a altura da árvore não é maior que log n/2 (K) Inserções e remoções no arquivo podem ser manipuladas de maneira eficiente, já que os índices podem ser restruturados em tempo logarítmicos. 49

Atividade para entrega em 02/04 Construa uma árvore B+ de ordem 4 para o seguinte conjunto de valores chave: (2,3,5,7,11,17,19,23,29,31) Suponha que a árvore esteja inicialmente vazia e os valores sejam acrescentados em ordem crescente. Após a construção, insira o valor chave 9 Em seguida, remova o valor chave 23 Algoritmos Capítulo 11 páginas 494 e 498 (https://goo.gl/7pggh1) 58

FIM 59