Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
R. Basili
(Basi di Dati, a.a. 2002-3)
Sommario
Indici organizzati secondo B+-alberi
Motivazioni ed Esempio Definizione
Ricerca in un B+-albero
Esempio
Riassunto
Motivazioni
Un ISAM fornisce una struttura statica
=> sottoutilizzo (molte cancellazioni) => sovrautilizzo (pagine di overflow) Pagine per i dati in ordine sequenziale (Range Search)
Ipotesi:
Bilanciamento => riorganizzazione dinamica Indici nelle Foglie e stessa ricerca nei nodi intermedi Link sequenzile garantito per le foglie (Range Search)
Esempio
indici 78 500 FILE
45
56
81
105
505 518
18
27
18<x*27
No overlflow list!
Definizione
Un B-albero e un albero con radice e ordine
d (>1) tale che:
ogni nodo x contiene al piu 2d-1 chiavi, k[i] ogni nodo x contiene al piu 2d puntatori ai figli, p[i]
(indefiniti per le foglie) per ogni nodo x si ha:
(detta ki una generica chiave memorizzata in un figlio p[i] di x)
k0 k[1] k1 k[2] k2d-2 k[2d-1] k2d-1
tutte le foglie sono alla stessa profondita (h) ogni nodo (tranne le radice) deve avere almeno d-1
chiavi e d figli
78 86 _
d=2
18
25
77
79
80
84
90
93
Definizione (2)
Se le foglie di un B-albero vengono organizzate in
una lista doppiamente collegata allora la struttura prende il nome di B+-albero
Foglie (Sequence list)
d=2
78 _ _
18*
25*
78*
79*
89*
96*
(cio, data entries data records) ma indici aggregati (densi o sparsi) La radice risiede sistematicamente in memoria centrale
Ricerca in un B+-albero
Nodo *trova( Nodo *n, Key k, int d ) if foglia(n) then return( n ) else i=0; while (i<2*d-1) and (k>n->k[i+1]); i=i+1; return(trova(n->p[i], k, d))
Ricerca (Esempio)
k=47 28k<50 k=47 k>28
i=1
28
47* _
50
71
np[1] 12* 18* _ 32* 55* 56* 67* 84* 96* 97*
Proprieta
Altezza di un B+-Albero
Se lordine di un albero n e d nel caso di minima
occupazione dellalbero abbiamo
liv=1 liv=2 liv=3 liv=i 2 nodi 2d nodi 2d2 nodi 2d(i-1) nodi
cioe
h log d
N +1 2
B+-alberi: Vantaggi
I nodi intermedi (solo chiavi, k[i], e pt, P[i])
richiedono una pagina (1 operazione I/O) anche con d grande Costo delle operazioni di ricerca proporzionale ad h, cioe logaritmico (base d) in N Il branching factor f dei nodi: d f 2d Occupazione media: 60% - no overflow chains Le foglie (collegate) supportano operazioni di ricerca per intervallo (anchesse logaritmiche) I costi delle operazioni di inserimento/cancellazione sono logaritmici (segue)
Inserimento: ESEMPIO
insert( newk,n )
28 50 71
newk=8
12* 18* 21* 32* 47* _ 55* 56* 67* 84* 96* 97*
8*
12*
18*
21*
h = h + 1
12 28 _ 71 _ _
8*
12*
18* 21*
Cancellazione: ESEMPIO
50
cancel( newk,n )
newk=56 newk=18
8* 12* _
12
28
71
18* 21*
55*
56* 67*
84*
96* 97*
50
12
28
71
8*
12*
21* _
55*
57* _
84*
96* 97*
cancel( newk,n )
newk=21
_
12
28
71
8*
12*
21* _
32*
47*
55*
57* _
84*
96* 97*
Ridistribuzione:
50
28
71
max
8* _ _ 12* _ _ 55* 57* _ 84* 96* 97*
cancel( newk,n )
newk=12
_
28
71
8*
12* _
32*
47*
55*
57* _
84*
96* 97*
50
28
71
8*
32*
47*
55*
57* _
84*
96* 97*
28
71
50
71
Osservazioni
Implementazioni
Compressione di chiavi Spazio libero nei nodi (~50%) => minore d Cancellazione vs. marcatura+garbage collection
Svantaggi:
elevata dinamicit dei nodi intermedi =>
svantaggiosa per la concorrenza chiavi multiple
Sommario
B+-alberi ottimizzano le operazioni di search e
range-search
Sommario
Durante gli inserimenti le catene di overflow sono
evitate tramite operazioni di split dei nodi pieni
Tali split possono far crescere laltezza h Durante le cancellazioni le operazioni di merge tra
nodi possono far decrescere laltezza dellalbero
Lordine dipende
organizzazione dei record organizzazione degli indici (data entries) compressione delle chiavi
Cosa sapere
Def. ed Indicizzazione basata su B+-alberi Costi delle Operazioni di
Ricerca Ricerca per Intervallo Inserimento e Cancellazione
10