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