Componenti di un DBMS Come fa un DBMS a garantire le proprietà ACIDe di una transazione? Vediamo i componenti principali dal più interno a quello di più alto livello: Controllore di Concorrenza Gestore del Buffer Controllore di Affidabilità Gestore degli Accessi (RSS) Ottimizzatore (incluso Compilatore) Componenti di un DBMS Ottimizzatore Gestore degli Accessi Controllo Affidabilità Gestore del Buffer Controllo Concorrenza 1
Componenti di un DBMS Controllore di Concorrenza Problemi da risolvere per transazioni concorrenti: Caso A: Transazione1 legge un campo e lo ricalcola senza aggiornarlo» Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 aggiorna il campo e commit Caso B: Transazione1 legge, ricalcola e aggiorna un campo» Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 rollback Ecc Componenti di un DBMS Controllore di Concorrenza Caso A: Perdita di aggiornamento Transazione1 Read1 (x) x = x+1 Write1 (x) Commit1 Transazione2 Read2 (x) x=x+1 Write2 (x) Commit2 2
Componenti di un DBMS Controllore di Concorrenza Caso A: Perdita di aggiornamento Transazione1 legge un campo e lo ricalcola senza aggiornarlo Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 aggiorna il campo e commit Transazione1 Transazione2 Risultato Read1 (x) 10 x = x+1 11 Read2 (x) 10 x=x+1 11 Write2 (x) 11 Commit2 11 Write1 (x) 11 Commit1 11 L aggiornamento della transazione2 è andato perduto! Problema Componenti di un DBMS Controllore di Concorrenza Caso B: Lettura sporca: Transazione1 Read1 (x) x = x+1 Write1 (x) Rollback1 Transazione2 Read2 (x) x=x+1 Write2 (x) Commit2 3
Componenti di un DBMS Controllore di Concorrenza Caso B: Lettura sporca: Transazione1 legge, ricalcola e aggiorna un campo Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 rollback Transazione1 Transazione2 Risultato Read1 (x) 10 x = x+1 11 Write1 (x) 11 Read2 (x) 11 x=x+1 12 Write2 (x) 12 Commit2 12 Rollback1 12 Problema Il valore di partenza per Transazione2 era un valore sbagliato! Componenti di un DBMS Controllore di Concorrenza Problemi da risolvere per transazioni concorrenti: Caso A: Perdita di aggiornamento Transazione1 legge un campo e lo ricalcola senza aggiornarlo» Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 aggiorna il campo e commit L aggiornamento della transazione2 è andato perduto! Caso B: Letture sporche Transazione1 legge, ricalcola e aggiorna un campo» Transazione2 legge, ricalcola e aggiorna il campo e commit Transazione1 rollback Il valore di partenza per Transazione2 era un valore sbagliato! Soluzione può sembrare causare rollback anche di T2 no: si vuole evitare l effetto domino. Ecc 4
Componenti di un DBMS Controllore di Concorrenza Soluzione Il controllore di concorrenza sequenzializza le operazioni di lettura e scrittura bloccando l accesso in scrittura per le transazioni seguenti Problema: due transazioni possono bloccarsi a vicenda su campi diversi: DEADLOCK! Soluzione, vari metodi: Timeout: blocco possibile solo temporaneamente poi scade Anzianità: non consentire attesa per transazione più giovane Rilevazione di blocco: causare rollback Componenti di un DBMS Gestore del Buffer Manager Il Buffer è l area di memoria centrale allocata al DBMS Problema La memoria Centrale di solito non contiene tutto il database perciò l utilizzo dell area deve essere condiviso alternando le pagine dalla Memoria Centrale alla Memoria di Massa Soluzione Politiche di swapping analoghe a Sistemi Operativi. Esempio: Togli dal buffer le pagine meno utilizzate ( 20% dei dati è acceduto dall 80% delle applicazioni) Tieni pagine con accessi pù recenti Ecc 5
Componenti di un DBMS Controllore di Affidabilità Problema Se avviene un guasto i dati in Memoria Centrale vanno perduti! Soluzione Archiviare su memoria stabile (es.:raid) in un file (LOG) le sequenze di modifica, in modo che possano essere rieseguite Archiviare su backup, periodicamente, tutto il database (DUMP) Se avviene Guasto di sistema (SW) ripartire da LOG (warm boot) Guasto di Memoria di Massa (HW) ripartire da DUMP (cold boot) e poi da LOG Componenti di un DBMS Gestore degli Accessi (Relational Storage System) Problema Accedere alla memoria fisica in modo efficiente Soluzione Metodi a seconda della struttura dei record nelle pagine Sequenziale ricerca sequenziale o dicotomica (se ordinata) Hashing ricerca in base ad un calcolo (Hash) Albero ricerca in base ad Indicizzazione della chiave: viene costruita una struttura di puntatori aggiuntiva alla struttura dati per consentire una ricerca efficiente dei record 6
Componenti di un DBMS Ottimizzatore Problema Scegliere i metodi di esecuzione delle operazioni e l ordine migliore in cui eseguirli per minimizzare i tempi Soluzione 1. Analisi delle dimensioni tabelle e attributi (Dizionario Dati) 2. Analisi dei costi dei metodi in base a struttura fisica 3. Costruzione di albero delle alternative con costi 4. Ricerca di una alternativa buona (non ottima) 5. Produzione del codice sorgente e compilazione DBMS: Ottimizzazione Esempio: Quanti impiegati lavorano a Milano? Diverse soluzioni Impiegati Dipartimento 7
Accesso al DBMS Ottimizzatore Gestore degli Accessi Controllo Affidabilità Gestore del Buffer Controllo Concorrenza Program mazione Accesso al DBMS L accesso ai dati può avvenire: 1. con linguaggi testuali interattivi (es. SQL) utilizzati come comandi da una interfaccia testuale 2. con interfacce amichevoli interattive non testuali (es. ACCESS) 3. con linguaggi della quarta generazione (4GL) specifici del DBMS, che permettono di sviluppare complete applicazioni 4. con comandi (del linguaggio interattivo) immersi in un linguaggio ospite di alto livello (Pascal, C, Cobol, Java, etc.) 8
Linguaggi per DBMS Introduzione ai Linguaggi per DBMS: Schemi e Istanze In ogni base di dati esistono: lo Schema: che ne descrive la struttura le intestazioni delle tabelle, i legami l Istanza, costituita dai valori il corpo di ciascuna tabella Linguaggi per DBMS Nei DBMS esistono linguaggi separati per la definizione e per la manipolazione delle strutture: Data Definition Language (DDL) per la definizione di Schemi (la struttura): le intestazioni delle tabelle, i legami Data Manipulation Language (DML) : per l interrogazione e l aggiornamento di Istanze (valori): il corpo di ciascuna tabella 9
SQL ( 74) SQL è un linguaggio sia DDL che DML Data Definition Language (DDL) : per la definizione di schemi Data Manipulation Language (DML) : per l interrogazione e l aggiornamento di istanze SQL Primitive DDL: Create, Alter, Drop Domain (tipo di dato) utente Table con Attributi Vincoli Index (campi indicizzati) Assertion (vincoli generici) View (viste tabelle temporanee) 10
SQL Primitive DML principali di interrogazione: Select EspressioneAttributi From tabelle Where condizioni Group by attributi Order by attributi Union, Intersect,Except SQL Primitive DML principali di manipolazione: Insert (valori nei campi o righe nella tabella) Delete (righe nella tabella) Update (valori nei campi) 11
SQL Primitive DML principali di manipolazione: Sintassi: Inserimento Di valori nei campi: insert into tabella (attributi) values (valori) Di righe nella tabella insert into tabella SelectSQL Cancellazione Di righe dalla tabella: delete from tabella where (condizione) Modifica Di valori nei campi : update tabella set attributo = <espressione SelectSQL null default > [where condizione] Accesso al DBMS 12
Interfaccia di Accesso ai Dati Applicazione Fonte dati propria dell applicazione DB appl Interfaccia di Accesso ai Dati Applicazione Fonti dati diverse su vari elaboratori: molte interfacce! DB appl File System Elaboratore B Elaboratore A Leggenda: Elaboratore emails DB Applicazione Data Source DB DB Elaboratore C Elaboratore C 13
Interfaccia di Accesso ai Dati E necessaria una libreria (Driver) per ogni specifica tripla: DBMS Sistema Operativo Protocollo di Rete ODBC: Open Database Connectivity ( 91) Supporta un SQL ristretto definito da c.a 50 grandi utenti (aziende, enti, ) Interfaccia di Accesso ai Dati Applicazione Fonti dati diverse su vari elaboratori: una sola interfaccia ODBC DB appl Elaboratore A Leggenda: Elaboratore Driver Manager Driver 4 Driver 5 Driver 2 Driver 1 Driver 3 File System emails DB Elaboratore B Applicazione Data Source DB DB Elaboratore C Elaboratore C 14
Interfaccia di Accesso ai Dati E necessaria una libreria (Driver) per ogni specifica tripla: DBMS Sistema Operativo Protocollo di Rete ODBC: Open Database Connectivity ( 91) Supporta un SQL ristretto definito da c.a 50 grandi utenti (aziende, enti, ) Problema: Interfaccia solo verso Database (relazionali): di DBMS diversi su Sistemi Operativi diversi con Protocolli di Rete diversi Interfaccia di Accesso ai Dati Evoluzione verso fonti eterogenee (non solo DB) fonti non connesse (tecnologia Web Services) Microsoft: ODBC DAO RDO OLE DB ADO ADO.NET Java JDBC XML 15
Progettazione di Basi di Dati La progettazione di una base di Dati si divide in tre fasi: 1. Progettazione Concettuale 2. Progettazione Logica 3. Progettazione Fisica Progettazione di Basi di Dati Schemi nell architettura del DBMS Schema Fisico 16
Progettazione di Basi di Dati Progettazione Concettuale Utilizza un modello concettuale per rappresentare i dati in modo indipendente da ogni sistema, cercando di descrivere i concetti del mondo reale il più noto è il modello Entity-Relationship Produce lo Schema Concettuale Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship Entity: concetto che descrive una classe di oggetti che ha proprietà comuni ed esistenza autonoma Es.: Impiegato, Dipartimento, Progetto Relationship: concetto che associa due o più Entity Es.: Direzione (tra Impiegato e Dipartimento), Appartenenza (tra Impiegato e Dipartimento), Partecipazione (tra Impiegato e Progetto) Attribute: concetto con struttura semplice rappresentabile come attributo di un altro concetto Es.: Cognome di un Impiegato, Budget di un Progetto 17
Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship Direzione Cognome Stpendio Impiegato Appartenenza Dipartimento Città Data appartenenza Partecipazione Budget Data consegna Progetto Data inizio Entità, Relazioni e Attributi Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship 1 1 Direzione Cognome Stpendio Impiegato Appartenenza Dipartimento Città Data appartenenza Budget Data consegna Partecipazione Progetto Data inizio Cardinalità delle relazioni: Quante volte una occorrenza di una relazione può essere legata a occorrenze di un altra relazione Massima Relazione 1 a 1 18
Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship 1 1 Direzione Cognome Stpendio Impiegato 1 N Appartenenza Dipartimento Città Data appartenenza Budget Data consegna Partecipazione Progetto Data inizio Cardinalità delle relazioni: Quante volte una occorrenza di una relazione può essere legata a occorrenze di un altra relazione Massima Relazione 1 a N Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship 1 1 Direzione Cognome Stpendio Budget Data consegna Impiegato N Partecipazione N Progetto 1 N Appartenenza Dipartimento Data inizio Data appartenenza Città Cardinalità delle relazioni: Quante volte una occorrenza di una relazione può essere legata a occorrenze di un altra relazione Massima Relazione N a N 19
Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship ( 0, 1 ) ( 1, 1 ) Direzione Cognome Stpendio Budget Data consegna Impiegato Partecipazione Progetto ( 0, N) ( 1, N) ( 1, 1 ) ( 1, N) Appartenenza Dipartimento Data inizio Data appartenenza Città Cardinalità delle relazioni: Quante volte una occorrenza di una relazione può essere legata a occorrenze di un altra relazione Minima Progettazione di Basi di Dati Progettazione Concettuale Modello Entity-Relationship ( 0, 1 ) ( 1, 1 ) Direzione Cognome Stpendio Budget Data consegna Impiegato Partecipazione Progetto ( 0, N) ( 1, N) ( 1, 1 ) ( 1, N) Appartenenza Dipartimento Data inizio Data appartenenza Identificatori delle entita: Concetto che permette di identificare in maniera univoca una entità Città 20
Progettazione di Basi di Dati Progettazione Logica Utilizza Schema Concettuale e lo traduce nel Modello di Dati scelto esempi: relazionale, reticolare, gerarchico, a oggetti indipendente dalla struttura fisica dei dati produce uno Schema Logico Progettazione di Basi di Dati Progettazione Logica La Progettazione Logica avviene in due fasi 1. Ristrutturazione dello Schema Concettuale di Entity- Relationship Analisi ed eliminazione delle ridondanze Normalizzazione Scelta Identificatori Principali Chiavi Primarie 2. Traduzione verso il modello Logico 21
Progettazione di Basi di Dati Normalizzazione Impiegati Informazione Ridondante Progettazione di Basi di Dati Normalizzazione Impiegati Informazione Ridondante 22
Progettazione di Basi di Dati Normalizzazione Impiegati Problemi: 1. aggiornamento 2. cancellazione 3. inserimento Informazione Ridondante Vantaggi: meno accessi Progettazione di Basi di Dati Normalizzazione Impiegati Dipartimento DB Normalizzato 23
Progettazione di Basi di Dati Normalizzazione L eliminazione delle ridondanze (dati derivabili) è una scelta opzionale di progettazione Vantaggi Maggiore efficienza nel mantenere i dati aggiornati Consistenza Risparmio memoria Svantaggio Aumento degli accessi necessari per derivare il dato Si parla di 1ª (Boyce-Codd), 2ª e 3ª Forma Normale Progettazione di Basi di Dati Progettazione Fisica Utilizza Schema Logico per determinare parametri prestazionali del DBMS Dimensioni iniziali ed espansione dei file Contiguità di allocazione Dimensioni aree di swapping e caratteristiche della tabelle Individuazione Indici da definire per ciascuna tabella Tipo e dimensione degli attributi Produce uno Schema Fisico 24