SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Dicionários: B-Trees


     Estruturas de Dados
           2003/04

Aula teórica de 2003.11.12 (T9)

    ©2003 Salvador Abreu

                                           tu r a s d
                                      s tru           e




                                  E




                                                      Da
                                  2003/04 9- 1
                                          9-1




                                                       ados
                                    B-Trees




                                                         os
Motivação

●   Grandes quantidades de informação
    –   Requer armazenamento externo (disco)
    –   Acesso a disco lento (várias ordens de
        grandeza pior que memória)
    –   Procurar organização que minimize acessos
        a disco talvez desprezando quantidade de
        processamento?
●   Organização em árvore
    –   Árvore de grau K
    –   N elementos: acessos = O(logK N)              tu r a s d
                                                 s tru           e




                                             E




                                                                 Da
                                              2003/04 9- 2
                                                      9-2




                                                                  ados
                                                B-Trees




                                                                    os
Exemplo

●   Registo Civil
    –   Bilhetes de Identidade
    –   Cerca de 10.000.000 registos diferentes
    –   Cada registo:
         ●   Nomes (próprio, pai, mãe): 128 bytes cada
         ●   Datas, locais, etc.: 128 bytes
         ●   => Total 1K byte por registo
●
    Servidor
    –   1 IPC @ 2GHz, 1000 APS
    –   100 utilizadores simultâneos                              tu r a s d
                                                             s tru           e
         ●   ~ 1IPC @ 20MHz, 10APS




                                                         E




                                                                             Da
                                                         2003/04 9- 3
                                                                 9-3




                                                                              ados
                                                           B-Trees




                                                                                os
Exemplo: árvore binária

●   Supondo AVL (ou outra binária
    equilibrada)
    –   Profundidade: log2(107) ~ 27
    –   Pesquisa feita em média em 27 acesso, a 10
        APS = 2.7s
●   Se variarmos o grau (N) da árvore
    –   N=5: P=log5(107) ~ 11; GD = 60%
    –   N=10: P=log10(107) ~ 7; GD = 75%
    –   N=128: P=log128(107) ~ 4; GD = 85%         s tru
                                                        tu r a s d
                                                                   e




                                               E




                                                                   Da
                                                2003/04 9- 4
                                                        9-4




                                                                    ados
                                                  B-Trees




                                                                      os
Exemplo
●
    Grau suficientemente alto:
    –   Limite superior sobre o número de acessos a disco:
        objectivo valor pequeno (3-5 acessos.)
●   Resta saber como fazer...
    –   Ideia geral: árvore N-ária.
    –   Cada nó contém K=O(N) chaves.
    –   Busca envolve fazer uma pesquisa (p/ex binária)
        sobre cada nó.
    –   Caso não esteja, desce-se para um filho particular.


                                                             tu r a s d
                                                        s tru           e




                                                    E




                                                                        Da
                                                     2003/04 9- 5
                                                             9-5




                                                                         ados
                                                       B-Trees




                                                                           os
B-Tree: Esquema


      k1        k2   k3   ki




<k1   k1<k<k2                  k>ki




                                               tu r a s d
                                          s tru           e




                                      E




                                                          Da
                                      2003/04 9- 6
                                              9-6




                                                           ados
                                        B-Trees




                                                             os
O que são: B-Trees
●   Definição (“Propriedade BT”):
    –   B-Tree de ordem M
         ●   Nós interiores:
              –   Entre ceil(M/2) e M filhos
              –   Se tiver N<=M filhos, terá exactamente N-1 chaves
         ●   Folhas: todas à mesma profundidade
              –   Por construção
              –   Têm entre 1 e M-1 chaves
         ●   Raíz: folha ou tem no máximo M filhos
    –   Nós interiores:
         ●   Referências aos filhos (F[i], i=1..M)
         ●   Chaves contidas (K[i], i=1..M-1)
    –   Folhas
                                                                               tu r a s d
         ●   Chaves contidas (K[i], i=1..M-1)                             s tru           e




                                                                      E




                                                                                          Da
                                                                      2003/04 9- 7
                                                                              9-7




                                                                                           ados
                                                                        B-Trees




                                                                                             os
Exemplos simples
●
    Ex: B-tree de ordem 3, tb designada por árvore
    2-3
    –   3: grau máximo dos nós
    –   2: número máximo de chaves nos nós
●   B-Tree de ordem 3 (i.e. árvore 2-3)




                                                      tu r a s d
                                                 s tru           e




                                             E




                                                                 Da
                                             2003/04 9- 8
                                                     9-8




                                                                  ados
                                               B-Trees




                                                                    os
B-Tree: Exemplo


                  10


    2, 5                        15


