SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Árvores B

               Somos nós:
  Fernando Cerqueira, Jarbas Menezes Jr,
Jailson Brito, Rafael Ávila, Thiago Colares e
               Vagner Amaral.



                   Árvore B
Origem da Árvore B
• Criada por Bayer e McCreight, 1972;
• Desenvolvida no Boeing Scientific Research Labs;
• Origem do “B” é desconhecida. Hipóteses:
  – Boeing Scientific Research Labs;
  – Bayer-trees




                         Árvore B
Caracterização da Árvore B
• Árvores de pesquisa balanceadas;
• Projetadas para acessar dados em memória
  secundária;
  – Como discos ou outros dispositivos de
    armezenamento secundário de acesso direto.
• Muito utilizadas em SGBDs
  – relacionais ou não



                         Árvore B
Caracterização da Árvore B
• Objetivo: minimizar o número de acessos ao
  disco
• Como? Maximizando o número de filhos de
  um nó, que pode chegar aos milhares.
  – Número de filhos é determinada pela ordem da árvore




                          Árvore B
Exemplo de Aplicação:
 Acessar informações
   no disco rídigo.



         Árvore B
Discos
• Tecnologia barata;
• Alta capacidade
  armazenamento;
• Informações
  armazenadas em
  trilhas;
• Trilhas são divididas em
  em setores;
• Aplicações sempre
  acessam o disco em
  unidades de blocos:         (A) Trilha
    •   Exemplo: 1kb a 8kb;   (B) Setor geométrico
    •   Acesso ao disco é     (C) Setor de trilha
        muito custoso.        (D) Blocos de alocação

                                    Árvore B
Problemas
• Muito mais lentos do
  que a memória
  principal;
   •   Acesso fica custoso
• Quantidade de dados
  manipulados não cabe
  na memória principal;




                             (A) Trilha
                             (B) Setor geométrico
                             (C) Setor de trilha
                             (D) Blocos de alocação

                                   Árvore B
Solução com Árvore B
•    Uma árvore-B com grau 1001 e altura 2;
•    Pode armazenar mais de um bilhão de chaves;
•    O nó raiz permanentemente na memória principal;
•    No máximo dois acessos são necessários para ler qualquer chave!




    © 2001 Cormen et al.

                                 Árvore B
Solução com Árvore B
• Algoritmos só precisam um número constante
  de bloco na memória por vez;
• O tamanho da memória principal não afeta o
  tamanho da Árvore-B que pode ser tratada;
• O nó de uma Árvore-B é normalmente tão
  grande quando uma página de disco inteira;
  – Para evitar reads e writes do disco, que
    praticamente determinam o tempo de execução

                      Árvore B
Definição
• Em uma Árvore B de ordem m temos que:
  – Cada página contém:
     • No mínimo m registros e m+1 descendentes
     • No máximo 2m registros e 2m+1 descendentes
  – Exceto a página raiz:
     • No mínimo 1 registro e 2 descendentes




                            Árvore B
Exemplo




• Árvore B de ordem 2
• Cada página deve conter:
       • No mínimo 2 registros e 2+1 descendentes
       • No máximo 2 x 2 registros e 2 x 2 +1 descendentes
   – Exceto a página raiz:
       • No mínimo 1 registro e 2 descendentes

                                 Árvore B
Operações




   Árvore B
Inicialização
• Um nó vazio é alocado no disco;
• O nó é gravado no disco – não é executada
  nenhuma operação de leitura




                     Árvore B
Busca
• Semelhante ao da árvore de pesquisa binária;
  – Em cada nó interno
     • Se x = k[i], retorna
     • Se k[i-1] < x < k[i], procurar no filho f[i]
  – Folha
     • Se encontrou, retorna
  – Não encontrou? Retorna null
                                                      Árvore B de Ordem 2




                                   Árvore B
Inserção
• Encontrar a página ideal para inserir o registro
• Se número de registro da página < 2m
  – Processo de inserção limitado àquela página




                    Árvore B de Ordem 2
                         Árvore B
