Organizzazione fisica dei dati: Introduzione - Isa-Cnr

Transcript

Organizzazione fisica dei dati: Introduzione - Isa-Cnr
Organizzazione fisica dei dati:
Introduzione
Basi di dati: Architetture
e linee di evoluzione Seconda edizione
Capitolo 1
Appunti dalle lezioni
Memoria principale e secondaria
I programmi possono fare riferimento solo a dati
in memoria principale
I dati in memoria secondaria possono quindi
essere utilizzati solo se prima trasferiti in
memoria principale
Le basi di dati debbono essere (in sostanza) in
memoria secondaria per due motivi:
–
–
dimensioni
persistenza
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
2
Memoria principale e secondaria
I dispositivi di memoria secondaria sono
organizzati in blocchi di lunghezza (di solito)
fissa (ordine di grandezza: alcuni KB)
Le uniche operazioni sui dispositivi sono la
lettura e la scrittura dei dati di un blocco (cioè di
una stringa di byte);
Le memorie principali sono organizzate in
pagine
–
Per comodità consideriamo blocco e pagina sinonimi
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
3
Memoria principale e secondaria
Accesso a memoria secondaria:
–
–
–
tempo di posizionamento della testina (10-50ms)
tempo di latenza (5-10ms)
tempo di trasferimento (1-2ms)
In media non meno di 10 ms
Accessi a blocchi “vicini” costano meno (contiguità)
Il costo di un accesso a memoria secondaria è diversi di
grandezza maggiore di quello per operazioni in
memoria centrale
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
4
Applicazioni I/O bound
Molti accessi a memoria secondaria e
relativamente poche operazioni
Il loro costo dipende allora (quasi)
esclusivamente dal numero di accessi a
memoria secondaria
I DBMS sono classiche applicazioni I/O bound
È allora fondamentale cercare di diminuire il
numero di blocchi letti.
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
5
Buffer
Al DBMS è associata un’area in memoria
centrale detta Buffer:
–
–
–
condivisa fra le operazioni
ovviamente organizzato in pagine di dimensioni pari
o multiple di quelle dei blocchi di memoria
secondaria (1KB-100KB)
è importantissimo per via della grande differenza di
tempo di accesso fra memoria centrale e memoria
secondaria:
deve essere abbastanza grande
deve essere gestito in maniera intelligente
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
6
Buffer management
Ridurre il numero di accessi alla memoria
secondaria attraverso meccanismi intelligenti:
in caso di lettura
–
se la pagina è già presente nel buffer, non è
necessario accedere alla memoria secondaria
in caso di scrittura
–
–
Scrivere in momenti in cui il sistema è più scarico
Collezionare più scritture sulla stessa pagine
Ammesso però che ciò sia compatibile con la gestione
dell’affidabilità
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
7
Buffer manager
N << K
Blocco 1
Pagina 1
Blocco 2
Pagina 2
Blocco 3
Pagina N
Blocco 4
Blocco K
Riceve richieste di lettura e scrittura (di pagine)
Le esegue (in maniera intelligente) usando le
primitive mese a disposizione del SO
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
8
Buffer manager: primitive
fix
–
richiesta di un blocco
richiede una lettura solo se la pagina non è nel buffer
Altrimenti un contatore associato alla pagina è incrementato
setDirty
Unfix
–
–
comunica al buffer manager che la pagina è stata modificata
indica che la transazione ha concluso l'utilizzo della pagina
–
decrementa il contatore associato alla pagina
force
trasferisce in modo sincrono (con chi?) una pagina in memoria
secondaria
"località dei dati": è alta la probabilità di dover riutilizzare i dati
attualmente in uso
"legge 80-20“: l'80% delle operazioni utilizza sempre lo stesso 20%
dei dati
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
9
Lettura
A fronte di un richiesta di lettura del blocco i
– Se il blocco i è già in una pagina, restituisce l'indirizzo
– Altrimenti
Cerca una pagina libera nel buffer
– Carica il blocco e restituisce l'indirizzo
Se non ci sono pagine libere:
– Trova un pagina non più usata; se i dati in essa sono
stati modificati riporta i dati sul blocco relativo; carica il
blocco i in questa pagina e ritorna l’indirizzo
– Se non ci sono pagine “liberabili”,
“steal”: selezione di una "vittima", pagina occupata
del buffer; I dati della vittima sono scritti in memoria
secondaria; viene letta la pagina di interesse dalla
memoria secondaria e si restituisce l'indirizzo
“no-steal”: l'operazione viene posta in attesa
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
10
Scrittura
Se il buffer manager funziona in modalità force
–
Al commit della transazione che ha modificato la
pagina
Se invece funziona in modalità no-force
–
in modo asincrono quando lo ritiene opportuno
–
può decidere di anticipare o posticipare scritture per
coordinarle e/o sfruttare la disponibilità dei dispositivi
in modo sincrono quando è richiesto esplicitamente
con una force
I buffer manager più diffusi lavorano in modalità
no-force/no-steal.
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
11
Organizzazione delle tuple nelle pagine
dizionario di pagina
parte utile della pagina
bit di parita‘
*t1 *t2 *t3
stack
tupla
t3
tupla
t2
tupla
t1
stack
informazione di controllo relativa al metodo di accesso
informazione di controllo utilizzata dal file system
Se la lunghezza delle tuple è fissa, la struttura può essere
semplificata
Alcuni sistemi possono spezzare le tuple su più pagine (necessario
per tuple grandi)
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
12
Problema
Come faccio a saper in quale blocco è una tupla
che mi serve?
Esempio:
–
Posso supporre di sapere i blocchi a quali
tabelle sono associati, ma
–
Voglio i dati dell’Impiegato con matricola ‘ABCD’
Non so quale di questi blocchi contiene i dati che mi
servono.
Soluzione:
–
Se so come ho messo le tuple, so dove stanno
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
13
Gestore dei metodi di accesso
SQL
Gestore dei
metodi d’accesso
lettura/scrittura "virtuale"
Gestore
del buffer
lettura/scrittura “fisica”
Gestore della
memoria secondaria
Memoria
secondaria
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
14
Organizzazione fisica dei dati
Se la tabella T sta in 100 blocchi, devo cercare
di evitare di leggerli tutti per trovare una tupla.
Il modo in cui i dati sono organizzati mi
permette di ritrovare i dati:
–
–
–
–
Entry Sequenced
Ordinata
Hash
Con indice
Ogni tecnica ha vantaggi e svantaggi
Chiave di memorizzazione
–
Da non confondere con la chiave della tabella
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
15
Struttura entry sequenced
Chiamata anche file heap
Gli inserimenti vengono effettuati
–
–
in coda (con riorganizzazioni periodiche)
al posto di tuple cancellate (facile quando le tuple sono a
lunghezza fissa)
Ricerca per valore:
–
In media leggo T/2 blocchi, se T è il numero di blocchi
assegnato alla tabella
Ricerca per intervallo:
Inserimento: molto veloce
Cancellazione: richiede una ricerca e lascia spazi vuoti.
E’ molto diffusa nelle basi di dati relazionali
–
–
T blocchi
Associata a indici secondari
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
16
Strutture ad array
Possibile se e solo se:
–
–
Assegniamo B blocchi alla tabella
In ogni blocco ci siano m posizioni utili
La tuple sono:
–
–
–
Le tuple sono di dimensione fissa
Ad ogni tupla è associabile univocamente un indice intero
Nel blocco 0 se l’ indice ∈ [0, m)
Nel blocco 1 se l’ indice ∈ [m, 2m)
……
Ottima per ricerche sull’indice
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
17
Strutture ordinate
Le tuple sono memorizzate seguendo l’ordine
dettato dalla chiave di memorizzazione.
Permettono ricerche binarie
Ricerca per valore:
–
Ricerca in intervallo:
–
log2B
Inserimento:
–
log2B
log2B più eventuale splitting
Cancellazione: log2B
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
18
Struttura hash
Sia B il numero di blocchi assegnato alla
tabella.
Sia F una funzione (hash function) che
trasforma la chiave di memorizzazione c in un
intero ∈ [0,B).
La generica tupla con chiave di ordinamento c
va memorizzata nel blocco b =F(c)
L’utilizzo di una buona funzione di hashing (che
distribuisca in modo causale e uniforme) è
fondamentale
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
19
Esempio
Si consideri una tabella gestita tramite hashing, il cui
campo chiave contenga i seguenti nominativi:
–
Green, Lovano, Osby, Peterson, Pullen Scofield, Allen, Haden,
Sheep, Harris, MacCann, Mann, Brown, Hutcherson, Newmann,
Ponty, Cobbham, Coleman, Mingus, Lloyd, Tyner, Fortune,
Coltrane.
Un algoritmo di hashing con B=8.
–
–
–
–
–
–
Per ogni carattere del nome, considerare il corrispondente
numero in ordine alfabetico (a = 1, b = 2 …)
Sommare tutti i numeri ottenuti e fare il modulo B della divisione
Hash(Green)=(7+18+5+5+14) mod 8=1
Hash(Lovano)=(12+15+22+1+13+15) mod 8=6
Hash(Osby)=(15+19+2+25) mod 8=5
Hash(Peterson)=(16+5++20+5+18+19+15+13) mod 8=7
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
20
Struttura hash
Collisioni:
–
Le collisioni diventano un problema
se il blocco si riempie
Aumentare il numero di blocchi
assegnati alla tabella è un problema
–
Matricola M mod 50
60600
0
66301
1
205751
1
205802
2
200902
2
116202
2
200604
4
66005
5
116455
5
200205
5
201159
9
205610
10
201260
10
102360
10
205460
10
205912
12
205762
12
200464
14
205617
17
205667
17
Due valori di chiave che danno luogo
allo stesso blocco
devo riallocare tutte le tuple.
Le collisioni che provocano overflow
vengono allora gestite attraverso
blocchi collegati
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
21
Struttura hash
60600
66005
116455
200205
205610
201260
102360
205460
200430
102690
66301
205751
115541
200296
205796
200268
205478
210533
200138
102338
205693
200498
200604
201159
200464
205619
205724
206049
206092
205845
0
205802
200902
116202
205912
205762
205617
205667
210522
205977
205887
1
2
3
4
Ricerca per matricola: (38+2*2)/40 = 1,05
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
22
Struttura hash
È l'organizzazione più efficiente per l'accesso
diretto basato su valori della chiave con
condizioni di uguaglianza
Anche la cancellazione di singole tuple funziona
molto bene.
L’inserimento di nuove tuple funziona bene a
meno della gestione di overflow di blocchi.
Le collisioni (overflow) sono di solito gestite con
blocchi collegati
Non è efficiente per ricerche basate su intervalli
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
23
Fattore di riempimento
Devo memorizzare T tuple
In ogni blocco entrano F tuple (fattore di blocco)
B = T/F
In genere si stabilisce un fattore di riempimento
(f, < 1) che evita di saturare subito i blocchi
B = T/(f*F)
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
24
Caratterizzazione probabilistica del metodo
Se le tuple sono distribuite uniformemente, la
probabilità che un blocco riceva esattamente t
tuple è:
–
Probabilità di overflow probabilità che in un
blocco vadano più di F tuple
–
P(t) = (T!)/(t!(T-t)!) ∗ (1/B)t ∗ (1-1/B)(T-t)
P = 1 – Σ i=0,F p(i)
È possibile definire la lunghezza media della
catena di overflow a partire dalla coppia (F,f).
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
25
Struttura hash dinamiche
Il numero di blocco può crescere
dinamicamente
B Blocchi iniziali per il file
Quando un blocco si riempie, il numero di
blocchi viene raddoppiato
–
Usando funzioni di hash appropriate basta riallocare
solo alcune tuple
Basi di Dati 2 – Prof. Antonio d’Acierno
Organizzazione fisica: Introduzione
26