0    3     7, 8        12, 13        17, 18




                                                       tu r a s d
                                                  s tru           e




                                              E




                                                                  Da
                                              2003/04 9- 9
                                                      9-9




                                                                   ados
                                                B-Trees




                                                                     os
B-Tree: Pesquisa
●   Simples, semelhante a pesquisa binária
    –   em cada nó interior
         ●   Se X=K[i], encontramos
         ●   Se K[i-1]<X<K[i], procurar no filho F[i]
    –   nas folhas
         ●   Só resulta se encontrarmos




                                                                 tu r a s d
                                                            s tru           e




                                                        E




                                                                            Da
                                                        2003/04 9- 10
                                                                9-10




                                                                             ados
                                                          B-Trees




                                                                               os
B-Tree: Inserção
●   Inicialmente igual à pesquisa, obtemos a
    folha onde seria para inserir
    –   Forçosamente numa folha
●
    Caso não haja violação da propriedade
    BT (i.e. há menos que M valores na
    folha):
    –   Inserimos e pronto.
    –   Possivelmente há que ajustar os valores de
        mj nos no caminho até à folha
●
    Caso não caiba: temos de repor a
    quot;legalidadequot;...                                s tru
                                                        tu r a s d
                                                                   e




                                               E




                                                                   Da
                                                2003/04 9- 11
                                                        9-11




                                                                    ados
                                                  B-Trees




                                                                      os
B-Tree: Re-equilibrar (insersão)
●   Dá-se mais um irmão à folha onde se iria
    inserir:
         ●   Transita-se uma chave Km (mediana) da antiga folha
             (aumentada com a chave a inserir) para o pai
         ●   Divide-se os valores (<Km, >Km) entre as novas folhas
●   Caso não seja possível (pai já tem M filhos)
    –   Dividir o pai em dois:
         ●   cada um com a metade dos filhos (que ficam na mesma)
         ●   Transitando uma chave (mediana) do antigo pai para o
             avô
●   Caso não seja possível, repetir operação ao
    nível do avô, etc... até à raíz           uturas d            r
                                                               st      e




                                                           E




                                                                        Da
                                                            2003/04 9- 12
                                                                    9-12




                                                                         ados
                                                              B-Trees




                                                                           os
B-Tree: Re-equilibrar (insersão)
●
    Chegando à raíz, e esta estando cheia…
    –   Cria-se uma nova raíz.
         ●   Com a mediana (Km) da antiga
    –   Parte-se a antiga raíz em dois
         ●   Dividindo os valores da raíz anterior (<Km, >Km)
●
    Mantém-se os filhos e fica-se com uma árvore
    mais profunda




                                                                     tu r a s d
                                                                s tru           e




                                                            E




                                                                                Da
                                                                2003/04 9- 13
                                                                        9-13




                                                                                 ados
                                                                  B-Trees




                                                                                   os
B-Tree: Exemplo (1)
●
    Inserção dos inteiros
           0, 5, 10, 15, 2, 7, 12, 17, 3, 8, 13, 18




       0           0,5       0,5,10         5                    5


                                       0          10     0           10, 15

           5                      5                      5, 10


0, 2           10, 15      0, 2       7, 10, 15   0, 2       7             tru 15 de
                                                                              tu r a s
                                                                         s




                                                                     E




                                                                                     Da
                                                                     2003/04 9- 14
                                                                             9-14




                                                                                      ados
                                                                       B-Trees




                                                                                        os
B-Tree: Exemplo (2)
            5, 10                             5, 10


0, 2         7         12, 15          0, 2    7      12, 15, 17


                 5, 10, 15


0, 2         7            12           17


                     10


        5                         15
                                                                      tu r a s d
                                                                 s tru           e




                                                             E




                                                                                 Da
                                                               2003/04 9- 15
                                                                       9-15




                                                                                  ados
 0, 2            7           12          17                      B-Trees




                                                                                    os
B-Tree: Exemplo (3)


                   10


     2, 5                        15


0     3     7, 8        12, 13        17, 18




                                                        tu r a s d
                                                   s tru           e




                                               E




                                                                   Da
                                               2003/04 9- 16
                                                       9-16




                                                                    ados
                                                 B-Trees




                                                                      os
B-Tree: remoção
• Semelhante à inserção
• Se número de elementos da folha resultante
  >1, não precisa fazer mais nada.
• Se número de elementos da folha = 1
  – Combinar elemento restante com um irmão
  – Se passou a ser filho único, repetir operação ao
    nível superior
  – Se se chegar à raíz, toma-se como nova raíz o seu
    filho único


                                                        tu r a s d
                                                   s tru           e




                                               E




                                                                   Da
                                                2003/04 9- 17
                                                        9-17




                                                                    ados
                                                  B-Trees




                                                                      os
B-Tree: análise
• Profundidade máx. duma B-Tree de ordem M
  – ceil(logfloor(M/2) N)
