Árvore b, b*e( b+ - uspwiki.icmc.usp.br/images/8/8e/scc578920131-b.pdf ·...

157
ICMCUSP Base de Dados 1 Árvore B, B* e B+ Murilo Gleyson Gazzola Slides: Profa. Dra. CrisAna Dutra de Aguiar Ciferri

Upload: others

Post on 18-Jan-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   1  

Árvore  B,  B*  e  B+  

Murilo  Gleyson  Gazzola    

Slides:  Profa.  Dra.  CrisAna  Dutra  de  Aguiar  Ciferri  

 

Page 2: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   2  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  -­‐  Árvore  B*  -­‐  Arvore  B+  

Page 3: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   3  

Estrutura  de  Dados  de  Árvore  

A  

B   C   D  

E   F  

J   K  

G   H   I  

Legenda nó raiz

nó folha nó interno

Page 4: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   4  

Estrutura  de  Dados  de  Árvore  

A  

B   C   D  

E   F  

J   K  

G   H   I  

Nível  

0  

1  

2  

3  subárvore  para  o  nó  B  

Árvore  desbalanceada  

Page 5: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   5  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  -­‐  Árvore  B*  -­‐  Árvore  B+  

 

Page 6: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   6  

ObjeAvos  para  balancear  uma  árvore  de  pesquisa  

•  GaranAr  que  os  nós  sejam  distribuídos  por  igual,  de  modo  que  a  profundidade  da  árvore  seja  minimizada  para  determinado  conjunto  de  chaves  

•  Tornar  a  velocidade  de  pesquisa  uniforme,  de  modo  que  o  tempo  médio  para  encontrar  qualquer  chave  aleatória  seja  aproximadamente  o  mesmo    

Page 7: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   7  

Árvores  de  Pesquisa  

•  Uma   árvore   de   pesquisa   de   ordem   p   é   uma  árvore  que  contém  no  máximo  p-­‐1  valores  de  pe squ i sa   e   p   pon te i r o s   na   o rdem  <P1,C1,P2,C2,...Pq-­‐1,Cq-­‐1,Pq>  

 

Page 8: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   8  

ObjeAvos  para  balancear  uma  árvore  de  pesquisa  

•  GaranAr   que   os   nós   sejam   distribuídos   por  igual,  de  modo  que  a  profundidade  da  árvore  seja   minimizada   para   determinado   conjunto  de  chaves  

Page 9: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   9  

Estrutura  Lógica  de  um  Nó  

chave  1  

chave  q  

chave  3  

chave  2  

chave  q-­‐1  

...  

<  chave  1   >  chave  1  <  chave  2  

>  chave  2  <  chave  3  

>  chave  q-­‐1  <  chave  q  

>  chave  q  

Page 10: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   10  

Tópicos  

-­‐  Árvore  de  Pesquisa  +  Árvore  B  

–  CaracterísAcas  –  Inserção  –  Pesquisa  –  Remoção  – Análise  

-­‐  Árvore  B*  -­‐  Arvore  B+  

 

Page 11: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   11  

Árvore-­‐B  

•  São  árvores  de  pesquisa  balanceadas  projetadas  para  funcionar  bem  em  discos  magnéAcos  ou  outros  disposiAvos  de  armazenamento  secundário  (Cormen,  T.)  

•  Muitos  SGBD  usam  árvores  B  ou  variações  de  árvores  B  para  armazenar  informações  

Page 12: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   12  

Árvore-­‐B  

•  Método  genérico  para  o  armazenamento  e  a  recuperação  de  dados  – voltado  para  arquivos  volumosos    – proporciona  rápido  acesso  aos  dados    – possui  custo  mínimo  de  overhead  

•  Referência    – Bayer,  R.;  McCreight,  E.  Organiza:on  and  Maintenance  of  Large  Ordered  Indexes.    

– Boing  CorporaAon,  1972.  

Page 13: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   13  

Árvore-­‐B  

•  Autores  por  Bayer  e  McCreight,  1972  •  Trabalho  foi  desenvolvido  na  Boeing  ScienAfic  Researh  Labs.  

•  São   árvores   de   pesquisa   balanceadas  projetadas   para   funcionar   bem   em   discos  magnéAcos   ou   outros   disposiAvos   de  armazenamento  secundário  (Cormen,  T.)  – voltado  para  arquivos  volumosos    – proporciona  rápido  acesso  aos  dados    

Page 14: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   14  

CaracterísAcas  

•  Índice  – extremamente  volumoso  

•  Buffer-­‐pool  pequeno  – apenas  uma  parcela  do  índice  pode  ser  carregada  em  memória  principal  

– operações  baseadas  em  disco  

•  Desempenho    – proporcional  a  logKI    ou  melhor  

•   I:  tamanho  do  índice  •   K:  tamanho  da  página                de  disco  

Page 15: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   15  

CaracterísAcas  

•  Normalmente  um  nó  da  árvore  B  é  tão  grande  quanto  uma  página  de  disco  inteira.  

•  Desempenho  (Goodrich  M.)  – Um  árvore  B  com  n  itens  tem  complexidade  de      E/S    

•  O(logBn)  para  operações  de  pesquisa/atualização  e  usa  O  (n/B)  blocos.    

– B  é  o  tamanho  de  um  bloco.  

Page 16: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   16  

CaracterísAcas  

•  Desempenho  – O  número  de  acessos  ao  disco  exigidos  para  a  maioria  das  operações  em  uma  árvore  B  é  proporcional  a  sua  altura  (Cormen,  T.).  

– Uma  árvore  B  com  n  itens  tem  complexidade  de      E/S    

•  O(logBn)  para  operações  de  pesquisa/atualização  e  usa  O  (n/B)  blocos.    

– B  é  o  tamanho  de  um  bloco.  

Page 17: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   17  

CaracterísAcas  

•  Desempenho  – O  número  de  acessos  ao  disco  exigidos  para  a  maioria  das  operações  em  uma  árvore  B  é  proporcional  a  sua  altura  (Cormen,  T.).  

Page 18: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   18  

CaracterísAcas  

•  Nó  – seqüência  ordenada  de  chaves  – conjunto  de  ponteiros  

•  número  de  ponteiros  =  número  de  chaves  +  1  

•  Ordem  – número  máximo  de  ponteiros  que  pode  ser  armazenado  em  um  nó  

– exemplo:  árvore  B  de  ordem  8  

Page 19: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   19  

CaracterísAcas  

•  Nó  – seqüência  ordenada  de  chaves  – conjunto  de  ponteiros  

•  número  de  ponteiros  =  número  de  chaves  +  1  

•  Ordem  – número  máximo  de  ponteiros  que  pode  ser  armazenado  em  um  nó  

– exemplo:  árvore  B  de  ordem  8  •  máximo  de  7  chaves  e  8  ponteiros  

 

Page 20: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   20  

Nomenclatura  

•  Formalização  da  terminologia    – especifica  precisamente  as  propriedades  que  devem  estar  presentes  para  uma  estrutura  de  dados  ser  qualificada  como  árvore-­‐B  

– direciona  a  implementação  do  algoritmo  de  remoção  da  árvore-­‐B  

•  Problema  –  literatura  não  é  uniforme  no  uso  e  definição  dos  termos    

Page 21: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   21  

CaracterísAcas  

•  CaracterísAcas  – balanceada  – boCom-­‐up  para  a  criação  (em  disco)  

•  nós  folhas  →  nó  raiz  

Page 22: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   22  

Ordem  

•  Bayer  and  McGreight  (1972)  Cormen  (1979)  – número  mínimo  de  chaves  que  podem  estar  em  uma  página  da  árvore  

•  Knuth  (1973)  – número  máximo  de  descendentes  que  uma  página  pode  ter    

•  facilita  a  determinação  de  nó  cheio  

⇒   chaves  =  ordem  –  1  (máximo)  usado  na  disciplina  

Page 23: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   23  

Página  ou  Nó  das  Árvores  B  

•  Quando  uma  árvore  de  pesquisa  possui  mais  de  uma  chave  por  nó,  ela  deixa  de  ser  binária  e  passa  a  ser  chamadas  n-­‐árias.  

•  Os  nós  são  mais  comumentes  chamados  de  páginas  ao  invés  de  nó.    (Ziviani)  

Page 24: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   24  

Ordem  

•  Bayer  and  McGreight  (1972)  Cormen  (1979)  – número  mínimo  de  chaves  que  podem  estar  em  uma  página  da  árvore  

•  Knuth  (1973)  – número  máximo  de  descendentes  que  uma  nó  pode  ter    

•  facilita  a  determinação  de  nó  cheio   usado  na  disciplina  

Page 25: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   25  

Ordem  

•  Bayer  and  McGreight  (1972)  Cormen  (1979)  – número  mínimo  de  chaves  que  podem  estar  em  uma  página  da  árvore  

•  Knuth  (1973)  – número  máximo  de  descendentes  que  uma  nó  pode  ter    

•  facilita  a  determinação  de  nó  cheio   usado  na  disciplina  

Page 26: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   26  

Nó  Folha  

•  Bayer  and  McGreight  (1972)    – nível  mais  baixo  das  chaves  

•  Knuth  (1973)  – um  nível  depois  do  nível  mais  baixo  das  chaves    ⇒   folhas:  registros  de  dados  que  podem  ser      apontados  pelo  nível  mais  baixo  das  chaves  

usado  na  disciplina  

Page 27: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   27  

campo  de    referência  (omiAdo)  

chave    de    

busca  

Estrutura  Lógica  de  um  Nó  

chave  1  

chave  q  

chave  3  

chave  2  

chave  q-­‐1  

...  

<  chave  1   >  chave  1  <  chave  2  

>  chave  2  <  chave  3  

>  chave  q-­‐1  <  chave  q  

>  chave  q  

campos  de    tamanho  fixo  

Page 28: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   28  

registro  completo  

chave    de    

busca  

Estrutura  Lógica  de  um  Nó  

chave  1  

chave  q  

chave  3  

chave  2  

chave  q-­‐1  

...  

<  chave  1   >  chave  1  <  chave  2  

>  chave  2  <  chave  3  

>  chave  q-­‐1  <  chave  q  

>  chave  q  

Page 29: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   29  

Árvore-­‐B  de  Ordem  m  

•  Split  –   os  descendentes  são  divididos  o  mais  uniformemente  possível  entre  as  páginas  velha  e  nova  

•  Cada  página,  exceto  a  raiz  e  os  nós  folhas  – ⎡m/2⎤  descendentes  (pelo  menos)    – ⎡m/2⎤  -­‐  1  chaves  (no  mínimo)  

Page 30: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   30  

Árvore-­‐B  de  Ordem  m  

•  Split  –   os  descendentes  são  divididos  o  mais  uniformemente  possível  entre  as  páginas  velha  e  nova  

•  Cada  página,  exceto  a  raiz  e  os  nós  folhas  – ⎡m/2⎤  descendentes  (pelo  menos)    – ⎡m/2⎤  -­‐  1  chaves  (no  mínimo)  

Page 31: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   31  

Definição  Formal  

•  Árvore-­‐B  com  ordem  m  –  cada  página  possui  um  máximo  de  m  descendentes  –  cada  página,  exceto  a  raiz  e  as  folhas,  possui  no  mínimo  ⎡m/2⎤  descendentes  à  taxa  de  ocupação  

–  a  raiz  possui  pelo  menos  2  descendentes,  a  menos  que  seja  um  nó  folha  

–  todas  as  folhas  aparecem  no  mesmo  nível  –  uma  página  interna  com  k  descendentes  contém    k-­‐1  chaves  

–  uma  folha  possui  no  mínimo  ⎡m/2⎤  -­‐  1  chaves  e    no  máximo  m  -­‐  1  chaves  à  taxa  de  ocupação  

Page 32: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   32  

Exemplo  

D   H   K  

A   B   C   E   G   I   J   L   M  *   *   *   *   *   *  *   *  *  *  *   *   *   *   *   *

Ordem  4  

Page 33: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   33  

Tópicos  

-­‐  Árvore  de  Pesquisa  +  Árvore  B  

–  CaracterísAcas  – Inserção  –  Pesquisa  –  Remoção  – Análise  

-­‐  Árvore  B*  -­‐  Arvore  B+  

 

Page 34: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   34  

Inserção  de  Dados  (Chave)  

•  CaracterísAca  – sempre  realizada  nos  nós  folhas    

•  Situações  a  serem  analisadas  – árvore  vazia  – overflow  no  nó  raiz  –  inserção  nos  nós  folhas  

Page 35: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   35  

Inserção:  Situação  Inicial  

•  Criação  e  preenchimento  do  nó  – primeira  chave:  criação  do  nó  raiz  – demais  chaves:  inserção  até  a  capacidade  limite  do  nó  

•  Exemplo  – nó  com  capacidade  para  7  chaves  – chaves:  letras  do  alfabeto  – situação  inicial:  árvore  vazia  

Page 36: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   36  

•  Chaves  B  C  G  E  F  D  A  –  inseridas  desordenadamente  – manAdas  ordenadas  no  nó  

•  Ponteiros  (*)  – nós  folhas:  -­‐1  ou  fim  de  lista  (NIL)  – nós  internos:  RRN  do  nó  filho  ou  -­‐1    

•  Nó  raiz  (=  nó  folha)  

Inserção:  Situação  Inicial  

F  *   G   *  *  E   *  D   *  C   *  B  *  *   A  

Page 37: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   37  

•  Chaves  B  C  G  E  F  D  A  •  Ponteiros  (*)  

– nós  folhas:  -­‐1  ou  fim  de  lista  (NIL)  – nós  internos:  RRN  do  nó  filho  ou  -­‐1    

•  Nó  raiz  (=  nó  folha)  

Inserção:  Situação  Inicial  Inseridas  ordenadas  ou  desordenadas?  Ocorre  overflow?  

Page 38: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   38  

•  Chaves  B  C  G  E  F  D  A  •  Ponteiros  (*)  

– nós  folhas:  -­‐1  ou  fim  de  lista  (NIL)  – nós  internos:  RRN  do  nó  filho  ou  -­‐1    

•  Nó  raiz  (=  nó  folha)  

Inserção:  Situação  Inicial  

F  *   G   *  *  E   *  D   *  C   *  B  *  *   A  

Inseridas  ordenadas  ou  desordenadas?  

Page 39: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   39  

*   *  *  

•  Passo  1  –  parAcionamento  do  nó  (split)  – nó  original  →  nó  original  +  novo  nó    

•  split  1-­‐to-­‐2  – as  chaves  são  distribuídas  uniformemente  nos  dois  nós  

•  chaves  do  nó  original  +  nova  chave  

•  Exemplo:  inserção  de  J  

Inserção:  Overflow  Nó  Raiz  

*   *  *  D   *  C   *  B  *  *   A   *   *  *  J  G   *  F  *  *   E  

Page 40: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   40  

•  Passo  1  –  parAcionamento  do  nó  (split)  – nó  original  →  nó  original  +  novo  nó    

•  split  1-­‐to-­‐2  – as  chaves  são  distribuídas  uniformemente  nos  dois  nós  

•  chaves  do  nó  original  +  nova  chave  

Inserção:  Overflow  Nó  Raiz  

Page 41: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   41  

•  Passo  1  -­‐  Inserção  J  

Inserção:  Overflow  Nó  Raiz  

Split  

Insere  J  

Page 42: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   42  

*  *   *   *  *  

•  Passo  2  –  criação  de  uma  nova  raiz  – a  existência  de  um  nível  mais  alto  na  árvore  permite  a  escolha  das  folhas  durante  a  pesquisa  

•  Exemplo  

Inserção:  Overflow  Nó  Raiz  

*   *  *  *  *  *   *   *  *  *  *  

*   *  *   *  *  *  

qual  deve  ser  a  chave  separadora?  

Page 43: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   43  

•  Passo  3  –  promoção  de  chave  (promo:on)  – a  primeira  chave  do  novo  nó  resultante  do  parAcionamento  é  promovida  para  o  nó  raiz  

•  Exemplo  

Inserção:  Overflow  Nó  Raiz  

*   *  *   *  *  *  

*   *  *  *   *  *  D   *  C   *  B  *  *   A   *   *  *  J  G   *  F   *  *  

E  

Page 44: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   44  

Inserção:  Nós  Folhas  

•  Passo  1  –  pesquisa  – a  árvore  é  percorrida  até  encontrar  o  nó  folha  no  qual  a  nova  chave  será  inserida  

•  Passo  2  –  inserção  em  nó  com  espaço  – ordenação  da  chave  após  a  inserção  – alteração  dos  valores  dos    campos  de  referência    nó  folha  em  

memória  principal  

Page 45: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   45  

Inserção:  Nós  Folhas  

•  Passo  2  –  inserção  em  nó  cheio  – parAcionamento  

•  criação  de  um  novo  nó    (nó  original  →  nó  original  +  novo  nó)  

•  distribuição  uniforme  das  chaves  nos  dois  nós  

– promoção    •  escolha  da  primeira  chave  do  novo  nó  como  chave  separadora  no  nó  pai  

•  ajuste  do  nó  pai  para  apontar  para  o  novo  nó  •  propagação  de  overflow  

Page 46: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   46  

Exemplo  

•  Insira  as  seguintes  chaves  em  um  índice  árvore-­‐B  – C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  E  H  O  L  J  Y  Q  Z  F  X  V  

•  Ordem  da  árvore-­‐B:  4  – em  cada  nó  (página  de  disco)  

• número  de  chaves:  3  • número  de  ponteiros:  4  

Page 47: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   47  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  1  –  inserção  de  C,  S,  D  – criação  do  nó  raiz  

•  C  •  C      S  •  C      D      S  

C   D   S  

-­‐1   -­‐1   -­‐1  -­‐1  

0  

Próximo  

Page 48: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   48  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  2  –  inserção  de  T  – nó  raiz  cheio  

C   D   T  1  

S  

2  

0  

S      T  

Próximo  

Page 49: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   49  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  2  –  inserção  de  T  – nó  raiz  cheio  

C   D   T  1  

S  

2  

0  

S      T  

•   parAcionamento  do  nó  •   criação  de  uma  nova  raiz  •   promoção  de  S  

Próximo  

Page 50: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   50  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  3  –  inserção  de  A  – nó  folha  com  espaço  

A   C   T  

S  2  

D  0   1  

Próximo  

Page 51: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   51  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  4  –  inserção  de  M  – nó  folha  0  cheio  

A   C  

D  

T  M  

S  

1  0   3  

2  

•   parAcionamento  do  nó  •   promoção  de  D  

D      M  

S  

Próximo  

Page 52: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   52  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  5  –  inserção  de  P  – nós  folhas  com  espaço  

A  

D  

T  

S  

C   M   P  

0   3  

2  

1  

Próximo  

M  

Page 53: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   53  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  5  –  inserção  de  I  – nós  folhas  com  espaço  

A  

D  

T  

S  

C   M   P  

0   3  

2  

1  

T  

Próximo  

M  M      P  

I  

Page 54: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   54  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  5  –  inserção  de  B  – nós  folhas  com  espaço  

A   B  

D  

T  I  

S  

C   M   P  0   3  

2  

1  

A      C   M  M      P  

T  

Próximo  

Page 55: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   55  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  5  –  inserção  de  I,  B,  W  – nós  folhas  com  espaço  

A   B  

D  

T  I  

S  

C   M   P   W  0   3  

2  

1  

A      C   M  M      P  

Próximo  

Page 56: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   56  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  6  –  inserção  de  N  – nó  folha  3  cheio  

A   B  

D  

P  I  

N  

C   M  

S  

T  1  

W  0   3  

2  

1  

•   parAcionamento  do  nó  •   promoção  de  N  

D      S  

 I      M      P   N      P  

Próximo  

Page 57: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   57  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  7  –  inserção  de  G,  U,  R  – nós  folhas  com  espaço  

A   B  

D  

P  G  

N  

C   I  

S  

T   U  M   R   W  0   3  

2  

1   1  

 I      M   P    T      W  

Próximo  

Page 58: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   58  

C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  ...  

•  Passo  8  –  inserção  de  K  – nó  folha  3  cheio  

A   B  

D  

M  G  

K  

C   I   P   R   T  1  

U   W  

S  6  

N  7  

0   3  

2  

1   4  

•   parAcionamento  do  nó  3  •   promoção  de  K  •   parAcionamento  do  nó  2  •   promoção  de  N  

G      I      M      K   K      M  

D      N    S    K   N      S  

Page 59: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   59  

...  E  H  O  L  J  Y  Q  Z  F  X  V  

•  Finalizar  a  construção  da  árvore  

Page 60: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   60  

Exercícios  

•  Na  árvore-­‐B  do  exemplo  anterior,  insira  a  chave  $,  sendo  que  $  <  A.    

•  Insira  as  seguintes  chaves  em  um  índice  árvore-­‐B  – C  S  D  T  A  M  P  I  B  W  N  G  U  R  K  E  H  O  L  J  Y  Q  Z  F  X  V  Ø diferentemente  do  exemplo  anterior,  escolha  o  úlAmo  elemento  do  primeiro  nó  para  promoção  durante  o  parAcionamento  do  nó.  

Page 61: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   61  

Algoritmo  

•  Estrutura  de  dados  – para  cada  bloco  de  disco  – diferentes  formas  de  implementação  

•  contador  de  ocupação  •  chaves  ⇒  caracteres  •  ponteiros  ⇒  campos  de  referência  para  cada  chave  

Page 62: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   62  

Declaração  (Pascal)  type  BTPAGE  =  record        KEYCOUNT:  integer;                          //  MAXKEYS:  número  máximo  de  chaves  por  bloco          KEY:  array  [  1..MAXKEYS]  of  char;                                //  MAXCHILDREN:  número  máximo  de  ponteiros  por  bloco          CHILD:  array  [  1..MAXCHILDREN]  of  integer;  end;    var  PAGE:  BTPAGE;  

•   PAGE.KEYCOUNT  –   úAl  para  determinar  se  o        bloco  está  cheio  

Page 63: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   63  

Declaração  em  C  -­‐  Estrutura  #define  ORDEM  5    typedef  struct  pagina  {    short  n;    int  chave[ORDEM-­‐1];    struct  pagina*  filho[ORDEM];  

}  tpag;  