Inserção
• Se número de registro da página ≥ 2m
  – Após inserção, página é dividida
  – Registro do meio sobe para o nó pai
  – Demais registros são distribuídas igualmente entre
    os nós resultantes da divisão




                    Árvore B de Ordem 2
                         Árvore B
Inserção
• Se número de registro da página escolhida e
  do pai foram ambos ≥ 2m




                      Árvore B
Remoção
• Registro pode ser removido de qualquer nó;
• A remoção deve assegurar que nenhum nó
  ficará com menos que m – 1 registros
• O algoritimo desce a árvore B uma única vez
  (sem subir de volta)
  – Exceção: quando não envolver leitura e escrita em
    disco
• A remoção de um registro interno (não-folha)
  é recursiva.

                        Árvore B
Remoção: Exemplo de Casos




• Ordem m = 3 (“grau mínimo”)
• Máximo de registros por nó: 5 (2m – 1)
• Mínimo de registros por nó: 2 (m – 1)
Cormen at al.
http://homepages.ius.edu/rwisman/C455/html/notes/Chapter18/BT-Ops.htm

                                                   Árvore B
Remoção: Caso 1
 • A chave está em um nó folha que contém pelo menos m registros.




• Caso mais simples, eliminação de uma folha




                                 Árvore B
Remoção: Caso 2a / 2b
•   Chave está em nó interno. Nó do predecessor tem pelo menos m registros.




• O predecessor L de M é movido para cima, no lugar de M.




                                     Árvore B
Remoção: Caso 2c
• Chave está em nó interno e filhos tem apenas m-1 registros.




• G é empurrado para baixo, forma-se D E G J K
• Então G é eliminado recursivamente da folha;




                                  Árvore B
Remoção: Caso 3b
• Chave que contém D é folha;
• Mas a recursão não pode descer até D, pois o nó C L só tem dois registros;
    – Mínimo
• Logo, o nó C Lprecisa ser reorganizado.




                                    Árvore B
Remoção: Caso 3b
•   Então P é empurrado para baixo, e intercalado com C L e T X;
•   Forma-se C L P T X. D é eliminado (como no Caso 1);
•   Em seguida, a raiz é eliminada e a árvore encolhe uma unidade em altura.




                                      Árvore B
Remoção: Caso 3a
• O nó que contém o registro só tem m – 1 registros, mas possui um irmão
  com pelo menos m registros:




• C é movido para preencher a posição de B.
• E é movido para preencher a posição de C.




                                  Árvore B
Exercício




   Árvore B
Exercícios
• Escolher um campo do registro Music e
  implementar um outro índice, mantendo o
  índice atual;
• Deve ser possível fazer Pesquisa e Remoção
  usando qualquer um dos índices.
• Extra: Escolher o novo índice em tempo de
  execução


                     Árvore B

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticosCentro Paula Souza
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosLeinylson Fontinele
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Leinylson Fontinele
 
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente EncadeadasEstrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente EncadeadasLeinylson Fontinele
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Leinylson Fontinele
 

Was ist angesagt? (20)

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Aula 7 banco de dados
Aula 7   banco de dadosAula 7   banco de dados
Aula 7 banco de dados
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Árvore B
Árvore BÁrvore B
Árvore B
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de Dados
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
 
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente EncadeadasEstrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Data science
Data scienceData science
Data science
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
 

Andere mochten auch

Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivosVirgínia
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamentoLeewan Meneses
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de InformacaoJefferson Martins
 
Revolução Socialista na China e a Guerra do Vietnã
Revolução Socialista na China e a Guerra do VietnãRevolução Socialista na China e a Guerra do Vietnã
Revolução Socialista na China e a Guerra do VietnãDouglas Barraqui
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosFilipe Simão Kembo
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoNuno Pereira
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamentofelipefaleiro
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃORenan Souza Daniel
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoFelipe J. R. Vieira
 

Andere mochten auch (20)

Dia da árvore 1
Dia da árvore 1Dia da árvore 1
Dia da árvore 1
 