• Pesquisa
  – Em cada nó, fazemos O(log M) trabalho para
    determinar por onde vamos (c/ pesquisa binária)
  – pior caso: O(log N)
• Inserção e remoção
  – Como pesquisa, mas podemos ter de fazer O(M)
    para repor as condições
  – pior caso: O(M logM N) = O((M/log M) log N)

                                                       tu r a s d
                                                  s tru           e




                                              E




                                                                  Da
                                               2003/04 9- 18
                                                       9-18




                                                                   ados
                                                 B-Trees




                                                                     os
B-Tree: usos
• Uso principal: Bases de dados
  – Árvore mantida em disco, não em memória
  – Número de acessos a nós = número de acessos a
    disco
    • Operação sempre muito lenta
    • Convem que sejam poucos (e grandes)
    • O(logM N)
  – Na prática, usam-se valores de M que:
    • sejam “grandes”
    • permitam que um nó inteiro caiba num bloco de disco
      (p/ex uma página de VM, tipicamente 8K)
    • em geral serão valores entre 32 e 256
                                                            tu r a s d
                                                       s tru           e




                                                   E




                                                                       Da
                                                    2003/04 9- 19
                                                            9-19




                                                                        ados
                                                      B-Trees




                                                                          os

Más contenido relacionado

Más de elliando dias

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojureelliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypseelliando dias
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lispelliando dias
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmerselliando dias
 