Page 64: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   64  

Exemplo  

A   B  

D  

I  E  

H  

C   G  

K  

L  5  

M  0   3  

2  

8  

J  

3                D            H            K                0            3            8            5    

     2                E            G                                  NIL    NIL      NIL    NIL    

contador    de  ocupação  

chaves   ponteiros  para  os    nós  filhos    

bloco  2  

bloco  3  

Page 65: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   65  

contador  de  

ocupação  

vetor    de  chaves  

Arquivo  da  Árvore  B  

•  Conjunto  de  registros  de  tamanho  fixo  

•  Cada  registro  – contém  um  bloco  de  disco  

...  registro  de  cabeçalho  

0        1          2                  3                  4        

vetor    de  

ponteiros  RRN  da  raiz  

Page 66: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   66  

Tópicos  

-­‐  Árvore  de  Pesquisa  +  Árvore  B  

–  CaracterísAcas  –  Inserção  – Pesquisa  –  Remoção  – Análise  

-­‐  Árvore  B*  -­‐  Arvore  B+  

 

Page 67: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   67  

Algoritmo:  Pesquisa  bool  busca(arvoreB  *raiz,  int  info)  {      arvoreB  *no;      int  pos;  //posição  retornada  pelo  busca  binária.        no  =  raiz;      while  (no  !=  NULL)        {            pos  =  busca_binaria(no,  info);            if  (pos  <  no-­‐>num_chaves  &&  no-­‐>chaves[pos]  ==  info)                    return(true);            else  no  =  no-­‐>filhos[pos];        }      return(false);  }    

É  muito  semelhante,  porém  ao  invés  de  tomar  uma  decisão  binária  em  cada  nó,  

tomamos  uma  decisão  de  ramificação  de  várias  

vias.  

Page 68: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   68  

Algoritmo:  Pesquisa  int  busca_binaria(arvoreB  *no,  int  info)    {        int  meio,  i,  f;        i  =  0;      f  =  no-­‐>num_chaves-­‐1;        while  (i  <=  f)      {          meio  =  (i  +  f)/2;          if  (no-­‐>chaves[meio]  ==  info)                return(meio);  //Encontrou.  Retorna  a  posição  em  que  a  chave  está.          else  if  (no-­‐>chave[meio]  >  info                          f  =  meio  -­‐  1;                    else  i  =  meio  +  1;      }      return(i);  //Não  encontrou.  Retorna  a  posição  do  ponteiro  para  o  filho.  }    

Page 69: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   69  

Algoritmo:  Pesquisa              if  KEY  was  found  then                      FOUND_RRN  :=  RRN                  RRN  corrente  contém  a  chave  

         FOUND_POS  :=  POS                      return  FOUND                    chave  de  busca  encontrada  

               else                              a  chave  de  busca  não  foi  encontrada,  portanto                                                          procura  a  chave  de  busca  no  nó  filho                      return  (search(PAGE.CHILD[POS],  KEY,  FOUND_RRN,  

                                                         FOUND_POS))              endif        endif  end  FUNCTION    

Page 70: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   70  

Busca  da  Chave  “K”  

PAGE  =  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

D   N   S  

Page 71: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   71  

Busca  da  Chave  “K”  

PAGE  =                                          não  encontrado  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

G   I   M  

Page 72: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   72  

Busca  da  Chave  “K”  

PAGE.CHILD[2]  =  NIL  →  chave  de  busca  não  encontrada                                                                              return  NOT  FOUND  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

Page 73: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   73  

Busca  da  Chave  “M”  

PAGE  =  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

D   N   S  

Page 74: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   74  

Busca  da  Chave  M  

Ponteiro  2-­‐>3  POS  =  2                                                                    

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

Page 75: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   75  

Algoritmo:  Pesquisa  FUNCTION:  search  (RRN,              página  a  ser  pesquisada                                                      KEY,              chave  sendo  procurada                                                      FOUND_RRN,      página  que  contém  a  chave                                                                      FOUND_POS)      posição  da  chave  na  página        if    RRN  ==  NIL  then                return  NOT  FOUND                chave  de  busca  não  encontrada            else                read  page  RRN  into  PAGE          leia  o  bloco  apontado  por  RRN  na                        

                                   variável  PAGE                look  through  PAGE  for  KEY,  se�ng  POS  equal  to  the  posiAon                      where  KEY  occurs  or  should  occur  

Page 76: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   76  

Algoritmo:  Pesquisa              if  KEY  was  found  then                      FOUND_RRN  :=  RRN                  RRN  corrente  contém  a  chave  

         FOUND_POS  :=  POS                      return  FOUND                    chave  de  busca  encontrada  

               else                              a  chave  de  busca  não  foi  encontrada,  portanto                                                          procura  a  chave  de  busca  no  nó  filho                      return  (search(PAGE.CHILD[POS],  KEY,  FOUND_RRN,  

                                                         FOUND_POS))              endif        endif  end  FUNCTION    

Page 77: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   77  

Busca  da  Chave  K  

•  search  (2,  K,  FOUND_RRN,  FOUND_POS)  

PAGE  =                                          não  existe  →  POS  =  1  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

D   N   S  

Page 78: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   78  

Busca  da  Chave  K  

•  search  (PAGE.CHILD[1],  K,  FOUND_RRN,                                    FOUND_POS)  

PAGE  =                                          não  existe  →  POS  =  2  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

G   I   M  

Page 79: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   79  

Busca  da  Chave  K  

•  search  (PAGE.CHILD[2],  K,  FOUND_RRN,                                    FOUND_POS)  

PAGE.CHILD[2]  =  NIL  →  chave  de  busca  não  encontrada                                                                              return  NOT  FOUND  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

Page 80: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   80  

Busca  da  Chave  M  

•  search  (2,  M,  FOUND_RRN,  FOUND_POS)  

PAGE  =                                          não  existe  →  POS  =  1  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

D   N   S  

Page 81: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   81  

Busca  da  Chave  M  

•  search  (PAGE.CHILD[1],  M,  FOUND_RRN,                                    FOUND_POS)  

                                                                   chave  de  busca  encontrada  PAGE  =                                          POS  =  FOUND_POS  =  2                                                                      FOUND_RRN  =  3                                                                  return  FOUND  

A   B  

D  

P  G  

N  

C   I  

S  

T  1  

U  0   3  

2  

4  

R  M   W  

G   I   M  

Page 82: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   82  

Tópicos  

-­‐  Árvore  de  Pesquisa  +  Árvore  B  

–  CaracterísAcas  –  Inserção  –  Pesquisa  – Remoção  – Análise  

-­‐  Árvore  B*  -­‐  Arvore  B+  

 

Page 83: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   83  

Remoção:  Caso  1  

•  Remoção  de  uma  chave  em  um  nó  folha,  sem  causar  underflow  – situação  mais  simples  possível  

•  Solução  

?  

Page 84: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   84  

Remoção:  Caso  1  

•  Remoção  de  uma  chave  em  um  nó  folha,  sem  causar  underflow  – situação  mais  simples  possível  

•  Solução  – eliminar  a  chave  da  página  –  rearranjar  as  chaves  remanescentes  dentro  da  página  para  fechar  o  espaço  liberado  

Page 85: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   85  

Remoção:  Caso  2  

•  Remoção  de  uma  chave  em  um  nó  não  folha  •  Solução  

?  

Page 86: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   86  

Remoção:  Caso  2  

•  Remoção  de  uma  chave  em  um  nó  não  folha  •  Solução  

– sempre  remover  chaves  somente  nas  folhas  

•  Passos  –  trocar  a  chave  a  ser  removida  com  a  sua  chave  sucessora  imediata  (que  está  em  um  nó  folha)    

–  remover  a  chave  diretamente  do  nó  folha  

Page 87: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   87  

Remoção:  Caso  2  

Page 88: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   88  

Remoção:  Caso  3  

•  Remoção  de  uma  chave  em  um  nó,  causando  underflow  

•  Solução:  

?  

Page 89: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   89  

Remoção:  Caso  3  

•  Remoção  de  uma  chave  em  um  nó,  causando  underflow  

•  Solução:  Redistribuição  – procurar  uma  página  irmã  (i.e.,  que  possui  o  mesmo  pai)  adjacente  que  contenha  mais  chaves  do  que  o  mínimo  

– se  encontrou  •  redistribuir  as  chaves  entre  as  páginas  •  reacomodar  a  chave  separadora,  modificando  o  conteúdo  do  nó  pai    

Quando  o  nó  possui  menos  que  a  metade  

cheio.  

Page 90: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   90  

Page 91: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   91  

Remoção:  Caso  4  

•  Remoção  de  uma  chave  em  um  nó,  causando  underflow  e  a  redistribuição  não  pode  ser  aplicada  

•  Solução:  Concatenação  – combinar  para  formar  uma  nova  página  

•  o  conteúdo  do  nó  que  sofreu  underflow    •  o  conteúdo  de  um  nó  irmão  adjacente  •  a  chave  separadora  no  nó  pai  

–  tratar  o  underflow  no  nó  pai,  caso  necessário  

Page 92: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   92  

Page 93: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   93  

Concatenação  

•  Processo  inverso  do  split  •  CaracterísAcas  

–  reverte  a  promoção  de  uma  chave  – pode  causar  underflow  no  nó  pai  ⇒   concatenação  pode  ser  propagada  em      direção  ao  nó  raiz  

ocorre  a  redução  no  número  total    de  nós  da  árvore  

Page 94: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   94  

Remoção:  Caso  5  

•  Underflow  no  nó  pai  causado  pela  remoção  de  uma  chave  em  um  nó  filho  

•  Solução  – uAlizar  redistribuição  ou  concatenação,  dependendo  da  quanAdade  de  chaves  que  a  página  irmã  adjacente  contém  

Page 95: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   95  

Page 96: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   96  

Remoção:  Caso  6  

•  Diminuição  da  altura  da  árvore  •  CaracterísAca  

– o  nó  raiz  possui  uma  única  chave  – a  chave  é  absorvida  pela  concatenação  de  seus  nós  filhos  

•  Solução  – eliminar  a  raiz  anAga  –  tornar  no  nó  resultante  da  concatenação  dos  nós  filhos  a  nova  raiz  da  árvore  

Page 97: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   97  

Page 98: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   98  

Remoção  em  Árvore-­‐B  

1.  se  a  chave  a  ser  removida  não  esAver  em  um  nó  folha,  troque-­‐a  com  sua  sucessora  imediata,  que  está  em  um  nó  folha  

2.  remova  a  chave  3.  após  a  remoção,  se  o  nó  saAsfaz  o  número  

mínimo  de  chaves,  nenhuma  ação  adicional  é  requerida  

Page 99: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   99  

Remoção  em  Árvore-­‐B  

4.  após  a  remoção,  caso  ocorra  underflow,  verifique  o  número  de  chaves  nos  nós  irmãos  adjacentes  à  esquerda  e  à  direita  a.  se  algum  nó  irmão  adjacente  possui  mais  do  que  

o  número  mínimo  de  chaves,  aplique  a  redistribuição  

b.  se  nenhum  nó  irmão  adjacente  possui  mais  do  que  o  número  mínimo  de  chaves,  aplique  a  concatenação  

Page 100: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   100  

Remoção  em  Árvore-­‐B  

5.  se  ocorreu  concatenação,  repita  os  passos  3  a  5  para  o  nó  pai  

6.  se  a  úlAma  chave  da  raiz  for  removida,  a  altura  da  árvore  é  diminuída  

Page 101: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   101  

Remoção:  Diferentes  Casos  

Page 102: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   102  

Redistribuição  

•  Representa  uma  idéia  inovadora  – diferente  do  split  ou  da  concatenação  

•  Não  se  propaga  para  os  nós  superiores  – apenas  efeito  local  na  árvore  

•  Baseada  no  conceito  de  nós  irmãos  adjacentes  – dois  nós  logicamente  adjacentes,  mas  com  pais  diferentes  não  são  irmãos  

Page 103: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   103  

Redistribuição  

•  Não  fixa  a  forma  na  qual  as  chaves  devem  ser  redistribuídas  – possibilidade  1:  mover  somente  uma  chave,  mesmo  que  a  distribuição  das  chaves  entre  as  páginas  não  seja  uniforme  

– possibilidade  2:  mover  k  chaves  – possibilidade  3:  distribuição  uniforme  das  chaves  entre  os  nós  

mais  comum  

Page 104: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   104  

Redistribuição  durante  Inserção  

•  Funcionalidade  – permite  melhorar  a  taxa  de  uAlização  do  espaço  alocado  para  a  árvore  

•  split  –  divide  uma  página  com  overflow  (i.e.,  working  page)  em  duas  páginas  semi-­‐vazias  (i.e.,  page  e  newpage)  

•  redistribuição  –  a  chave  que  causou  overflow  (além  de  outras  chaves)  pode  ser  colocada  em  outra  página  

X  

Page 105: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   105  

Redistribuição  durante  Inserção  

•  Opção  interessante  – a  roAna  de  redistribuição  já  está  codificada  para  prover  suporte  à  remoção  

– a  redistribuição  evita,  ou  pelo  menos  adia,  a  criação  de  novas  páginas  

•  tende  a  tornar  a  árvore-­‐B  mais  eficiente  em  termos  de  uAlização  do  espaço  em  disco  

•  garante  um  melhor  desempenho  na  busca,  desde  que  um  número  menor  de  nós  pode  reduzir  a  altura  da  árvore,  por  exemplo  

Page 106: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   106  

Split  x  Redistribuição  

•  Somente  split  na  inserção  – no  pior  caso,  a  uAlização  do  espaço  é  de  cerca  de  50%  

– em  média,  para  árvores  grandes,  o  índice  de  ocupação  é  de  ~69%  

•  Com  redistribuição  na  inserção  – em  média,  para  árvores  grandes,  o  índice  de  ocupação  é  de  ~86%  

Page 107: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   107  

Tópicos  

-­‐  Árvore  de  Pesquisa  +  Árvore  B  

–  CaracterísAcas  –  Inserção  –  Pesquisa  –  Remoção  – Análise  

-­‐  Árvore  B*  -­‐  Arvore  B+  

 

Page 108: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   108  

Complexidade  

•  Profundidade  do  caminho  de  busca  – número  máximo  de  acessos    a  disco  

•  Relacionamento  –  tamanho  da  página  de  disco  

•  ex:  árvore-­‐B  de  ordem  512  →  511  chaves/página  

– número  de  chaves  •  ex:  1.000.000  de  chaves  

⇒   número  de  níveis  que  pode  ser  aAngido?  

pior  caso  

Page 109: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   109  

Complexidade  

•  Profundidade  do  caminho  de  busca  – número  máximo  de  acessos    a  disco  

•  Relacionamento  –  tamanho  da  página  de  disco  

•  ex:  árvore-­‐B  de  ordem  512  →  511  chaves/página  

pior  caso  

Page 110: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   110  

Observação  1  

número  de  descendentes  de  um  nível  da  árvore-­‐B  

número  de  chaves  conAdas    no  nível  em  questão  e    

em  todos  os  níveis  acima  

=   +    1  

$    A   C   E    F  G    I    J   L    M   O    P   R   T    U    V   X    Y    Z  

B    D   K   Q    S  W  

H    N  

d    d    d          d    d                    d    d    d    d    d    d    d            d    d    d            d    d    d            d    d                    d  d    d    d    d    d    d    d  

árvore-­‐B  com  27  chaves  e  28  descendentes  

Page 111: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   111  

Observação  2  

•  Propriedades  da  árvore-­‐B  de  ordem  m  – cálculo  do  número  mínimo  de  descendentes  de  um  nível  

nível número mínimo de descendentes 1 2 2 2 x ⎡m/2⎤ 3 2 x ⎡m/2⎤ x ⎡m/2⎤ = 2 x ⎡m/2⎤ 2

4 2 x ⎡m/2⎤ x ⎡m/2⎤ x ⎡m/2⎤ = 2 x ⎡m/2⎤ 3 ... ... d 2 x ⎡m/2⎤ d-1

para  qualquer  

nível  d,  com  exceção  da  raiz  (nível  1)  

Page 112: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   112  

Complexidade  

•  Número  de  chaves  (N)  – N  +  1  descendentes  no  nível  das  folhas  

•  Profundidade  da  árvore-­‐B  no  nível  das  folhas  – d  

•  Relacionamento  – N  +  1  descendentes  e  – número  mínimo  de  descendentes  da  árvore-­‐B  com  profundidade  d  

Page 113: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   113  

Complexidade  

N  +  1  ≥    2  x  ⎡m/2⎤d-­‐1  

d  ≤  1  +  log⎡m/2⎤  (  (N  +  1)/2  )    

•  Exemplo  – m  =  512  – N  =  1.000.000  – d  ≤  1  +  log256  (500.000,50)  ⇒  d  ≤  3,37    – acesso  a  disco  adicional:  arquivo  de  dados  

a  árvore  possui  não  mais    do  que  3  níveis  de  altura  

Page 114: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   114  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  +  Árvore  B*    -­‐  CaracterísAcas    -­‐  Diferenças  

-­‐  Arvore  B+    

Page 115: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   115  

•  Proposta  por  Knuth  em  1973  – variação  de  árvore-­‐B    

•  CaracterísAca  – cada  nó  contém,  no  mínimo,  2/3  do  número  máximo  de  chaves  

•  Posterga  o  split  – estende  a  noção  de  redistribuição  durante  a  inserção  para  incluir  novas  regras  para  o  parAcionamento  de  nós  

Árvore-­‐B*  

Page 116: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   116  

•  Proposta  por  Knuth  em  1973  – variação  de  árvore-­‐B    

•  Mínimo  de  chave  •  Posterga  o  split  

Árvore-­‐B*  

Efeito  disso  ?  

Page 117: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   117  

•  Geração  – processo  de  subdivisão  

•  CaracterísAcas  – a  subdivisão  é  adiada  até  que  duas  páginas  irmãs  estejam  cheias  

– na  seqüência,  a  divisão  do  conteúdo  das  duas  páginas  em  três  páginas  (two-­‐to-­‐three  split)  é  realizada  

Árvore-­‐B*  

Page 118: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   118  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  +  Árvore  B*    -­‐  CaracterísAcas    -­‐  Diferenças  

-­‐  Arvore  B+    

Page 119: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   119  

Uso  da  Redistribuição  

•  Situações  (árvore-­‐B  e  árvore-­‐B*)  – diferem  das  árvores  B  em  relação  ao  parAcionamento  de  suas  páginas  

•  árvore-­‐B  –  split  1-­‐to-­‐2  

•  árvore-­‐B*  –  split  2-­‐to-­‐3  –  pelo  menos  um  nó  irmão  está  cheio  

Page 120: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   120  

Split  2-­‐to-­‐3  

Page 121: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   121  

Definição  Formal  

•  Propriedades  de  uma  Árvore-­‐B*  –  cada  página  possui  um  máximo  de  m  descendentes  –  cada  página,  exceto  a  raiz  e  as  folhas,  possui  no  mínimo  (2m-­‐1)/3  descendentes  à  taxa  de  ocupação  

–  a  raiz  possui  pelo  menos  2  descendentes,  a  menos  que  seja  um  nó  folha  

–  todas  as  folhas  aparecem  no  mesmo  nível  –  uma  página  interna  com  k  descendentes  contém    k-­‐1  chaves  

–  uma  folha  possui  no  mínimo  ⎣(2m-­‐1)/3⎦  chaves  e    no  máximo  m  -­‐  1  chaves  à  taxa  de  ocupação  

Page 122: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   122  

Observações  

•  Mudança  na  taxa  de  ocupação  – afeta  as  roAnas  de  remoção  e  redistribuição  

•  ParAcionamento  da  raiz  – problema  

•  raiz  não  possui  nó  irmão  

– soluções  •  dividir  a  raiz  usando  a  divisão  convencional  (1-­‐to-­‐2  split);  ou  

•  permiAr  que  a  raiz  seja  maior  

Page 123: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   123  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  -­‐  Árvore  B*  +  Árvore  B+    -­‐  Inserção    -­‐  Remoção    

Page 124: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   124  

Sequence  Sets  

•  Problema  – manter  os  registros  ordenados  fisicamente  pela  chave  (sequence  set)  

•  Solução  – organizar  registros  em  blocos  

um  bloco  consiste  na  unidade  básica  de  entrada  e  saída  e  deve  ter  seu  tamanho  determinado  pelo  tamanho  do  buffer-­‐

pool  

Page 125: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   125  

Page 126: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   126  

Sequence  Sets  

•  Problema  – manter  os  registros  ordenados  fisicamente  pela  chave  (sequence  set)  

•  Solução  – organizar  registros  em  blocos  

Page 127: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   127  

Uso  de  Blocos  

•  CaracterísAcas  – o  conteúdo  de  cada  bloco  está  ordenado,  e  pode  ser  recuperado  em  um  acesso  

– cada  bloco  mantém  um  ‘ponteiro’  para  o  bloco  antecessor  e  um  ‘ponteiro’  para  o  bloco  sucessor  

– blocos  logicamente  adjacentes  não  estão  (necessariamente)  fisicamente  adjacentes  

•  Garante  acesso  sequencial  ao  arquivo  

Page 128: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   128  

Problema  1  

•  Inserção  de  registros  pode  provocar  overflow  em  um  bloco  

•  Solução  – dividir  o  bloco,  em  um  processo  análogo  ao  realizado  em  árvores-­‐B  

– passos  •  divide  os  registros  entre  os  dois  blocos  •  rearranja  os  ponteiros  

não  existe  promoção  !  

Page 129: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   129  

Problema  2  

•  Remoção  de  registros  pode  provocar  underflow  em  um  bloco  

•  Solução  – concatenar  o  bloco  com  o  seu  antecessor  ou  sucessor  na  seqüência  lógica  

–  redistribuir  os  registros,  movendo-­‐os  entre  blocos  logicamente  adjacentes  

Page 130: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   130  

Exemplo:  Inserção  de  CARTER  

ADAMS ... BAIRD ... BIXBY ... BOONE ...

BYNUM ... CART ... COLE ... DAVES ...

DENVER ... ELLIS ...

ADAMS ... BAIRD ... BIXBY ... BOONE ...

BYNUM ... CART ... CARTER ...

DENVER ... ELLIS ...

COLE ... DAVIS ...

bloco  1    bloco  2    bloco  3      bloco  1    bloco  2    bloco  3    bloco  4    

Page 131: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   131  

Exemplo:  Remoção  de  DAVIS  ADAMS ... BAIRD ... BIXBY ... BOONE ...

BYNUM ... CART ... CARTER ...

DENVER ... ELLIS ...

COLE ... DAVIS ...

ADAMS ... BAIRD ... BIXBY ... BOONE ...

BYNUM ... CART ... CARTER ...

COLE ... DENVER ... ELLIS

bloco  1    bloco  2    bloco  3    

bloco  4      bloco  1    bloco  2    bloco  3    bloco  4    

disponível  para  uso  

Page 132: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   132  

Indexação  

•  CaracterísAca  – os  registros  podem  ser  acessados  em  ordem,  sequencialmente,  pela  chave  

•  Problema  –  localizar  eficientemente  um  bloco  com  um  registro  parAcular,  dado  a  chave  do  registro  

•  Uma  solução  (contexto  da  disciplina)  – árvore-­‐B+  (pré-­‐fixada)  

Page 133: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   133  

Árvore-­‐B+  Pré-­‐Fixada  

•  Estrutura  híbrida  – chaves  

•  organizadas  como  árvore-­‐B  (i.e.,  index  set)  

– nós  folhas  •  consistem  em  blocos  de  sequence  set  

•  Pré-­‐fixada  simples  – armazena  na  árvore  as  cadeias  separadoras  mínimas  entre  cada  par  de  blocos  

Page 134: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   134  

•  CaracterísAcas  – são  manAdos  no  índice,  ao  invés  das  chaves  de  busca  

– possuem  tamanho  variável  

•  Exemplo  

Separadores  

BO                          CAM                          E                  F                                          FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EMBRY-­‐EVANS   FABER-­‐FOLK  

1                                                2                            3        4                              5                                                      6  

FOLKS-­‐GADIS  

Page 135: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   135  

Separadores  

•  Desafio  – escolher  o  menor  separador  para  uAlizar  no  índice  

•  Tabela  de  decisão  

chave de busca x separador decisão

chave < separador procure à esquerda chave = separador procure à direita chave > separador procure à direita

Page 136: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   136  

Árvore-­‐B+  Pré-­‐Fixada  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EMBRY-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FOLKS-­‐GADIS  

árvore-­‐B  de  ordem  3    

Page 137: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   137  

Manutenção  

•  Cenários  –  inserção  –  remoção  – overflow  – underflow  

•  Efeitos  colaterais  – sequence  set    – árvore-­‐B+  

Page 138: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   138  

Tópicos  

-­‐  Árvore  de  Pesquisa  -­‐  Árvore  B  -­‐  Árvore  B*  +  Árvore  B+    -­‐  Inserção    -­‐  Remoção    

Page 139: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   139  

Remoção  de  EMBRY  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EMBRY-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FOLKS-­‐GADIS  

sem  redistribuição  ou  concatenação    

Page 140: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   140  

Remoção  de  EMBRY  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FOLKS-­‐GADIS  

sem  redistribuição  ou  concatenação    

•  Efeito  no  sequence  set  –  limitado  a  alterações  no  bloco  4  

Page 141: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   141  

Remoção  de  EMBRY  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FOLKS-­‐GADIS  

sem  redistribuição  ou  concatenação    

•  Efeito  na  árvore-­‐B+  – nenhum:  E  é  uma  boa  chave  separadora  

Page 142: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   142  

Remoção  de  FOLKS  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FOLKS-­‐GADIS  

sem  redistribuição  ou  concatenação    

Page 143: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   143  

Remoção  de  FOLKS  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

sem  redistribuição  ou  concatenação    

•  Efeito  no  sequence  set  –  limitado  a  alterações  no  bloco  6  

Page 144: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   144  

Remoção  de  FOLKS  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

sem  redistribuição  ou  concatenação    

•  Efeito  na  árvore-­‐B+  – nenhum:  custos  elevados  

Page 145: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   145  

Inserção  de  EATON  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   ERVIN-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

espaço  disponível  no  bloco    

Page 146: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   146  

Inserção  de  EATON  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EATON-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

espaço  disponível  no  bloco    

•  Efeito  no  sequence  set  –  limitado  a  alterações  no  bloco  4  

Page 147: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   147  

Inserção  de  EATON  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EATON-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

espaço  disponível  no  bloco    

•  Efeito  na  árvore-­‐B+  – nenhum:  E  é  uma  boa  chave  separadora  

Page 148: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   148  

Inserção  de  AVERY  

E  

BO   CAM   F   FOLKS  

ADAMS-­‐BERNE   BOLEN-­‐CAGE   CAMP-­‐DUTTON   EATON-­‐EVANS   FABER-­‐FOLK  

1                          2                    3      4                        5                                            6  

FROST-­‐GADIS  

split  no    sequence  set  1    

Page 149: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   149  

BO   E  

Inserção  de  AVERY  

AY   F   FOLKS  

ADAMS-­‐  AVERY  

AYERS-­‐  BERNE  

BOLEN-­‐  CAGE  

1  7                        2                  3      4                        5                                            6  

split  no    sequence  set  1    

•  Efeito  no  sequence  set  – dados  do  bloco  1  +  AVERY  distribuídos  entre  os  blocos  1  e  7  

CAM  

EATON-­‐EVANS   FABER-­‐FOLK   FROST-­‐GADIS  CAMP-­‐DUTTON  

Page 150: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   150  

Inserção  de  AVERY  

•  Efeito  na  árvore-­‐B+  – separador  adicional  AY  

BO   E  

AY   F   FOLKS  

ADAMS-­‐  AVERY  

AYERS-­‐  BERNE  

BOLEN-­‐  CAGE  

1  7                        2                  3      4                        5                                            6  

split  no    sequence  set  1    

CAM  

EATON-­‐EVANS   FABER-­‐FOLK   FROST-­‐GADIS  CAMP-­‐DUTTON  

Page 151: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   151  

Remoção  de  CAEL  

BO   E  

AY   F   FOLKS  

ADAMS-­‐  AVERY  

AYERS-­‐  BERNE  

BOLEN-­‐  CAGE  

1  7                        2                  3      4                        5                                            6  

CAM  

EATON-­‐EVANS   FABER-­‐FOLK   FROST-­‐GADIS  CAMP-­‐DUTTON  

underflow  no    sequence  set  2    

Page 152: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   152  

Remoção  de  CAEL  

1                          7                    2      4                        5                                            6  

EATON-­‐EVANS   FABER-­‐FOLK   FROST-­‐GADIS  BOLEN-­‐DUTTON  

underflow  no    sequence  set  2    

•  Efeito  no  sequence  set  – concatenação  dos  blocos  2  e  3  

ADAMS-­‐AVERY   AYERS-­‐BERNE  

E  

AY   BO   F   FOLKS  

Page 153: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   153  

Remoção  de  CAEL  

1                          7                    2      4                        5                                            6  

EATON-­‐EVANS   FABER-­‐FOLK   FROST-­‐GADIS  BOLEN-­‐DUTTON  

underflow  no    sequence  set  2    

•  Efeito  na  árvore-­‐B+  –  remoção  de  CAMP  e  concatenação  de  nós  

ADAMS-­‐AVERY   AYERS-­‐BERNE  

E  

AY   BO   F   FOLKS  

Page 154: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   154  

Inserção  e  Remoção  

•  Primeiro  passo:  Sequence  Set  –  inserir  ou  remover  o  dado  –  tratar,  caso  necessário  

•  split  •  contatenação  •  redistribuição  

alterações  são  sempre  realizadas  a  parAr  do  arquivo  de  

dados  

Page 155: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   155  

Inserção  e  Remoção  

•  Segundo  passo:  Árvore-­‐B+  – se  split  no  sequence  set              inserir  um  novo  separador  no  índice  – se  concatenação  no  sequence  set              remover  um  separador  do  índice  – se  distribuição  no  sequence  set              alterar  o  valor  do  separador  no  índice  

Page 156: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   156  

Exercícios  

1)  Considere-­‐se  uma  árvore  B  +  em  que  n  =  4,  (o  número  máximo  de  chaves  num  nó).  Suponhamos  que  a  árvore  B  +  inicialmente  consiste  de  um  único  nó,  que  é  ao  mesmo  tempo  a  raiz  e  a  única  folha,  que  tem  o  número  1.  Qual  é  o  número  mínimo  de  chaves  que  podem  aparecer  em  um  nó  de  folha  não  raiz?  

Page 157: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha

ICMC-­‐USP  -­‐  Base  de  Dados   157  

Exercícios  

2)  Construa  uma  Árvore-­‐B  com  t=2,  para  as  letras  inseridas  nesta  ordem:  F,  S,  Q,  K,  C,  L,  H,  T,  V,  W,  R,  N,  P,  A,  B,  X,  Y,  D,  Z,  E    3)  Considere  o  conjunto  de  chaves  1,  2,  3,  4,  5,  6,  7,  8,  9,  10,  11,  12,  13.  Faça  a  inserção  numa  Árvore-­‐B+  de  modo  que  a  árvore  resultante  tenha  três  níveis.