L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze Matematiche Fisiche e Naturali, Alma Mater Studiorum Universita di Bologna, A. A.: 2010-2011 Database Systems The complete book (2 edition) - Hector Garcia Molina, Jeffrey D. Ullman, Jennifer Widom Prentice Hall
Architettura di un dbms! Un DBMS e un software per la gestione di basi di dati, e piu in generale e uno strumento potente per creare e gestire in maniera efficiente una grande quantita di dati e per permettere la loro persistenza nel tempo.! Come funziona e si usa un DBMS? Nome Cognome Sesso Stipendio Maria Rossi F 1700 Piero Neri M 1200 Luca Rossi M 1550 Elena Bianchi F 1500 Select Cognome, Stipendio From Impiegati Where Stipendio>1300? Cognome Stipendio Rossi 1700 Rossi 1550 2 Bianchi 1500
Esercitazione di gruppo! Vogliamo implementare un DBMS relazionale!! Il sistema deve essere in grado di:! Memorizzare relazioni come R(A,B,C), S(A,B) e T(A,B).! Eseguire interrogazioni come: Select A, B From R Where B = 2000 Select R.A, T.B From R, S, T Where R.B = S.A And S.B = T.A 3
Verifica del sistema Come si comporta il sistema nei confronti di:! Ricerca di tuple?! Ordine delle operazioni?! Aggiornamenti di tuple?! Accesso ripetuto alle stesse locazioni su disco?! Modifiche concorrenti?! Controllo degli accessi?! Interfacce di programmazione? 4
Architettura di un DBMS relazionale (1) DDL Compiler Query compiler Transaction Manager Execution Engine Logging/Recovery Concurrency Control Index/File/Record Manager Buffer Manager Buffer Lock Table Storage Manager Dati e comandi Dati 5
Architettura di un DBMS relazionale (2)! L architettura presentata nel lucido precedente è composta da tre sottosistemi principali:! Per la gestione dei dati su disco.! Per l esecuzione delle interrogazioni.! Per la gestione delle transazioni. 6
Sottosistema per le interrogazioni Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager Buffer Manager Buffer Storage Manager 7
Query compiler (1)! Il Query Compiler fa il parsing e ottimizza le interrogazioni.! L interrogazione viene prima riconosciuta e controllata sintatticamente.! Il risultato del parsing viene tradotto in una espressione in una versione estesa dell algebra relazionale.! L espressione viene trasformata in un espressione equivalente ma considerata più efficiente.! Il risultato del query compiler è un query plan, cioè un elenco cronologico delle operazioni da compiere per eseguire l interrogazione. 8
Query compiler (2) Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager π A,B (σ C=D (σ C=c (R1) R2)) Buffer Manager Buffer Storage Manager 9
Execution Engine (1)! L Execution Engine crea una sequenza di richieste di dati (tipicamente record) e implementa le istruzioni ottenute dal query compiler. 10
Execution Engine (2) Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager π A,B (σ C=D (σ C=c (R1) R2)) Buffer Manager Storage Manager Buffer σ C=c (R1), R2, σ, π 11
Resource Manager (1)! Il Resource Manager sa dove sono i dati (file e record) e come recuperarli velocemente (indici).! Le richieste di dati vengono tradotte in richieste di blocchi su disco. 12
Resource Manager (2) Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager π A,B (σ C=D (σ C=c (R1) R2)) Buffer Manager Storage Manager Buffer σ C=c (R1), R2, σ, π R1 13
Gestione dati su disco (1)! Il Buffer Manager ha il compito di trasportare in memoria centrale i blocchi richiesti.! Per farlo, si affida allo Storage Manager, che gestisce i dispositivi di memoria secondaria.! I Dischi sono i principali dispositivi utilizzati per memorizzare database.! I dati gestiti dal buffer manager sono di vario tipo:! Dati: il contenuto del database.! Metadati: lo schema del database.! Statistiche: informazioni sul contenuto del database.! Indici: strutture di supporto per l accesso rapido ai dati. 14
Gestione dati su disco (2) Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager π A,B (σ C=D (σ C=c (R1) R2)) Buffer Manager Storage Manager Buffer σ (R1) σ C=c (R1), R2, σ, π R1 15
Gestione dati su disco (3) Select A, B Query compiler From R1, R2 Where C = D Execution Engine And C = c Index/File/Record Manager π A,B (σ C=D (σ C=c (R1) R2)) Buffer Manager Storage Manager R2 Buffer σ C=c (R1), R2, σ, π R2 16
Gestione dati su disco (4) Query compiler Execution Engine Select A, B From R1, R2 Where C = D And C = c Index/File/Record Manager Buffer Manager Storage Manager σ, π Buffer π A,B (σ C=D (σ C=c (R1) R2)) σ C=c (R1), R2, σ, π 17
Gestione delle transazioni! L accesso a un database spesso non si riduce a una singola istruzione SQL, ma prevede una serie di operazioni.! Ad esempio, per effettuare un bonifico occorre leggere il saldo di un conto, sottrarvi la somma dovuta, leggere il saldo di un secondo conto e aggiungervi la stessa somma: Start transaction; update ContoCorrente Set Saldo = Saldo+10 Where NumConto=12202; update ContoCorrente Set Saldo = Saldo-10 Where NumConto=42177; commit work; 18
Gestione delle transazioni! Una sequenza di operazioni detta transazione ha le seguenti proprietà:! Atomicità: viene eseguita del tutto o per niente.! Consistenza: i vincoli del database devono essere rispettati.! Isolamento: si comporta bene nei confronti di altre transazioni eseguite in concorrenza.! Durabilità: l effetto sul database deve essere persistente. 19
Sottosistema per le transazioni Transaction Manager Logging/Recovery Concurrency Control Lock Table 20
Log Manager! Per assicurare la persistenza dei dati del database anche in caso di crash, ogni modifica viene registrata separatamente sul disco (durabilità).! Il log manager può così ripristinare il database nel caso esso si trovi in uno stato inconsistente (consistenza) o nel caso la transazione non vada a buon fine (atomicità).! Anche il log manager utilizza il buffer manager per scrivere i propri dati su disco.! Tuttavia, richiede garanzie riguardo al fatto che questi vengano effettivamente copiati su supporto persistente.! In aggiunta, per evitare problemi dovuti alla rottura dei dischi si utilizzano copie di backup del database. 21
Concurrency Control Manager! Le transazioni devono essere eseguite in isolamento ma concorrentemente.! Il concurrency control manager determina un ordine di esecuzione delle operazioni tale che esse non interferiscano le une con le altre.! Tipicamente questo comportamento viene ottenuto tramite la gestione di una lock table (ma esistono molti modi diversi per farlo).! Questo modulo ha anche il compito di risolvere eventuali deadlock, facendo abortire una o più transazioni. 22
Accesso ai dati! Ora sappiamo come funziona un DBMS!! Come fare eseguire al DBMS un interrogazione?! Come gestire la privatezza dei dati? Nome Cognome Sesso Stipendio Maria Rossi F 1700 Piero Neri M 1200 Luca Rossi M 1550 Elena Bianchi F 1500 C.Credito 1234 7545 7345 3466 Select Cognome, Stipendio From Impiegati Where Stipendio>1300 DDL Compiler Query compiler Execution Engine Index/File/Record Manager Buffer Manager Storage Manager Transaction Manager Logging/Recovery Buffer Concurrency Control Lock Table Cognome Stipendio Rossi 1700 Rossi 1550 Bianchi 150023