Arvores
ArvoresArvores
Arvores
 
Os impactos da complexidade sobre os projetos e programas x seminário.pptx
Os impactos da complexidade sobre os projetos e programas x seminário.pptxOs impactos da complexidade sobre os projetos e programas x seminário.pptx
Os impactos da complexidade sobre os projetos e programas x seminário.pptx
 
Hash e Btree
Hash e BtreeHash e Btree
Hash e Btree
 
Dia da árvore 2
Dia da árvore 2Dia da árvore 2
Dia da árvore 2
 
Dia da árvore
Dia da árvoreDia da árvore
Dia da árvore
 
Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivos
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamento
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de Informacao
 
Optimizing Search
Optimizing SearchOptimizing Search
Optimizing Search
 
Revolução Socialista na China e a Guerra do Vietnã
Revolução Socialista na China e a Guerra do VietnãRevolução Socialista na China e a Guerra do Vietnã
Revolução Socialista na China e a Guerra do Vietnã
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dados
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamento
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamento
 
Meios de armazenamento
Meios de armazenamentoMeios de armazenamento
Meios de armazenamento
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de Armazenamento
 
Dia da Árvore
Dia da ÁrvoreDia da Árvore
Dia da Árvore
 

Mehr von Thiago Colares

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsThiago Colares
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...Thiago Colares
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQLThiago Colares
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHPThiago Colares
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapThiago Colares
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?Thiago Colares
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoThiago Colares
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaThiago Colares
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Thiago Colares
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Thiago Colares
 
API Evolution and Usability
API Evolution and UsabilityAPI Evolution and Usability
API Evolution and UsabilityThiago Colares
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedorThiago Colares
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovaçãoThiago Colares
 

Mehr von Thiago Colares (16)

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondings
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQL
 
The Pragmatic Agilist
The Pragmatic AgilistThe Pragmatic Agilist
The Pragmatic Agilist
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHP
 
Mobile Usability
Mobile UsabilityMobile Usability
Mobile Usability
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e Colaboração
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédia
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)
 
API Evolution and Usability
API Evolution and UsabilityAPI Evolution and Usability
API Evolution and Usability
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedor
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovação
 