Más de elliando dias (20)

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Dicionários: B-Trees

  • 1. Dicionários: B-Trees Estruturas de Dados 2003/04 Aula teórica de 2003.11.12 (T9) ©2003 Salvador Abreu tu r a s d s tru e E Da 2003/04 9- 1 9-1 ados B-Trees os
  • 2. Motivação ● Grandes quantidades de informação – Requer armazenamento externo (disco) – Acesso a disco lento (várias ordens de grandeza pior que memória) – Procurar organização que minimize acessos a disco talvez desprezando quantidade de processamento? ● Organização em árvore – Árvore de grau K – N elementos: acessos = O(logK N) tu r a s d s tru e E Da 2003/04 9- 2 9-2 ados B-Trees os
  • 3. Exemplo ● Registo Civil – Bilhetes de Identidade – Cerca de 10.000.000 registos diferentes – Cada registo: ● Nomes (próprio, pai, mãe): 128 bytes cada ● Datas, locais, etc.: 128 bytes ● => Total 1K byte por registo ● Servidor – 1 IPC @ 2GHz, 1000 APS – 100 utilizadores simultâneos tu r a s d s tru e ● ~ 1IPC @ 20MHz, 10APS E Da 2003/04 9- 3 9-3 ados B-Trees os
  • 4. Exemplo: árvore binária ● Supondo AVL (ou outra binária equilibrada) – Profundidade: log2(107) ~ 27 – Pesquisa feita em média em 27 acesso, a 10 APS = 2.7s ● Se variarmos o grau (N) da árvore – N=5: P=log5(107) ~ 11; GD = 60% – N=10: P=log10(107) ~ 7; GD = 75% – N=128: P=log128(107) ~ 4; GD = 85% s tru tu r a s d e E Da 2003/04 9- 4 9-4 ados B-Trees os
  • 5. Exemplo ● Grau suficientemente alto: – Limite superior sobre o número de acessos a disco: objectivo valor pequeno (3-5 acessos.) ● Resta saber como fazer... – Ideia geral: árvore N-ária. – Cada nó contém K=O(N) chaves. – Busca envolve fazer uma pesquisa (p/ex binária) sobre cada nó. – Caso não esteja, desce-se para um filho particular. tu r a s d s tru e E Da 2003/04 9- 5 9-5 ados B-Trees os
  • 6. B-Tree: Esquema k1 k2 k3 ki <k1 k1<k<k2 k>ki tu r a s d s tru e E Da 2003/04 9- 6 9-6 ados B-Trees os
  • 7. O que são: B-Trees ● Definição (“Propriedade BT”): – B-Tree de ordem M ● Nós interiores: – Entre ceil(M/2) e M filhos – Se tiver N<=M filhos, terá exactamente N-1 chaves ● Folhas: todas à mesma profundidade – Por construção – Têm entre 1 e M-1 chaves ● Raíz: folha ou tem no máximo M filhos – Nós interiores: ● Referências aos filhos (F[i], i=1..M) ● Chaves contidas (K[i], i=1..M-1) – Folhas tu r a s d ● Chaves contidas (K[i], i=1..M-1) s tru e E Da 2003/04 9- 7 9-7 ados B-Trees os
  • 8. Exemplos simples ● Ex: B-tree de ordem 3, tb designada por árvore 2-3 – 3: grau máximo dos nós – 2: número máximo de chaves nos nós ● B-Tree de ordem 3 (i.e. árvore 2-3) tu r a s d s tru e E Da 2003/04 9- 8 9-8 ados B-Trees os
  • 9. B-Tree: Exemplo 10 2, 5 15 0 3 7, 8 12, 13 17, 18 tu r a s d s tru e E Da 2003/04 9- 9 9-9 ados B-Trees os
  • 10. B-Tree: Pesquisa ● Simples, semelhante a pesquisa binária – em cada nó interior ● Se X=K[i], encontramos ● Se K[i-1]<X<K[i], procurar no filho F[i] – nas folhas ● Só resulta se encontrarmos tu r a s d s tru e E Da 2003/04 9- 10 9-10 ados B-Trees os
  • 11. B-Tree: Inserção ● Inicialmente igual à pesquisa, obtemos a folha onde seria para inserir – Forçosamente numa folha ● Caso não haja violação da propriedade BT (i.e. há menos que M valores na folha): – Inserimos e pronto. – Possivelmente há que ajustar os valores de mj nos no caminho até à folha ● Caso não caiba: temos de repor a quot;legalidadequot;... s tru tu r a s d e E Da 2003/04 9- 11 9-11 ados B-Trees os
  • 12. B-Tree: Re-equilibrar (insersão) ● Dá-se mais um irmão à folha onde se iria inserir: ● Transita-se uma chave Km (mediana) da antiga folha (aumentada com a chave a inserir) para o pai ● Divide-se os valores (<Km, >Km) entre as novas folhas ● Caso não seja possível (pai já tem M filhos) – Dividir o pai em dois: ● cada um com a metade dos filhos (que ficam na mesma) ● Transitando uma chave (mediana) do antigo pai para o avô ● Caso não seja possível, repetir operação ao nível do avô, etc... até à raíz uturas d r st e E Da 2003/04 9- 12 9-12 ados B-Trees os
  • 13. B-Tree: Re-equilibrar (insersão) ● Chegando à raíz, e esta estando cheia… – Cria-se uma nova raíz. ● Com a mediana (Km) da antiga – Parte-se a antiga raíz em dois ● Dividindo os valores da raíz anterior (<Km, >Km) ● Mantém-se os filhos e fica-se com uma árvore mais profunda tu r a s d s tru e E Da 2003/04 9- 13 9-13 ados B-Trees os
  • 14. B-Tree: Exemplo (1) ● Inserção dos inteiros 0, 5, 10, 15, 2, 7, 12, 17, 3, 8, 13, 18 0 0,5 0,5,10 5 5 0 10 0 10, 15 5 5 5, 10 0, 2 10, 15 0, 2 7, 10, 15 0, 2 7 tru 15 de tu r a s s E Da 2003/04 9- 14 9-14 ados B-Trees os
  • 15. B-Tree: Exemplo (2) 5, 10 5, 10 0, 2 7 12, 15 0, 2 7 12, 15, 17 5, 10, 15 0, 2 7 12 17 10 5 15 tu r a s d s tru e E Da 2003/04 9- 15 9-15 ados 0, 2 7 12 17 B-Trees os
  • 16. B-Tree: Exemplo (3) 10 2, 5 15 0 3 7, 8 12, 13 17, 18 tu r a s d s tru e E Da 2003/04 9- 16 9-16 ados B-Trees os
  • 17. B-Tree: remoção • Semelhante à inserção • Se número de elementos da folha resultante >1, não precisa fazer mais nada. • Se número de elementos da folha = 1 – Combinar elemento restante com um irmão – Se passou a ser filho único, repetir operação ao nível superior – Se se chegar à raíz, toma-se como nova raíz o seu filho único tu r a s d s tru e E Da 2003/04 9- 17 9-17 ados B-Trees os
  • 18. B-Tree: análise • Profundidade máx. duma B-Tree de ordem M – ceil(logfloor(M/2) N) • Pesquisa – Em cada nó, fazemos O(log M) trabalho para determinar por onde vamos (c/ pesquisa binária) – pior caso: O(log N) • Inserção e remoção – Como pesquisa, mas podemos ter de fazer O(M) para repor as condições – pior caso: O(M logM N) = O((M/log M) log N) tu r a s d s tru e E Da 2003/04 9- 18 9-18 ados B-Trees os
  • 19. B-Tree: usos • Uso principal: Bases de dados – Árvore mantida em disco, não em memória – Número de acessos a nós = número de acessos a disco • Operação sempre muito lenta • Convem que sejam poucos (e grandes) • O(logM N) – Na prática, usam-se valores de M que: • sejam “grandes” • permitam que um nó inteiro caiba num bloco de disco (p/ex uma página de VM, tipicamente 8K) • em geral serão valores entre 32 e 256 tu r a s d s tru e E Da 2003/04 9- 19 9-19 ados B-Trees os