1 LEZIONE 23: Indicizzazione Informatica 3 Lezione 23

Informatica 3
Informatica 3
LEZIONE 23: Indicizzazione
Lezione 23 - Modulo 1
• Modulo 1: Indicizzazione lineare, ISAM e ad
albero
• Modulo 2: 2-3 trees, B-trees e B+-trees
Indicizzazione lineare, ISAM e ad albero
Politecnico di Milano - Prof. Sara Comai
1
Introduzione
Politecnico di Milano - Prof. Sara Comai
2
Indicizzazione
• Grosse applicazioni basate su basi di dati:
• Indicizzazione:
– file di grandi dimensione
– chiavi di ricerca multiple
– supporto di interrogazioni:
– a ogni record viene associata una chiave
– si crea un file indice i cui record consistono di
coppie chiave/puntatore al record corrispondente
• su un singolo valore di chiave
• su intervalli di valori
• ricerca di minimo e massimo
chiave ptr
– supporto per operazioni di inserimento, modifica e
cancellazione
...
record
...
Æ Indicizzazione
INDICE
Politecnico di Milano - Prof. Sara Comai
3
Politecnico di Milano - Prof. Sara Comai
4
1
Indicizzazione
Indicizzazione lineare (1)
– Nelle basi di dati:
• File indice in cui le chiavi sono ordinate e i puntatori
puntano alla posizione del record su disco oppure
alla posizione della chiave primaria nell’indice
primario
• ogni record ha un unico identificatore: chiave primaria
– indice primario costruito su chiavi primarie
• altri valori di chiave con duplicati: chiavi secondarie
– indice secondario: associa il valore della chiave secondaria
con il valore di una chiave primaria
chiave ptr
chiave ptr
...
...
...
– Accesso a record di lunghezza variabile
– Accesso random e ricerca efficienti (ricerca binaria)
indice lineare
record
...
INDICE
SECONDARIO INDICE PRIMARIO
Politecnico di Milano - Prof. Sara Comai
record base di dati
5
Indicizzazione lineare (2)
6
Politecnico di Milano - Prof. Sara Comai
Indicizzazione lineare (3)
• Se la chiave secondaria ha numerosi duplicati si ha una
duplicazione dei valori delle chiavi primarie associate
Æ Indice lineare bidimensionale
• Se la dimensione del file indice è troppo grande per
stare in memoria:
– indice lineare su disco
– indice di secondo livello in memoria: chiave di ogni blocco su
disco
– per ogni riga: chiavi primarie associate a un particolare valore di
chiave secondaria
Jones
Smith
Zukowski
AA10
AX33
ZQ99
AB12
AX35
AB39
ZX45
FF37
• Bassi costi di inserimento/cancellazione di record
• Svantaggi:
Indice di secondo livello
– Array di dimensione fissa: limite superiore al numero delle chiavi
primarie associate a un valore di chiave secondaria
– Spreco di spazio per valori di chiave secondaria poco presenti
Indice lineare su disco
• Soluzione: per ogni chiave secondaria Æ lista concatenata
delle chiavi primarie
– Funziona bene se la tabella è in memoria
Politecnico di Milano - Prof. Sara Comai
7
Politecnico di Milano - Prof. Sara Comai
8
2
Indicizzazione lineare (4)
Indicizzazione lineare (5)
Lista invertita (o file invertito)
– Implementazione basata su array:
– Esempio: record di impiegati
• chiave primaria: matricola dell’impiegato
• chiave secondaria: nome dell’impiegato
Jones
Smith
Zukowski
– ogni nome nell’indice secondario è associato alle matricole
degli impiegati con quel nome
0
1
3
AA10
AB12
AB39
FF37
Jones
Smith
Zukowski
0
1
2
3
4
5
6
7
AA10
AX33
ZX45
ZQ99
AB12
AB39
AX35
FF37
4
6
----5
7
2
---
AX33
AC35
ZX45
ZQ99
• Ricerca: dalla chiave secondaria a quella primaria
Politecnico di Milano - Prof. Sara Comai
9
Politecnico di Milano - Prof. Sara Comai
ISAM
ISAM (2)
• Problema per grossi basi di dati: una singola struttura
non è adatta perchè un aggiornamento può
richiedere la modifica di tutte le chiavi nell’indice
• ISAM (IBM): forma modificata di indice lineare in cui i
record sono ordinati in base alla chiave primaria
Tabella in memoria
delle chiavi dei cilindri
Indice cilindro
Indice cilindro
– il file è memorizzato su diversi cilindri su disco
– In memoria una tabella elenca i valori inferiori memorizzati in
ciascun cilindro del file
Record
Record
• ogni cilindro contiene una tabella con i valori inferiori
memorizzati in ciascun blocco del cilindro + area di overflow
Overflow
Overflow
– Ricerca di un record: identificazione del cilindro Æ
identificazione del blocco Æ identificazione del record nel
blocco e nell’area di overflow
Politecnico di Milano - Prof. Sara Comai
10
Overflow di
sistema
11
Politecnico di Milano - Prof. Sara Comai
12
3
Indicizzazione ad albero
Informatica 3
• Indicizzazione lineare: efficiente per basi di
dati statiche
• ISAM: efficiente per aggiornamenti limitati
Lezione 23 - Modulo 2
Æ BST per indici primari e secondari
• valori duplicati
• inserimenti e cancellazioni efficienti
• interrogazioni su intervalli
2-3 trees
– Problema: bilanciamento dell’albero
• se sono su disco la profondità dei nodi è
determinante per le prestazioni
• ogni percorso dalla radice alle foglie deve
richiedere pochi accessi ai blocchi
Politecnico di Milano - Prof. Sara Comai
13
Politecnico di Milano - Prof. Sara Comai
2-3 tree (1)
14
2-3 tree (2)
• Definizione: un 2-3 tree è un albero che soddisfa le
seguenti proprietà:
• Esempio:
– ogni nodo contiene una o due chiavi
– ogni nodo interno ha due figli (se contiene una chiave)
oppure tre figli (se contiene due chiavi)
– tutte le foglie sono allo stesso livello
– Le proprietà di ricerca in un 2-3 tree sono analoghe a quelle
di un BST
• i valori dei discendenti del sotto-albero di sinistra sono minori
del valore della prima chiave
• se il nodo ha due chiavi, i valori del sotto-albero centrale sono
minori della seconda chiave
• i valori del sotto-albero di destra sono maggiori o uguali alla
seconda chiave
Politecnico di Milano - Prof. Sara Comai
– Vantaggio: il costo del bilanciamento è basso
15
Politecnico di Milano - Prof. Sara Comai
16
4
Inserimento in un 2-3 tree (1)
Inserimento in un 2-3 tree (2)
• Operazione di inserimento:
• Operazione di inserimento con sdoppiamento
del nodo:
Inserisci 55:
Inserisci 14:
promozione
14
Politecnico di Milano - Prof. Sara Comai
17
Inserimento in un 2-3 tree (3)
Politecnico di Milano - Prof. Sara Comai
18
Inserimento in un 2-3 tree (4)
• Sdoppiamento della radice
• Sdoppiamento della radice
Inserisci 19:
Politecnico di Milano - Prof. Sara Comai
19
Politecnico di Milano - Prof. Sara Comai
20
5
Cancellazione in un 2-3 tree
Bilanciamento in altezza
• Osservazione: gli inserimenti e le cancellazioni non
aggiungono nuovi nodi in fondo all’albero
• Cancellazione di una chiave da un 2-3 tree:
– la chiave viene rimossa da un nodo foglia
contenente due record
– suddividono o combinano nodi, eventualmente spostando la
radice
– tutti i nodi foglia rimangono sempre allo stesso livello
Æ cancellazione della chiave
– la chiave viene rimossa da un nodo foglia
contenente un record
– la chiave viene rimossa da un nodo interno
Æ l’albero è bilanciato in altezza
Æsostituzione della chiave cancellata con un’altra chiave
(BST)
– Per un 2-3 tree la profondità massima dell’albero è log n
• le operazioni di inserimento, ricerca e cancellazione
richiedono un tempo Θ(log n)
può richiedere il merge di nodi
Politecnico di Milano - Prof. Sara Comai
21
Politecnico di Milano - Prof. Sara Comai
22
B-tree (1)
Informatica 3
• Struttura dati utilizzata in tutte le applicazioni che
richiedono inserimenti, cancellazioni, interrogazioni
su intervalli di valori
–
–
–
–
Lezione 23 - Modulo 3
B-trees e B+-trees
Politecnico di Milano - Prof. Sara Comai
23
albero bilanciato in altezza
aggiornamenti e ricerche su pochi blocchi del disco
chiavi con valori simili nello stesso blocco (località)
ogni nodo nell’albero contiene una % minima di
informazione (efficienza spaziale)
Politecnico di Milano - Prof. Sara Comai
24
6
B-tree (2)
Ricerca in un B-tree
• Definizione: un B-tree di ordine m è un albero che
soddisfa le seguenti proprietà:
• Esempio di B-tree di ordine 4:
– la radice è una foglia oppure ha almeno due figli
– ogni nodo interno, eccetto la radice, ha tra ⎡m/2⎤ e m figli
– tutte le foglie sono allo stesso livello nell’albero
E’ una generalizzione del 2-3 tree (m=3)
• Ricerca:
– ricerca binaria sulle chiavi del nodo corrente
• se si trova la chiave restituisci il record
• se non si trova la chiave e il nodo è una foglia: insuccesso
– scelta del ramo appropriato – ripeti
• Esempio: ricerca di 47
Politecnico di Milano - Prof. Sara Comai
25
Politecnico di Milano - Prof. Sara Comai
26
B+-tree
Inserimento in un B-tree
• B+-tree: variante del B-tree comunemente
implementata che memorizza i record (o i puntatori ai
record in caso di indice) solamente nei nodi foglia
• Operazione di inserimento:
– generalizzazione dell’inserimento in un 2-3 tree
– i nodi interni memorizzano solo valori di chiave e puntatori ai
nodi figli
– in un B+-tree di ordine m un nodo foglia può contenere più o
meno di m record – requisito: pieni per metà
– nodi foglia collegati in una lista doppia
interrogazioni
su intervalli
• Esempio:
– si trova il nodo foglia in cui inserire la nuova
chiave
• se lo spazio è sufficiente si inserisce il nuovo valore
• se lo spazio non è sufficiente si suddivide il nodo in due
nodi e si promuove la chiave intermedia al nodo padre (e
così via)
– Oss.: tutti i nodi interni sono pieni almeno per
metà
Politecnico di Milano - Prof. Sara Comai
27
Politecnico di Milano - Prof. Sara Comai
28
7
Ricerca in un B+-tree
Inserimento in un B+-tree
• Ricerca in un B+-tree: come in un B-tree
• Inserimento in un B+-tree: come in un B-tree
– se il nodo è pieno Æ dividi e promuovi
– termina in un nodo foglia
Esempio:
Inserisci 50
– Esempio: ricerca di 33
Esempio:
Inserisci 30
Politecnico di Milano - Prof. Sara Comai
29
Cancellazione in un B+-tree (1)
Politecnico di Milano - Prof. Sara Comai
30
Cancellazione in un B+-tree (2)
• Cancellazione in un B+-tree:
• Cancellazione in un B+-tree:
– underflow se il nodo in cui si cancella la chiave contiene
meno della metà dei record
Cancella 18:
Cancella 12:
Politecnico di Milano - Prof. Sara Comai
31
Politecnico di Milano - Prof. Sara Comai
32
8
Cancellazione in un B+-tree (3)
B*-tree
• Cancellazione in un B+-tree:
• B*-tree: variante del B+-tree con regole
diverse per la suddivisione e la combinazione
di nodi:
– underflow se il nodo in cui si cancella la chiave contiene
meno della metà dei record
– in caso di overflow i record vengono passati ai
fratelli vicini
• se i fratelli non hanno spazio allora i due nodi vengono
suddivisi in tre nodi
Cancella 33:
– in caso di undeflow il record viene combinato con i
suoi due fratelli
a) merge dei due nodi foglia
b) trasferisci la foglia
del sotto-albero di sinistra
e aggiusta i valori dei nodi
interni Æ nodi pieni per 2/3
Politecnico di Milano - Prof. Sara Comai
33
Analisi dei B-tree (1)
– I nodi sono sempre pieni per 2/3
Politecnico di Milano - Prof. Sara Comai
34
Analisi dei B-tree (2)
• Costo di ricerca, inserimento e cancellazione: Θ(log n)
con n = # record nell’albero
la base del log dipende dal fattore di ramificazione
dell’albero
• Per ridurre il numero di accessi al disco:
– 1) livelli più alti dell’albero in memoria centrale
• livelli 0 e 1 richiedono poco spazio
• se l’albero ha 4 livelli: 2 accessi al disco
• Basi di dati: 100 rami Æ alberi poco profondi
– 2) pool di buffer con tecnica LRU per le sostituzioni di record
– m = 100
•
•
•
•
1 livello: massimo 100 record
2 livelli: minimo 100 record, massimo 10.000 record
3 livelli: minimo 5.000 record, massimo 1 milione di record
4 livelli: minimo 250.000 record, massimo 100 milioni di record
Politecnico di Milano - Prof. Sara Comai
35
Politecnico di Milano - Prof. Sara Comai
36
9