Apresentação sobre Árvores B

  • 1. Árvores B Somos nós: Fernando Cerqueira, Jarbas Menezes Jr, Jailson Brito, Rafael Ávila, Thiago Colares e Vagner Amaral. Árvore B
  • 2. Origem da Árvore B • Criada por Bayer e McCreight, 1972; • Desenvolvida no Boeing Scientific Research Labs; • Origem do “B” é desconhecida. Hipóteses: – Boeing Scientific Research Labs; – Bayer-trees Árvore B
  • 3. Caracterização da Árvore B • Árvores de pesquisa balanceadas; • Projetadas para acessar dados em memória secundária; – Como discos ou outros dispositivos de armezenamento secundário de acesso direto. • Muito utilizadas em SGBDs – relacionais ou não Árvore B
  • 4. Caracterização da Árvore B • Objetivo: minimizar o número de acessos ao disco • Como? Maximizando o número de filhos de um nó, que pode chegar aos milhares. – Número de filhos é determinada pela ordem da árvore Árvore B
  • 5. Exemplo de Aplicação: Acessar informações no disco rídigo. Árvore B
  • 6. Discos • Tecnologia barata; • Alta capacidade armazenamento; • Informações armazenadas em trilhas; • Trilhas são divididas em em setores; • Aplicações sempre acessam o disco em unidades de blocos: (A) Trilha • Exemplo: 1kb a 8kb; (B) Setor geométrico • Acesso ao disco é (C) Setor de trilha muito custoso. (D) Blocos de alocação Árvore B
  • 7. Problemas • Muito mais lentos do que a memória principal; • Acesso fica custoso • Quantidade de dados manipulados não cabe na memória principal; (A) Trilha (B) Setor geométrico (C) Setor de trilha (D) Blocos de alocação Árvore B
  • 8. Solução com Árvore B • Uma árvore-B com grau 1001 e altura 2; • Pode armazenar mais de um bilhão de chaves; • O nó raiz permanentemente na memória principal; • No máximo dois acessos são necessários para ler qualquer chave! © 2001 Cormen et al. Árvore B
  • 9. Solução com Árvore B • Algoritmos só precisam um número constante de bloco na memória por vez; • O tamanho da memória principal não afeta o tamanho da Árvore-B que pode ser tratada; • O nó de uma Árvore-B é normalmente tão grande quando uma página de disco inteira; – Para evitar reads e writes do disco, que praticamente determinam o tempo de execução Árvore B
  • 10. Definição • Em uma Árvore B de ordem m temos que: – Cada página contém: • No mínimo m registros e m+1 descendentes • No máximo 2m registros e 2m+1 descendentes – Exceto a página raiz: • No mínimo 1 registro e 2 descendentes Árvore B
  • 11. Exemplo • Árvore B de ordem 2 • Cada página deve conter: • No mínimo 2 registros e 2+1 descendentes • No máximo 2 x 2 registros e 2 x 2 +1 descendentes – Exceto a página raiz: • No mínimo 1 registro e 2 descendentes Árvore B
  • 12. Operações Árvore B
  • 13. Inicialização • Um nó vazio é alocado no disco; • O nó é gravado no disco – não é executada nenhuma operação de leitura Árvore B
  • 14. Busca • Semelhante ao da árvore de pesquisa binária; – Em cada nó interno • Se x = k[i], retorna • Se k[i-1] < x < k[i], procurar no filho f[i] – Folha • Se encontrou, retorna – Não encontrou? Retorna null Árvore B de Ordem 2 Árvore B
  • 15. Inserção • Encontrar a página ideal para inserir o registro • Se número de registro da página < 2m – Processo de inserção limitado àquela página Árvore B de Ordem 2 Árvore B
  • 16. Inserção • Se número de registro da página ≥ 2m – Após inserção, página é dividida – Registro do meio sobe para o nó pai – Demais registros são distribuídas igualmente entre os nós resultantes da divisão Árvore B de Ordem 2 Árvore B
  • 17. Inserção • Se número de registro da página escolhida e do pai foram ambos ≥ 2m Árvore B
  • 18. Remoção • Registro pode ser removido de qualquer nó; • A remoção deve assegurar que nenhum nó ficará com menos que m – 1 registros • O algoritimo desce a árvore B uma única vez (sem subir de volta) – Exceção: quando não envolver leitura e escrita em disco • A remoção de um registro interno (não-folha) é recursiva. Árvore B
  • 19. Remoção: Exemplo de Casos • Ordem m = 3 (“grau mínimo”) • Máximo de registros por nó: 5 (2m – 1) • Mínimo de registros por nó: 2 (m – 1) Cormen at al. http://homepages.ius.edu/rwisman/C455/html/notes/Chapter18/BT-Ops.htm Árvore B
  • 20. Remoção: Caso 1 • A chave está em um nó folha que contém pelo menos m registros. • Caso mais simples, eliminação de uma folha Árvore B
  • 21. Remoção: Caso 2a / 2b • Chave está em nó interno. Nó do predecessor tem pelo menos m registros. • O predecessor L de M é movido para cima, no lugar de M. Árvore B
  • 22. Remoção: Caso 2c • Chave está em nó interno e filhos tem apenas m-1 registros. • G é empurrado para baixo, forma-se D E G J K • Então G é eliminado recursivamente da folha; Árvore B
  • 23. Remoção: Caso 3b • Chave que contém D é folha; • Mas a recursão não pode descer até D, pois o nó C L só tem dois registros; – Mínimo • Logo, o nó C Lprecisa ser reorganizado. Árvore B
  • 24. Remoção: Caso 3b • Então P é empurrado para baixo, e intercalado com C L e T X; • Forma-se C L P T X. D é eliminado (como no Caso 1); • Em seguida, a raiz é eliminada e a árvore encolhe uma unidade em altura. Árvore B
  • 25. Remoção: Caso 3a • O nó que contém o registro só tem m – 1 registros, mas possui um irmão com pelo menos m registros: • C é movido para preencher a posição de B. • E é movido para preencher a posição de C. Árvore B
  • 26. Exercício Árvore B
  • 27. Exercícios • Escolher um campo do registro Music e implementar um outro índice, mantendo o índice atual; • Deve ser possível fazer Pesquisa e Remoção usando qualquer um dos índices. • Extra: Escolher o novo índice em tempo de execução Árvore B

