250 likes | 474 Views
Tecnologia delle basi di dati: Strutture fisiche di accesso. Esercitazioni del Corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it. Organizzazione fisica e metodi d’accesso. Organizzazione dei file
E N D
Tecnologia delle basi di dati: Strutture fisiche di accesso Esercitazioni del Corso di Sistemi Informativi Marina Mongiello mongiello@poliba.it
Organizzazione fisica e metodi d’accesso • Organizzazione dei file • Indica l’organizzazione dei dati in un file di record in blocchi e strutture d’accesso • Specifica in che modo i record ed i blocchi sono disposti sul dispositivo di memorizzazione e collegati • Metodi d’accesso: • Un insieme di programmi che specifica in che modo le operazioni possono essere eseguite su un file • Generalmente alcuni metodi d’accesso possono essere applicati soltanto su file aventi una particolare organizzazione fisica
Strutture fisiche di accesso Descrivono l’organizzazione 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
Organizzazioni 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
Metodi di accesso • Sono opportuni moduli software che contengono primitive per l’accesso e la manipolazione dei dati specifici di ciascuna organizzazione fisica • Conosce l’organizzazione fisica delle tuple nelle pagine
Metodi di Accesso DBMS Gestore dei metodi d’accesso Scan Mgr B+Tree Mgr Sort Mgr Hash Mgr … scan fix use unfix Recovery Manager Buffer Manager Architetturadel gestore degli accesi
Strutture 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 dall’ordine di immissione • Ad array: la posizione delle tuple dipende dal valore assunto da un campo indice • Sequenziale ordinata:la sequenza dipende dal valore di un campo detto chiave
Block header Bit di parità Block trailer Page header Page trailer tupla tupla tupla t1 t2 t3 *t1 *t2 *t3 Parte utile della pagina Dizionario di pagina Informazione di controllo relativa al metodo d’accesso Informazione di controllo utilizzata dal file system Gestione delle tuple nelle pagine (esempio per metodi di accesso sequenziali e calcolati)
Strutture 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 all’interno del file e tutti gli spazi all’interno dei blocchi. • L’accesso al file sia in inserimento che in lettura avviene dalla fine.
Strutture sequenziali entry-sequenced (2) • La modifica di tuple di dimensione variabile e la cancellazione risulta problematica. • La cancellazione spesso si riduce ad una invalidazione dell’informazione con spreco di spazio
Strutture 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 dell’array
Strutture 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
Strutture sequenziali ordinate (1)la sequenza dipende dal valore di un campo detto chiave(non è più usata) • L’ordinamento 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.
Strutture 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
Strutture 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.
Strutture con accesso calcolato (2) • Funziona bene se viene previsto un basso coefficiente di riempimento (file sovradimensionato) • Bisogna gestire il problema delle collisioni • L’hashing è efficiente per accedere ai dati in base a predicati di uguaglianza • Risulta inefficace per interrogazioni che richiedono l’accesso ad intervalli di valori
Strutture 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.
Strutture ad Albero (2) • L’efficienze di un albero B o B+ è normalmente elevata perché spesso le pagine che memorizzano i primi livelli dell’albero risiedono nel buffer • Una ottimizzazione dello spazio occupato avviene tramite la compressione dei valori chiave • Vengono mantenuti solo i prefissi nei livelli alti dell’albero e solo i suffissi, a pari prefisso, nei livelli bassi dell’albero, ove si svolge la parte finale della ricerca.
P0 K1 …… Ki-1 Pi Ki …… Kq Pq Strutture ad albero: B-Tree (1) Sotto-albero con chiavi K>Kq Sotto-albero con chiavi Ki-1≤K<Ki Sotto-albero con chiavi K<K1
P1 K1 …… Ki-1 Pi Ki …… Pq Kq Strutture ad albero (2)key-sequenced tK1 tKi-1 tKi tKq I nodi foglia contengono l’intera tupla. È generalmente utilizzata per realizzare l’indice primario (unique in una tabella)
K1 K6 K1 K2 K4 K5 Strutture 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.
K1 K1 K6 K3 K1 K2 K4 K5 K6 K3 K4 K5 K1 K2 Strutture ad albero (4)Inserimento L’inserimento 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 un’operazione di split e successivo aggiornamento sia del nodo foglia che del nodo . Inserimento di K3 e split del livello foglia
Strutture ad albero (5)Inserimento, cancellazione e modifica • Lo split può essere necessario anche ai livelli superiori e propagarsi fino al nodo radice. • L’operazione 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.
100 200 10 90 10 2 5 50 100 150 100 145 t10 t2 t5 t90 t100 t145 B+-Tree I nodi foglia sono legati da una catena che li connette in base all’ordine imposto dalla chiave. Questa struttura dati consente anche una scansione ordinata in base ai valori di chiave dell’intero file.
B-Tree (ottimizzazione) K1 K6 K10 K5 K2 K3 K4 K7 K8 K9 tk7 tk4 tk5 tk6 tk10 tk8 tk9 tk1 tk2 tk3 Per arrivare a leggere il valore di una tupla, non è necessario arrivare fino in fondo all’albero.