Progettazione Fisica Organizzazione dei files Organizzazione indici FILE Insieme di record lunghezza fissa (R) lunghezza variabile Record Header BH RH record1 RH record2 RH record2 RH record3 Block Header N.B. I files del DBMS non corrispondono Necessariamente ai files del SO 1
Il DB fisico A livello fisico un DB consiste di un insieme di files Ogni files viene visto come una collezione di pagine o blocchi di dimensione fissa (es 4K) Ogni pagina è l unita di trasferimento dati da disco a memoria (buffer) Ogni pagina memorizza piu records Ogni record corrisponde a una t-upla logica della relazione Il file come insieme di blocchi B1 R1.. R2. R3.... B3 R7.......... B2 R4.. R5. R6.... B4..... R13.... P p1 p1 p1 p1 p1 p1 T t1 t1 t2 t2 t3 t3 C c1 c2 c1 c2 c1 c2 Rappr. Fisica Records t-uple Rel. Logica 2
Fattore di Blocco Ogni blocco contiene un numero fisso di record detto fattore di blocco fattore di blocco : BFR = B/R dimensione blocco dimensione record Per essere piu precisi BFR= (B-BH)/(R+RH) Di solito BH e RH non si considerano Il modello di memorizzazione di DB2 Lo spazio fisico è organizzato in Tablespaces Ogni Tablespace è una collezione di Containers Ogni Container è una collezione di Extents Extent = unità minima di allocazione su disco insiemi contigui di pagine da 4 k buckets 3
Il modello di memorizzazione di DB2 La dimensione di un Extent dipende dal Tablespace associato Ogni relazione è memorizzata all interno di un singolo Tablespace Un extent puo contenere dati di una singola relazione Organizzazione dei files (rispetto ai record) File heap (file seriale) record memorizzati secondo l ordine di inserimento File ordinato (file sequenziale) record ordinati rispetto a un campo chiave Hash posizione record calcolata File indice ad albero Record indirizzati da un indice ad albero 4
File heap o seriale Inserimento efficiente Aggiornamento e ricerca sequenziale complessita lineare Cancellazione ricerca e riscrittura dei record File sequenziale ordinato Aggiornamento e ricerca dicotomica complessita logaritmica Inserimento Cancellazione riscrittura dell intero file HELP: possibilità di overflow 5
FILE File di overflow Ape. Armadio Bambola Carbone.. Massa. Melone... Mina....... Ruota. Bacio Burla Mela Milano Balia File sequenziale con overflow BH RH record1 p1 RH record1 p2 RH record2 p3 RH record3 File di overflow File di overflow File di overflow 6
File hash Allocazione random del record basata su un algoritmo applicato ad un campo chiave Accesso diretto al record Esempio hashing 13 citta il cui nome e composto da 5 lettere Aosta, Cuneo, Forlì, Lecce, Lucca, Massa, Nuoro, Parma, Pavia, Rieti Siena, Terni, Udine Disporle in un file ampio 20 record 7
Algoritmo di hashing Calcolo peso lessicografico Aosta A O S T A 1x9 + 15x8 + 19x7 + 20x6 + 1x5 =387 Valuto il modulo rispetto a 20 387/20 resto= 7 7 Buckets 0 Lucca AOSTA 7 Lucca 0 Forlì 17 Massa 17 7 Aosta Cuneo 18 Siena 7 17 Forlì 8
Risoluzione delle collisioni Ricerca posizione libera e collegamento con puntatori dispendiosa e non sempre praticabile Aree di overflow riorganizzazione periodica Hash ripetuto iterativamente dispendioso Hash :requisiti base -Distribuzione uniforme delle chiavi nello spazio degli indirizzi -Distribuzione casuale delle chiavi -Generare tanti indirizzi almeno quanti sono i buckets dell area di memorizzazione. 9
Funzione Hash -Associa ad ogni chiave un indirizzo in uno spazio di B blocchi o bucket -Ogni bucket contiene F records -Esiste la possibilità di collisioni (chiavi diverse che corrispondono ad uno stesso indirizzo Due fasi -FOLDING: Mappa i valori della chiave su interi positivi uniformemente distribuiti in un range AMPIO. -HASHING: mappa di un intero positivo su un range (0,B) (esempio modulo 20) Tempo medio di accesso= (Num. accessi OK *1 + Num. overflow *2) / Num. totale accessi 10
Tempo di accesso Tempo medio di accesso= (Num. accessi OK *1 + Num. overflow *2) / Num. totale accessi Esempio: N. Accessi o.k =10 N. Accessi overflow =4 Tempo medio di accesso= (10+8)/14 Indici Strutture ausiliarie di accesso per velocizzare la ricerca di record File indice File dati R1.. R2. R3.... Possibilita di piu indici su uno stesso file 11
Indici Determina il cammino di accesso ai dati secondo una CHIAVE di ricerca, cioè un attributo o un insieme di attributi usati per ricercare un dato N.B. N.B. Il concetto di CHIAVE di ricerca è diverso da quello di CHIAVE primaria della relazione Indice E costituito da una serie di entrate, ciascuna corrispondente ad una CHIAVE dell indice, ovvero degli attributi su cui l indice è definito File dati File indice R1.. R2. R3. Entrata dell indice... Possibilita di piu indici su uno stesso file 12
L entrata puo contenere: A1 Un record dati con il valore di chiave K (indice integrato) A2 Una coppia (K,ID) con valore di chiave K e identificatore del record A3 Una coppia (K,L) dove L è una lista di valori con valore di chiave K Tipologie di indici Su chiave primaria e secondaria Clusterizzati e non clusterizzati Multi livello Ad albero 13
Indice su chiave primaria e secondaria 1 Su chiave primaria l indice ha come chiave di ricerca un insieme di attributi che comprende la chiave della relazione Su chiave secondaria L indice ha come chiave di ricerca un insieme di attributi che NON comprende la chiave della relazione Indice primario e secondario INDICE PRIMARIO Specificato su campo chiave di ordinamento di un file ORDINATO di records. INDICE SECONDARIO Specificato su qualsiasi campo di NON ORDINAMENTO di un file 14
Indice su chiave primaria A2 la chiave dell INDICE comprende la chiave della relazione. Chiave primaria puntatore Record ancora (ID).. B1 B2 B3.... N.B Ċaso banale per l esempio Indice primario E un file ordinato con record di lunghezza fissa costituiti da due campi: CAMPO 1: è dello stesso tipo della chiave di ordinamento del file CAMPO 2: è un puntatore al blocco del file ordinato secondo la chiave di ordinamento 15
Indice Primario A2 ape dado mela ape aria casa dado euro mano mela mina sole Indice primario A2 ape dado mela ape aria casa dado euro mano N.B. mela mina INDICE SPARSO: L indice contiene un record per ogni pagina sole del file. 16
Indice primario A2 ape dado mela ape aria casa dado euro mano N.B. mela mina N.B. File indice e file dati sono entrambi sole ordinati. Indice secondario E un file ordinato con record di lunghezza fissa costituito da due campi: CAMPO 1: è dello stesso tipo di un campo (non ordinato) del file detto campo di indicizzazione CAMPO 2: è un puntatore al blocco del file, oppure al record. 17
indice secondario ape 7 sole 6 ordinato aria 5 ape mela 3 aria 2 euro mano 4 mela mina sole mare 11 mina 10 euro 1 Indice secondario File indice e ordinato secondo il campo di indicizzazione. Il file dati NON è ordinato. Il campo di indicizzazione solitamente non ha duplicati, ma non è indispensabile (cambia il modo di costruire l indice) N.B. Indice denso: un puntatore per ogni record 18
Indici cluster Se i records sono ordinati fisicamente rispetto ad un campo FATTORE DI RAGGRUPPAMENTO che : 1) NON è Chiave 2) Ha valori duplicati L indice CLUSTER e un insieme di due campi: 1) Fattore di Raggruppamento 2) Puntatore al PRIMO blocco che contiene il Fattore di raggruppamento Indice Cluster A2 ape casa dado mela ape ape casa casa casa casa dado dado mela 19
Indici cluster E un indice NON DENSO Puo usare blocchi separati per ciascun fattore di raggruppamento Indici primari -Problemi di aggiornamento (file sequenziale ordinato). -Possibilità di ricerca Binaria con costo : log 2 (numero dei blocchi dell indice) -Velocizzazione della ricerca rispetto al file originale- 20
Indici secondari -Problemi di aggiornamento (file sequenziale ordinato) -Possibilità di ricerca Binaria sull indice con costo : log 2 (numero dei blocchi dell indice) -Velocizzazione NOTEVOLE della ricerca rispetto al file originale su cui è possibile solo una ricerca sequenziale con costo: (numero dei blocchi Indici multilivello Cercano di ridurre, ad ogni step, la parte di ricerca sull indice di un fattore pari al fattore di blocco dell indice 21
ape mela Secondo livello ape dado Primo livello mela ape aria casa... dado euro mano... mela mina sole... File di dati Esempio di costruzione Partenza: File =1000 record e fattore di blocco= 50 Fan-out albero= 50. Primo livello : in ogni blocco 50 chiavi, numero blocchi = 20 Secondo livello: Indicizza ciascuno dei 20 blocchi, servono 20 chiavi, numero blocchi =1 22
Un indice multilivello Un indice multilivello con: R voci del primo livello e fan-out F ha un numero di livelli T =log F (R) Un indice multilivello Puo essere usato su qualsiasi indice (primario, secondario, cluster) purchè l indice di primo livello abbia : -Valori distinti per ogni chiave di entrata -Voci di lunghezza fissa 23
File sequenziale a indici File ordinato con un indice primario multilivello sul campo di ordinamento (primi sistemi IBM). - Gli indici fin qui -Inserimenti costosi -spazio di overflow spesso significativo -Gli indici multilivello possono diventare sbilanciati Gli indici utilizzati dal DBMS sono piu sofisticati : Indici dinamici multilivello che vengono mantenuti bilanciati Albero binario di ricerca Albero n-ario di ricerca Albero n-ario di ricerca bilanciato B+ tree 24