Title: Tecnologia delle basi di dati: Strutture fisiche di accesso
1Tecnologia delle basi di dati Strutture fisiche
di accesso
- Esercitazioni del Corso di Sistemi Informativi
- Marina Mongiello
- mongiello_at_poliba.it
2Organizzazione fisica e metodi daccesso
- Organizzazione dei file
- Indica lorganizzazione dei dati in un file di
record in blocchi e strutture daccesso - Specifica in che modo i record ed i blocchi sono
disposti sul dispositivo di memorizzazione e
collegati - Metodi daccesso
- Un insieme di programmi che specifica in che modo
le operazioni possono essere eseguite su un file - Generalmente alcuni metodi daccesso possono
essere applicati soltanto su file aventi una
particolare organizzazione fisica
3Strutture fisiche di accesso
- Descrivono lorganizzazione fisica dei dati di
una base dati nella memoria di massa - Obiettivi
- Garantire operazioni di ricerca e di modifica
efficienti da parte dei programmi applicativi
4Organizzazioni fisiche primarie
- Strutture sequenziali entry-sequenced, ad array,
sequenziale ordinato - Strutture con accesso calcolato (uso di funzioni
hash) - Strutture ad albero B-tree, B-tree
5Metodi di accesso
- Sono opportuni moduli software che contengono
primitive per laccesso e la manipolazione dei
dati specifici di ciascuna organizzazione fisica - Conosce lorganizzazione fisica delle tuple nelle
pagine
6Architettura del gestore degli accesi
7Strutture sequenziali
- Disposizione sequenziale delle tuple in memoria
di massa - E costituito da blocchi consecutivi di memoria.
- Le tuple possono essere inserite nei blocchi in
sequenza - Entry-sequenced sequenza indotta dallordine di
immissione - Ad array la posizione delle tuple dipende dal
valore assunto da un campo indice - Sequenziale ordinatala sequenza dipende dal
valore di un campo detto chiave
8Gestione delle tuple nelle pagine (esempio per
metodi di accesso sequenziali e calcolati)
9Strutture sequenziali entry-sequenced (1)
sequenza delle tuple indotta dal loro ordine di
immissione
- Si rivela una strategia ottimale per operazioni
di lettura e scrittura sequenziali. - Il modo tipico di accesso ai dati è tramite una
funzione di scansione sequenziale. - Questa organizzazione utilizza tutti i blocchi
allinterno del file e tutti gli spazi
allinterno dei blocchi. - Laccesso al file sia in inserimento che in
lettura avviene dalla fine.
10Strutture sequenziali entry-sequenced (2)
- La modifica di tuple di dimensione variabile e la
cancellazione risulta problematica. - La cancellazione spesso si riduce ad una
invalidazione dellinformazione con spreco di
spazio
11Strutture sequenziali ad array (1) la
posizione delle tuple dipende dal valore assunto
da un campo indice
- È possibile solo per tuple di dimensione fissa
- Al file viene associato un numero n di blocchi
contigui e ciascun blocco viene diviso in m slot
utilizzabili per le tuple (array n x m slot) - Ciascuna tupla è dotata di un valore numerico i
che funge da indice dellarray
12Strutture sequenziali ad array (2)
- Le cancellazioni creano degli slot liberi
- Gli inserimenti devono essere fatti negli slot
liberi o al termine del file - Le funzioni primitive garantite da una tale
struttura sono read-ind insert-at insert-near
insert-at-end update-ind delete-ind
13Strutture sequenziali ordinate (1)la sequenza
dipende dal valore di un campo detto chiave(non
è più usata)
- Lordinamento delle tuple riflette quello
lessicografico dei valori presenti nel campo
chiave. - Sono avvantaggiate le transazioni che richiedono
un accesso ordinato alle tuple in base alla
chiave. - Per trovare la tupla che contiene un valore
specifico si può ricorrere alla ricerca
dicotomica.
14Strutture sequenziali ordinate (2)
- Problema inserire nuove tuple (riordino delle
tuple già presenti in memoria di massa) - Possibili soluzioni
- prevedere a priori un certo numero di slot
liberi mantenendo la struttura sequenziale con
riordino locale - integrare il file sequenziale con un file di
overflow
15Strutture con accesso calcolato (1)
- Come per la struttura sequenziale ordinata, cè
un accesso associativo ai dati - - la locazione fisica dei dati dipende dal
valore del campo chiave - Per il file vengono allocati un numero B di
blocchi (generalmente) contigui. - Il gestore di questo metodo di accesso dispone di
un algoritmo di hash che restituisce un valore
compreso tra 0 e B-1.
16Strutture con accesso calcolato (2)
- Funziona bene se viene previsto un basso
coefficiente di riempimento (file
sovradimensionato) - Bisogna gestire il problema delle collisioni
- Lhashing è efficiente per accedere ai dati in
base a predicati di uguaglianza - Risulta inefficace per interrogazioni che
richiedono laccesso ad intervalli di valori
17Strutture ad Albero (1)
- Nei database relazionali le strutture più
frequentemente utilizzate sono il B-Tree ed il
B-Tree - Ogni nodo coincide con una pagina o blocco a
livello di file system. - I legami tra i nodi vengono stabiliti da
puntatori che collegano fra loro le pagine - Gli alberi dovrebbero essere sempre bilanciati
(Balanced-Tree) per avere tempi di accesso
pressoché costanti.
18Strutture ad Albero (2)
- Lefficienze di un albero B o B è normalmente
elevata perché spesso le pagine che memorizzano i
primi livelli dellalbero risiedono nel buffer - Una ottimizzazione dello spazio occupato avviene
tramite la compressione dei valori chiave - Vengono mantenuti solo i prefissi nei livelli
alti dellalbero e solo i suffissi, a pari
prefisso, nei livelli bassi dellalbero, ove si
svolge la parte finale della ricerca.
19Strutture ad albero B-Tree (1)
Sotto-albero con chiavi KgtKq
Sotto-albero con chiavi Ki-1KltKi
Sotto-albero con chiavi KltK1
20Strutture ad albero (2)key-sequenced
tKi-1
tK1
tKq
tKi
I nodi foglia contengono lintera tupla. È
generalmente utilizzata per realizzare lindice
primario (unique in una tabella)
21Strutture ad albero (3)indiretta
I nodi foglia contengono puntatori ai blocchi
della base di dati nei quali sono presenti tuple
con il valore di chiave specificato. Il
posizionamento delle tuple nel file può essere
qualsiasi. È possibile utilizzare un qualsiasi
dei metodi visti in precedenza.
22Strutture ad albero (4)Inserimento
Linserimento di un nuovo valore avviene tramite
il semplice aggiornamento del nodo foglia, se è
ancora presente dello spazio nella pagina. Se lo
spazio è finito, si ricorre ad unoperazione di
split e successivo aggiornamento sia del nodo
foglia che del nodo .
Inserimento di K3 e split del livello foglia
23Strutture ad albero (5)Inserimento,
cancellazione e modifica
- Lo split può essere necessario anche ai livelli
superiori e propagarsi fino al nodo radice. - Loperazione cancellazione avviene in maniera
duale a quella di inserimento tramite, se
necessario, il merge di due nodi foglia. - La modifica viene vista come una cancellazione
seguita da un inserimento e si fa ricadere nei
due casi precedenti.
24B-Tree
I nodi foglia sono legati da una catena che li
connette in base allordine imposto dalla chiave.
Questa struttura dati consente anche una
scansione ordinata in base ai valori di chiave
dellintero file.
25B-Tree (ottimizzazione)
K6
K1
K10
K5
K3
K2
K4
K8
K7
K9
tk7
tk4
tk5
tk6
tk10
tk1
tk8
tk9
tk2
tk3
Per arrivare a leggere il valore di una tupla,
non è necessario arrivare fino in fondo
allalbero.