Sei sulla pagina 1di 30

Basi di Dati

Sistemi per BD Relazionali:


Modello Fisico
Concetti Avanzati

versione 2.0

Questo lavoro concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)

G. Mecca mecca@unibas.it Universit della Basilicata


DBMS Relazionali Modello Fisico >> Sommario

Concetti Avanzati
Obiettivo
Indici multilivello
Indici e tabelle ISAM
B+ Tree (cenni)
Indici Hash
File hash
Indice hash
In Pratica
2
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Obiettivo

Obiettivo

Strategia di accesso ideale


inserimenti e cancellazioni efficienti (t. cost ?)
ricerca binaria
evitare ordinamenti del file
Gliindici rappresentano un passo avanti
Problemi
la ricerca si pu migliorare
gli inserimenti nei file ordinati sono un pb.
3
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Indici multiliv.

Indici Multilivello

Possono migliorare i tempi di ricerca


Intuizione
un indice un file ordinato di record
(chiave, puntatore)
se i valori della chiave sono distinti, posso
costruire un indice primario per lindice
posso proseguire costruendo vari livelli di
indice
4
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Indici Multiliv.

Indici Multilivello 3122 QueloPaolo Sci 2


3453 Mous Michi Agr 1
3122
3456 Rossi Maria null 3
4123
..

3122 3554 Rossi Mario Ing 1

5990
5990
3122 4123 Birillo Giulio Let 2
6102
4771 Verdi Luigi Sci 3

7488 5765 Neri Paolo Sci 2

7488 ..
8770 5876 Caio Tizio Ing 2
8770
9934
9934 Busti Lina Let 2
..

1 blocco (NB/bfr)/bfr blocchi NB/bfr blocchi NB blocchi


5
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Indici multiliv.

Indici Multilivello
Dinamica logaritmica: logbfr(NB) livelli di indice
ricerca logaritmica con base bfr>2
Esempio
dimblocco=2048, dimrecord=58, dimfile=2G
NB=1M, bfr=204 (fattore di blocco dellindice)
I livello = ceil(1M/204) = 5141 (ceil: p.te intera sup.)
II livello = ceil (29960/204) = 26
ricerca in ceil(log204(1M)) + 1 accessi = 4
Attenzione: tutti i valori devono essere distinti
6
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Indici multiliv.

Indici Secondari Multiliv. 3122 QueloPaolo Sci 2


3453 Mous Michi Agr 1
3456 Rossi Maria null 3

Birillo ..

Busti 6554 Rossi Mario Ing 1

Caio

7123 Birillo Giulio Let 2

7771 Verdi Luigi Sci 3


8765 Neri Paolo Sci 2
..
Pinco 9876 Caio Tizio Ing 2
Rossi

Verdi

9934 Busti Lina Let 2


valori distinti blocco di puntatori ..
7
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Indici multiliv.

Il Problema degli Inserimenti

Tutti i livelli sono file ordinati


costo degli inserimenti
Due possibili soluzioni
strutture ordinate statiche
ISAM
strutture ordinate dinamiche
B Tree e B+ Tree

8
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> ISAM

Strutture Ordinate Statiche


Strutture multilivello in cui
spazio per i blocchi allocato staticamente
file ordinato con blocchi contigui
inserimenti effettuati ordinatamente finch
ce spazio
file disordinato di trabocco (overflow)
periodiche riorganizzazioni globali con
fusione del file primario e del file di trabocco
ISAM: Indexed Sequential Access Method
9
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> ISAM

Struttura ISAM 3122 QueloPaolo Sci 2


3453 Mous Michi Agr 1
3122 3456 Rossi Maria null 3 3333 Stop John Sci 3

4123 .. 3442 Mira Lanza Ing 2


3122 5888 3554 Rossi Mario Ing 1
5990

3122 6442
5990 4123 Birillo Giulio Let 2
7412 6102 4771 Verdi Luigi Sci 3
7488
7402 5765 Neri Paolo Sci 2
7488
.. 5777 Caro Pino Ing 3
8122
5876 Caio Tizio Ing 2
8770
8770

