Árvores B+ de busca MC202 - Estrutura de dadosafalcao/mc202/aula19-ArvoreB+.pdf · 2020. 9....

15
Árvores B+ de busca MC202 - Estrutura de dados Alexandre Xavier Falcão ([email protected]) Alan Zanoni Peixinho ([email protected]) Thiago Vallin Spina ([email protected]) 1

Transcript of Árvores B+ de busca MC202 - Estrutura de dadosafalcao/mc202/aula19-ArvoreB+.pdf · 2020. 9....

  • Árvores B+ de busca

    MC202 - Estrutura de dados

    Alexandre Xavier Falcão ([email protected])

    Alan Zanoni Peixinho ([email protected])

    Thiago Vallin Spina ([email protected])

    1

  • Árvores B+

    • Variante da á rvore B que permite acesso sequencial mais eficiente aos registros

    • Desenvolvida pensando em buscas por range de elementos em bancos de dados

    • Exemplo: retorne todos os registros com chave entre 20 e 100

    • Bastante utilizada para implementação de sistemas de arquivo (e.g., NTFS)

    2

  • Árvores B+: Características

    3

    • Mesmos princípios da ávore B, com as seguinte diferenças:1. Os nós internos não contém dados secundários dos registros, apenas as

    chaves2. Apenas as folhas cont é m os dados dos registros ou ponteiros para os

    mesmos em disco (RRNs) e, por consequência, as chaves em nós internos são replicadas nas folhas

    3. As folhas s ã o interconectadas via uma lista (possivelmente duplamente) ligada

    • Exemplo:

  • Árvores B+: Operações

    4

    • As operações de busca, inserção e remoção são efetuadas de modo similar à arvores B

    • Uma busca por range de chaves é simplificada à encontrar a primeira chave de interesse, seguida por uma operação de busca linear na lista ligada de folhas

    • Exemplo: Retorne todos os registros entre [4, 7]3 5

    1 2 3 4 5 6 7

  • Árvores B+: Inserção

    5

    • Visto que todas as chaves devem existir tanto em nó interno quanto em nó folha, ao ocorrer uma divisão de nó a chave mediana deve ser copiada para o novo nó pai e mantida no novo nó folha

    • Lembramos que inserções sempre ocorrem em folhas

    • Exemplo:– Insira 4

    1 2 3 3

    3 41 2

  • Árvores B+: Remoção

    6

    • Durante remoções, temos dois casos básicos:1. A chave a ser removida está em um nó folha: basta executar a remoção

    normalmente2. A chave a ser removida est á em um n ó interno: como ela deve ser

    substituída por seu antecessor, basta buscá-lo em seu filho esquerdo, fazer a substituição e depois chamar a função de remoção recursivamente para a subárvore à direita, tratando underflow como em árvores B

    • Exemplo: – Remova 3

    1 2 43

    3 41 2

    2

    3 41

  • Árvores B+: Exemplo

    7

    • Considere a seguinte á rvore B+ que guarda em disco registros cujas chaves s ão nomes

    • Dado que v á rios nomes possuem um prefixo em comum (e.g., FOLK e FOLKS), podemos guardar a árvore de modo mais eficaz visando reduzir o espaço que ela ocupa

  • Exemplo: Árvores B+ com prefixo simples

    8

    • O conceito de separador do tipo prefixo simples permite aumentar o n ú mero de separadores (ponteiros) por nó da árvore, reduzindo sua altura

    • O prefixo simples que separa um bloco do anterior é a cadeia de caracteres mais curta que diferencia a última chave do bloco anterior da primeira do bloco atual

  • Árvores B+ com prefixo simples: Remoção

    9

    • Se removermos os registros com chaves EMBRY e FOLKS, os separadores continuam válidos

  • Árvores B+ com prefixo simples: Remoção

    10

    • Ao remover FOLKS, o prefixo FR seria mais apropriado, contudo, se a á rvore for mantida em disco o custo de atualização da mesma pode não compensar

    • Logo, vale a pena manter a chave FOLKS ainda que não esteja presente na árvore

  • Árvores B+ com prefixo simples: Exemplos com mudanças

    11

    • Mudan ç as nos separadores/prefixos podem acontecer sempre que ocorre divis ão durante inserções ou redistribuição/união durante remoções

    • Exemplo: Inserção de registro com chave AYERS na árvore original causa criação de AY

  • Árvores B+ com prefixo simples: Exemplos com mudanças

    12

    • Mudan ç as nos separadores/prefixos podem acontecer sempre que ocorre divis ão durante inserções ou redistribuição/união durante remoções

    • Exemplo: Remoção de registro com chave CAMP causa eliminação de CAM

  • Árvores B+ com prefixo simples: Estrutura dos nós

    13

    • Cada nó da árvore bem como os elementos do conjunto de sequências são blocos de tamanho fixo em disco

    • Para facilitar a indexação em disco, os blocos devem ter o mesmo tamanho em ambas estruturas, porém os separadores são de tamanho variável

    • Em vez de um vetor de chaves/separadores, usa-se uma única cadeira de caracteres para armazenar os separadores e um vetor de índices inteiros com a posição relativa dos separadores

    • O n ú mero atual de separadores e o vetor de endere ç os dos filhos tamb é m s ão armazenados

    • A busca (binária) é feita através do vetor de índices e como a única limitação é o tamanho do bloco, a árvore B tem ordem variável por nó

  • Árvores B e B+: Variantes

    14

    • Uma variante comum das á rvores B e B+, denominada á rvore B*, mantém cada nó com pelo menos 2/3 de chaves

    • Logo, os tratamentos de overflow e underflow são executados assim que essa condição é violada, podendo até mesmo copiar mais de uma chave por vez dos n ó s irm ã os para manter a estrutura consistente, quando possível

    • Exemplo:

  • Árvores B e B+: Variantes

    15

    • Uma possível mudança em todos os casos é guardar as chaves (e ponteiros para filhos) como uma árvore binária em cada nó, ao invés de utilizar um vetor, visando agilizar os tratamentos de overflow e underflow na hora de copiá-las/removê-las