Hinweis der Redaktion

  1. Antes de formalizarmos o conceito de árvores-B, vamos examinar porque estruturas de dadosarmazenadas em disco possuem característicasdiferentes das armazenadas na memóriaprincipal.
  2. Exemplo de árvore tree. Note que
  3. Muitasvezesdemoramais tempoparaacessarumapágina de informações e ler a leitura do disco que o tempo necessáriopara o computadorexaminar as informaçõesObservamostambémque o tempo de acessoao disco nãoéconstante – depende da distância entre a trilhaatual e a trilhadesejada
  4. Explicação do pq: https://docs.google.com/viewer?a=v&amp;q=cache:Y_pOhDF4fOUJ:www.dsc.ufcg.edu.br/~baptista/cursos/EDados/Unidade4Btree.doc+&amp;hl=pt-BR&amp;gl=br&amp;pid=bl&amp;srcid=ADGEESgx1CTemnjsTCeKPsdCJSnnDF4d9THiO7k8nyMSGVkQoPhpOVPhWZvrRWFJ_fXryolYlxDFxP9TCXIsb6lZWmM4-QMqGGsUqJ2-7qTjhmlYpZgZ9tPHFZYJYqCtuhmczF2Obsn0&amp;sig=AHIEtbTbPsYggPwj4runBcv5Z58TyCTxVg•Já que os algoritmos de manipulação deárvores-B só precisam de um número constantede blocos na memória de cada vez, o tamanhoda memória principal não afeta o tamanho daárvore-B que pode ser tratada
  5. Algoritmos de manipulação de Árvores-B só precisam de um número constante de blocos na memória de cada vez;
  6. Algunsautores,comoZiviani, nãoregistrigem m ≥ 2, mas utilizamoslimitessubtraídos de 1
  7. Nemsempreépossívelrespeitarestaregra?
  8. Binária: toma-sedecisão de remificaçãobináriaÁrvore-b: toma-se decisão de ramificação número-de-registros-do-nó+1
  9. Paiédivididoemdois, e registro do meiovaipara um nóacima.
  10. Deleting from an internal node is recursive, meaning that child nodes must be adjusted down to a leaf node since there is one less key.
  11. Encontre o predecessor (valor anterior) da registro (númeromais alto nasubárvoreàesquerda)Substitua o precedessorpelachaveque se quer remover (façaistorecursivamente) (Necessary since one less key in predecessor node. (mm?))Pare nafolha
  12. Merge G com todososregistros dos filhos. Géempurradoparabaixo, forma-se D E G J K.NóperdeG e o ponteiropara um dos filhosO filho restante(D E G J K) contém 2m – 1 registros.Então G éeliminadorecursivamente da folha;
  13. CASO 3 GERAL:http://homepages.ius.edu/rwisman/C455/html/notes/Chapter18/BT-Ops.htm (baseado no Cormen)If he key k is not present in internal node x, determine root x.ci of the appopriate child subtree that must contain k, if k is in the tree at all.Ifx.ci has only t-1 keys, execute steps 3a or 3b as necessary to guarantee descent to a node with at least t keys.Then finish by recursing on the appropriate x.c
  14. O nóquecontém o registrosó tem m – 1 chaves, mas possui um irmão com pelomenosmregistros:Give x.ci an extra key by moving a key from x down into x.ciMoving a key from x.ci immediate left or right sibling up into x and moving the appropriate child pointer from the sibling into x.ci.