8880
Blocchi contigui 9934
9934 Busti Lina Let 2 Blocchi di
del disco .. overflow

10
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> ISAM

Struttura ISAM

Principali vantaggi
allocazione contigua dei blocchi (localit)
la struttura non viene toccata
Svantaggi
possono essere necessarie ristrutturazioni
Adatta a tabelle con dinamica limitata
pochi inserimenti

11
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

Strutture Ordinate Dinamiche

Strutture multilivello in cui


file ordinato con rappresentazione collegata
allocazione dinamica dei blocchi
i blocchi sono sempre parzialmente pieni
algoritmi di inserimento opportuni
riorganizzazioni locali (fusioni e divisioni dei
blocchi)
B Tree, B+ Tree
12
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

B+ Tree
Insintesi, albero di ricerca di apertura n>2
Nodi
al pi n-1 val. della chiave ed n punt. a sottoal.
<p1, k1, p2, k2, p3, pm-1, km-1, pm>, m<=n,
k1< k2 < < km-1
Sottoalberi
i valori del primo sottoalbero sono minori o ug. di k1
tutti i valori X del sottoalbero i sono compresi tra ki-1 e
ki (ki-1 < X <= ki per i da 2 a m-1)
i valori dellultimo sottoalbero sono maggiori di km-1
13
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

1100 QueloPaolo Sci 2

B+ Tree

1240 Rossi Mario Ing 1


1240
3121
1241 Birillo Giulio Let 2

3121 Verdi Luigi Sci 3

3122 Neri Paolo Sci 2


3599 4128

7552 7400
3599 Caio Tizio Ing 2

3600 Busti Lina Let 2


4128 Rossi Maria Let 2


Esempio: 7800
Ricerca di 4400 8900
4129 Mous Michi Agr 1

7400 Pinco Palla Ing 2


14
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

B+ Tree

Vincoli aggiuntivi
lalbero deve essere bilanciato
loccupazione dei blocchi deve essere almeno il 50%
Algoritmi di inserimento e cancellazione
rispettare i vincoli
fusioni e divisioni (possono coinvolgere vari livelli)
A regime
blocchi pieni per i 2/3 (67% circa)

15
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

Radice

B+ Tree 13 17 24 30

2 3 5 13 14 16 17 19 20 24 25 27 30 33 34 38 39

inserimento del valore 4

Nuova Radice
17

4 13 24 30

2* 3* 4* 5* 13* 14* 16* 19* 20* 24* 25* 27* 30* 33* 34* 38* 39*

16
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

B+ Tree in Pratica
Ordine tipico: 200
numero medio di puntatori 133 (molto alto)
Capacit di Indicizzazione:
profondit 4: 1334 = 312.900.700 blocchi
profondit 3: 1333 = 2.352.637 blocchi
I livelli pi alti possono essere tenuti nel buffer:
Livello 1: 1 blocco = al pi 8 Kbyte
Livello 2: 133 blocchi = al pi 1 Mbyte
Livello 3: 17.689 blocchi = al pi 133 MBytes
17
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> B+ Tree

B+ Tree

Vantaggi
inserimenti logaritmici meno costosi che in un file
ordinato
ricerche rapide
accesso ordinato secondo la chiave di ordinamento
possibile aggiungere indici secondari
In generale
ha prestazioni migliori della struttura ISAM
utilizzata dalla maggior parte dei DBMS (VSAM)
18
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

Hashing
E possibile ottenere
tempo di inserimento costante ?
tempo di ricerca costante ?
es: matricola=1234 in tempo costante
Hashing
ricerche in tempo lineare nella lunghezza
della chiave
File Hash
Indice Hash
19
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

File Hash
Idea
possibile utilizzare una funzione di hash
per inserire i record nel file
e poterli recuperarli in tempo praticamente
costante successivamente
organizzazione alternativa ai file heap e ai
file ordinati
Hashing statico (simile a ISAM)
Hashing dinamico (simile a B+ Tree)
20
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

File Hash 3122 QueloPaolo Sci 2


4775 Mous Michi Agr 1
9876 Rossi Maria null 3

0 ..
h(k) 5442 Rossi Mario Ing 1
1
2
Valore
3
della h 2112 Birillo Giulio Let 2
chiave 7771 Verdi Luigi Sci 3
k 3425 Neri Paolo Sci 2
..
N-1
6779 Caio Tizio Ing 2

Funzione puntatori
di hash h ad N blocchi 1234 Busti Lina Let 2
es: (a+k*b) mod N
..
21
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

File Hash

Organizzazione alternativa a file heap e


file ordinati
File hash statici
Numero di bucket = N
N Blocchi iniziali per il file allocati
staticamente
Blocchi di overflow

22
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

File Hash Statico 3122 QueloPaolo Sci 2


4775 Mous Michi Agr 1
9876 Rossi Maria null 3 8663 Stop John Sci 3

0 .. 3442 Mira Lanza Ing 2


h(k) 5442 Rossi Mario Ing 1
1
2
Valore
3
della h 2112 Birillo Giulio Let 2
chiave 7771 Verdi Luigi Sci 3
k 3425 Neri Paolo Sci 2
.. 9777 Caro Pino Ing 3
N-1
6779 Caio Tizio Ing 2

Puntatori agli

N blocchi 1234 Busti Lina Let 2


tipicamente in RAM
..
23
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

File Hash Dinamico (Cenni)

Ilnumero di blocco pu crescere


dinamicamente
N Blocchi iniziali per il file

Quando un blocco si riempie, il numero di


blocchi viene raddoppiato
Servono funzioni di hash appropriate

24
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

Indice Hash

Indice per un file primario


File primario tipicamente heap

Indice memorizzato con organizzazione


hash su una chiave di ricerca
Vantaggi
inserimenti e ricerche molto efficienti
utile per correlazioni tra tabelle diverse
es: nome degli studenti che hanno sostenuto lesame di analisi
25
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> Hashing

Indice Hash 5442 3122 QueloPaolo Sci 2


9876 4775 Mous Michi Agr 1
2112 9876 Rossi Maria null 3

0 6779 ..
h(k) 8723 5442 Rossi Mario Ing 1
1
2 9112
Valore
3
della 2112 Birillo Giulio Let 2
h
chiave 7771 Verdi Luigi Sci 3
k 4775 3425 Neri Paolo Sci 2
3122 ..
N-1 1234 6779 Caio Tizio Ing 2
7771

9543
3224 1234 Busti Lina Let 2
..
26
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> In pratica

In Pratica
File ordinati + File heap +
Indici Multilivello Indici Hash
ricerche logaritmiche inserimenti efficienti
(con base molto alta) ricerche efficienti
ordinamento non supporta
inserimenti logaritmici lordinamento
(con ristrutturazioni
nel caso di B+ tree)

In sintesi: non esiste lorganizzazione ideale


27
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Concetti Avanzati >> In pratica

In Pratica

MySQL
tabelle ISAM, MyISAM, Heap
(+ InnoDB, BDB)
indici B+ Tree, Hash
PostgreSQL
tabelle in file ordinati
indici B+ Tree, Hash (+ R Tree)
operatore CLUSTER
28
G. Mecca - mecca@unibas.it - Basi di Dati
DBMS Relazionali Modello Fisico >> Sommario

Concetti Avanzati
Obiettivo
Indici Multilivello
Indici e tabelle ISAM
B+ Tree
Indici Hash
File hash
Indice hash
In Pratica
29
G. Mecca - mecca@unibas.it - Basi di Dati
Termini della Licenza

Termini della Licenza


This work is licensed under the Creative Commons Attribution-
ShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California
94305, USA.

Questo lavoro viene concesso in uso secondo i termini della


licenza Attribution-ShareAlike di Creative Commons. Per ottenere
una copia della licenza, possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una
lettera allindirizzo Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.

30
G. Mecca - mecca@unibas.it - Basi di Dati

Potrebbero piacerti anche