Sei sulla pagina 1di 36

` degli Studi di Napoli Universita Parthenope

Facolt` a di Scienze e Tecnologie Corso di Laurea Triennale in Informatica Insegnamento di Basi di Dati

Antonio Maratea

Appunti delle lezioni


v. 1.0

ANNO ACCADEMICO 2008-2009

Prefazione
Questa vuole essere una succinta raccolta di appunti di ausilio allo studio dellesame di Basi di dati. Il suo utilizzo principale ` e come puntatore agli argomenti di uno dei libri di testo consigliati (che ricordo sono lAlbano [1] e il Navathe [2] citati in bibliograa), dei quali non pu` o in nessun caso essere considerata un surrogato. Al momento mi ` e stato possibile sviluppare solo alcuni argomenti. Compatibilmente con la mia (scarsa) disponibilit` a di tempo, essi aumenteranno di numero (nellambito del programma svolto) e saranno aggiornati periodicamente. Ogni nuova versione sostituir` a integralmente la precedente. Faccio presente che in particolare per quanto riguarda le convenzioni notazionali dei modelli EER o UML, tanto quanto per lSQL di base, esiste molto materiale facilmente reperibile sul web che non necessita di una ennesima riproposizione. Daltra parte alcuni argomenti come lottimizzazione di query e il calcolo approssimato del tempo di esecuzione di una interrogazione non sono trattati ad un livello di approfondimento adeguato in nessuno dei testi consigliati. Pur non mancando un riferimento bibliograco anche per questi ultimi [3], limitatamente ad essi, gli appunti possono essere presi a riferimento. Il riferimento per il materiale, le comunicazioni e tutte le altre informazioni concernenti il corso restano le relative pagine sulla piattaforma di e-learning dellUniversit` a Parthenope. Buono studio Antonio Maratea

ii

Ringraziamenti
Ringrazio per la collaborazione: Marco Del Gaudio, Flora Giannone, Valeria Guarino e Daniela Marino.

Indice
1 Introduzione ai Sistemi di Basi di Dati 1 Dati e informazioni . . . . . . . . . . . . . . . 2 Sistemi informativi e informatici . . . . . . . . 3 Sistemi informatici direzionali e operativi . . . 4 Basi di dati . . . . . . . . . . . . . . . . . . . 4.1 Collezioni di dati . . . . . . . . . . . . 4.2 Propriet` a di una Base di Dati . . . . . 5 Sistemi di gestione per Basi di Dati . . . . . . 6 Metadati e dati . . . . . . . . . . . . . . . . . 7 Indipendenza sica e logica di una base di dati 8 IRS e File System vs Database . . . . . . . . . 9 Buoni motivi per non usare un DBMS . . . . 2 Modellazione concettuale 1 Diagrammi Entit` a-Associazione 2 Vincoli di integrit` a . . . . . . . 2.1 Chiavi . . . . . . . . . . 2.2 Valori nulli . . . . . . . 1 1 2 2 3 3 4 6 7 7 8 9 10 10 13 13 13 15 15 16 18 19 20 22

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3 Ottimizzazione di interrogazioni 1 Introduzione . . . . . . . . . . . . . . . . . . 2 Riscrittura algebrica . . . . . . . . . . . . . 3 Alberi di interrogazione . . . . . . . . . . . . 4 Cenni allorganizzazione sica dei le . . . . 5 Implementazione di selezioni e proiezioni . . 6 Algoritmi per limplementazione di giunzioni iii

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

INDICE 6.1 Nested loop join . . . . . . . . . . . . . . 6.2 Hash join . . . . . . . . . . . . . . . . . Calcolo approssimato del tempo di esecuzione di Note conclusive al capitolo . . . . . . . . . . . . . . . . . . . . . . . . una query . . . . . . . . . . . . . .

iv 22 23 26 30

7 8

Capitolo 1 Introduzione ai Sistemi di Basi di Dati


1 Dati e informazioni

Ogni attivit` a umana ` e basata in maniera pi` u o meno esplicita sul trattamento dellinformazione, la cui denizione sconna in ambito losoco ed esula dagli scopi di questo corso. Ci basti dire che tra informazione e dato intercorre la stessa relazione che lega il signicato al signicante: come una mela pu` o essere ragurata con una foto, un dipinto, una parola di una qualsiasi lingua o una stringa di bit senza che nessuna di queste rappresentazioni sia la mela stessa, cos` la stessa informazione (ad esempio il fatto che Mario Rossi sia uno studente universitario, oppure che oggi piova) pu` o avere innumerevoli rappresentazioni senza che nessuna di esse riesca ad identicarsi con essa. Linformazione ` e codicata e resa fruibile dai dati, cos` come un romanziere usa le parole della sua lingua per descrivere fatti, personaggi e idee del mondo reale e il computer usa stringhe di bit per rappresentare accadimenti o oggetti reali o ttizi che interessano i suoi programmatori. Nessuno dei due sta rappresentando la realt` a, ma entrambi usano un codice comprensibile ai loro simili per tradurre la realt` a in una forma comunicabile e manipolabile. Lalfabeto di simboli e le regole utilizzati per la traduzione possono essere i pi` u vari, purch e coerenti. In somma sintesi, il dato ` e per cos` dire il legittimo rappresentantedellinformazione. 1

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

Sistemi informativi e informatici

Nello svolgimento di ogni attivit` a umana, sia a livello individuale sia in organizzazioni di ogni dimensione, risultano essenziali la disponibilit` a delle informazioni e la capacit` a di gestirle in maniera eciente; ogni organizzazione ` e quindi dotata di un SISTEMA INFORMATIVO demandato ai seguenti compiti: raccogliere dati conservare i dati raccolti e preservarne lintegrit` a elaborare i dati al ne di estrapolarne informazioni Per fare questo il sistema informativo si pu` o avvalere di tecnologie informatiche, anche se le organizzazioni umane hanno ideato e utilizzato sistemi per processare linformazione da ben prima dellinvenzione del calcolatori elettronici. In caso sia presente un sottosistema che utilizzi tecnologie informatiche, la parte del sistema informativo corrispondente prende il nome di SISTEMA INFORMATICO. Nei sistemi informatici le informazioni vengono rappresentate tramite i dati, che sono successivamente decodicati ed interpretati per divenire informazioni. E dunque necessario distinguere ci` o che ` e il sistema informativo di supporto ad una qualsiasi organizzazione umana dal suo eventuale (sotto)sistema informatico. Il sistema informatico ` e la componente del sistema informativo che si basa sulle tecnologie informatiche.

Sistemi informatici direzionali e operativi

I sistemi informatici il cui scopo precipuo ` e fornire supporto alle decisioni (Decision Support System) sono detti SISTEMI INFORMATICI DIREZIONALI o OLAP (On Line Analytical Processing). Essi conservano grandi masse di dati, anche storici e prevalentemente in forma aggregata, onde permettere una facile lettura delle tendenze e delle dipendenze in essi presenti. Il trattamento delle informazioni in tali sistemi pu` o avvenire anche oine e sono ottimizzati per pochi utenti che di regola non alterano i dati. I sistemi informatici il cui scopo precipuo ` e fornire supporto operativo ad una

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

organizzazione sono detti SISTEMI INFORMATICI OPERATIVI o OLTP (On Line Transaction Processing). Essi consevano dati aggiornati e in forma analitica al massimo livello di dettaglio possibile, onde consentire laccesso contemporaneo e la modica dei dati ad un numero elevato di utenti senza generare inconsistenze.

Basi di dati

Dare una denizione in forma chiusa di cosa si intende con lespressione Base di Dati(o database in inglese) ` e impresa assai ardua, data lintrinseca molteplicit` a di signicati e di contesti in cui questa pu` o presentarsi. Piuttosto che darne una denizione giocoforza imprecisa, limitativa ed opinabile, quello che faremo ` e elencare le propriet` a che ` e ragionevole aspettarsi da una base di dati e dal suo sistema di gestione, delegando al loro rispetto il compito di riconoscerne una istanza. Non mancheremo di esplicitare tramite esempi la ragionevolezza a fondamento di ogni assunzione.

4.1

Collezioni di dati

Non ogni collezione di dati ` e un database, n e lo ` e ogni collezione di dati memorizzata in un elaboratore elettronico. Dati che non hanno relazione tra loro o che sono memorizzati in forma sparsa, senza una interfaccia comune e una struttura ben denita non possono essere considerati una base di dati. Questa considerazione ci porta alla prima e forse pi` u importante delle propriet` a di una base di dati, una propriet` a di scopo: una base di dati ` e una collezione di dati utilizzati per rappresentare le informazioni di interesse di un sistema informativo. La nalit` a ultima di una base di dati ` e rispondere alle esigenze informative di un particolare sistema e anche se i dati sono organizzati coerentemente ma non hanno alcuna relazione tra loro non ` e possibile considerarli un database. Un assortimento casuale di dati non pu` o essere considerato una base di dati.

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

4.2

Propriet` a di una Base di Dati

Per meglio comprendere il signicato dei requisiti che andremo ad elencare conviene pensare alle esigenze informative delluniversit` a di Chissadove. Una propriet` a di una base di dati riguarda la sua dimensione: le basi di dati sono grandi Se luniversit` a di Chissadove ha poche decine di iscritti e ancor meno docenti e impiegati, molto probabilmente il suo intero sistema informativo pu` o essere gestito con un pacco di cartelline, qualche penna ed un impiegato part-time. Perch e abbia senso raccoglierne i dati in un database, questi devono essere tanti da impedire una eciente gestione con altri mezzi. Una caratterizzazione della grandezza dei dati operata comunemente ` e tanti da non poter essere contenuti nella memoria principale di un elaboratore. Di fronte alla crescita delle capacit` a delle memorie RAM linterpretazione letterale di questa frase ` e chiaramente fuorviante. Il suo vero signicato ` e che in un database i dati devono necessariamente essere memorizzati su supporti di massa, non solo per lovvia volatilit` a delle memorie centrali, ma anche perch e (come vedremo pi` u avanti) le tecniche di gestione nei due contesti sono molto diverse. Unaltra propriet` a auspicabile riguarda il suo ciclo di vita: le basi di dati sono persistenti Nelluniversit` a di Chissadove, lucio di segreteria usa una macchina per scrivere. Ogni richiesta di certicato da parte di uno studente comporta la dattilograa del relativo modulo con limmissione ex novo dei dati dello studente che ha fatto la richiesta. Ripetute richieste dello stesso certicato comportano ripetute compilazioni dello stesso modulo, ovvero ripetute immissioni degli stessi dati. Se luniversit` a adottasse un PC con un software che non permette il salvataggio su memoria di massa, ma solo lutilizzo online, accadrebbe la stessa cosa: i dati sarebbero raccolti e memorizzati al pi` u in forma temporanea, no allo spegnimento della macchina, dopodich e andrebbero reinseriti. Questa politica di gestione altamente ineciente dovrebbe rendere ovvio che ` e vantaggioso memorizzare i dati in maniera permanente, cio` e tale che solo una esplicita (e lecita) operazione di modica pu` o alterarne

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI il contenuto. Una ulteriore propriet` a di una base di dati ` e: le basi di dati sono condivise (ed integrate)

Nelluniversit` a di Chissadove, non c` e una bacheca ed ` e capitato che pi` u studenti hanno richiesto contemporaneamente in consultazione gli orari delle lezioni o gli stessi bandi di concorso. I dirigenti della sfortunata universit` a hanno deciso di fare 20 copie fotostatiche degli orari e dei bandi sperando che non capitino mai pi` u di 20 studenti contemporaneamente a richiedere la consultazione di uno stesso documento. Una bacheca consentirebbe laccesso condiviso di pi` u persone alle stesse informazioni, cos` come una pagina web. Una Base di Dati deve prevedere che pi` u persone possano richiedere laccesso simultaneo agli stessi dati e che questi non siano inutilmente replicati con enorme spreco di risorse (memoria e tempo di risposta) e rischi di inconsistenza tra le copie. La gestione integrata e la condivisione dei dati permettono di evitare ripetizioni (ridondanza dovuta a copie multiple dello stesso dato), che comportano spreco memoria, aumento del rischio di inconsistenza delle copie e necessit` a di propagare le modiche eettuate su un dato a tutte le sue copie (con ulteriore spreco di risorse). Unaltra propriet` a di una base di dati ` e: le basi di dati sono adabili Nelluniversit` a di Chissadove ` e stato nalmente adottato un pc, sul quale sono stati caricati i dati relativi alla carriera di tutti gli studenti iscritti. Purtroppo, in un giorno di tempesta, un fulmine colpisce limpianto elettrico e brucia tutte le apparecchiature collegate alla corrente. Nessuno si era preoccupato di fare un backup e tutti i dati sono irrimediabilmente perduti. Una Base di Dati deve proteggere adeguatamente i dati da malfunzionamenti hardware e software, non solo, deve anche proteggere adeguatamente i dati da accessi indesiderati.

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

Sistemi di gestione per Basi di Dati

Il Data Base Management System (DBMS) ` e un sistema software con scopi generali che facilita il processo di denire, costruire, manipolare e condividere le Basi di Dati per varie applicazioni. Esso ` e parte integrante della Base di Dati. BASE DI DATI = DATI+DBMS. Un DBMS garantisce normalmente ad una base di dati il rispetto di tutte le propriet` a viste nora pi` u altre, ad esempio: INTEGRITA (in ciascun istante tutti i vincoli deniti sui dati devono essere rispettati); PRIVATEZZA (ciascun utente pu` o essere abilitato a svolgere solo determinate azioni sui dati, attraverso rigidi protocolli di autorizzazione); EFFICIENZA (la capacit` a di svolgere le operazioni in un tempo accettabile); EFFICACIA (deve essere adeguato a soddisfare le esigenze informative degli utenti) e altre. I DBMS sono di norma sistemi TRANSAZIONALI, ovvero il cui funzionamento ` e basato su TRANSAZIONI. Avremo modo di trattare ampiamente le transazioni verso la ne del corso, per il momento ci basta dire che sono operazioni complesse eseguite tutte dun ato, come se fossero un blocco unico e i cui eetti sono permanenti (in termini pi` u formali, si dicono caratterizzate da atomicit` a, serializzabilit` a e persistenza). Il DBMS ore inoltre opportuni linguaggi (non necessariamente distinti) per: Denire lo schema di una base di dati (Data Denition Language); Scegliere le strutture dati per la memorizzazione (Storage Denition Language); Gestire i privilegi (View Denition Language); Modicare i dati (Data Manipulation Language); Interrogare il database (Query Language).

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

Metadati e dati

Una caratteristica importante del sistema di gestione delle basi di dati ` e che esso contiene non solo la base di dati in senso stretto (linsieme di tutti i DATI), ma anche una descrizione completa della sua struttura e dei suoi vincoli. Questa descrizione ` e memorizzata nel CATALOGO di sistema, che contiene informazioni dettagliate sulla struttura di ciascun elemento della base di Dati. Esso ` e aggiornato ogni volta che avviene una operazione di modica e fotografa lo schema della base di Dati in un particolare momento della sua esistenza. Le informazioni memorizzate nel catalogo sono dette METADATI, fanno parte anchesse della Base di Dati e ne descrivono la struttura. I dati gestiti dai DBMS hanno le seguenti caratteristiche: sono organizzati in insiemi omogenei, fra i quali sono denite delle associazioni; sono molti in assoluto e rispetto ai metadati; sono protetti anche parzialmente dallaccesso da parte di utenti non autorizzati; sono protetti da malfunzionamenti hardware o software; sono utilizzabili contemporaneamente da utenti diversi.

Indipendenza sica e logica di una base di dati

possibile pensare al nostro DBMS come unOarchitettura EO a pi` u livelli di astrazione, che consentano almeno in parte il rispetto delle due propriet` a di indipendenza che seguono: INDIPENDENZA LOGICA del DBMS: ` e la possibilit` a di cambiare lo schema concettuale senza dover cambiare le viste esterne o i programmi applicativi. Lesigenza di cambiare lo schema concettuale pu` o sorgere

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

ad esempio quando ` e necessario espandere la base di dati, ridenire i vincoli, cambiare lOorganizzazione delle tabelle etc; INDIPENDENZA FISICA del DBMS: ` e la possibilit` a di cambiare lo schema interno (ovvero le strutture di memorizzazione sica degli elementi del database) senza dover cambiare lo schema concettuale. Mentre quasi tutti i DBMS disponibili commercialmente garantiscono lindipendenza sica, quella logica ` e di norma garantita solo in parte. L ARCHITETTURA a 3 LIVELLI ` e stata denita con uno standard ANSI/SPARC per implementare lindipendenza logica e sica di un DBMS ed il suo vantaggio principale sta nel consentire la separazione delle applicazioni dalla struttura interna della base di dati, per cui ` e possibile cambiare le strutture di memorizzazione (ed in parte lo schema concettuale) senza dover riprogrammare le applicazioni. Nellarchitettura ANSI/SPARC il LIVELLO INTERNO descrive le strutture di memorizzazione sica della base di dati; il LIVELLO LOGICO rappresenta lo schema logico dellOintera base di dati (modello concettuale), nascondendo i dettagli relativi alle strutture di memorizzazione sica;il LIVELLO ESTERNO (o di vista logica) comprende un certo numero di schemi esterni o viste, ciascuno dei quali individua la parte della base di dati a cui ` e interessato un particolare gruppo di utenti o una particolare applicazione, nascondendo il resto.

IRS e File System vs Database

Stando a quanto abbiamo scritto nora, si pu` o dire che un Information Retrieval System (come ad esempio Google) ` e una Base di Dati? Ovviamente no. Le pagine web (o pi` u in generale una qualsiasi collezione di documenti) non sono strutturate in categorie omogenee, non hanno esplicite relazioni tra loro, non rispondono ad esigenze informative condivise, non hanno meccanismi comuni di gestione degli accessi o di protezione dei dati, il loro contenuto in generale cambia dinamicamente, non ne esiste un catalogo... Stando a quanto abbiamo scritto nora, si pu` o dire che un File System (come ad esempio FAT32) ` e una Base di Dati? Ovviamente no. Ad esempio un le ha un meccanismo di gestione dei privilegi di accesso molto rudimentale, in

CAPITOLO 1. INTRODUZIONE AI SISTEMI DI BASI DI DATI

cui il privilegio di lettura si pu` o assegnare a pi` u utenti, ma solo per lintero le. Non ` e possibile e quindi garantire al contempo laccesso condiviso e la privatezza dei dati (supponendo che un le contenga i dati sanitari e scali di alcune persone, un politica di accesso corretta vorrebbe che un medico acceda solo ai primi ed un nanziere solo ai secondi). Mentre si pu` o dire che un le system abbia una struttura coerente, i le memorizzati non sono omogenei e non sono in relazione tra loro. Inne, i le non rispondono ad una esigenza informativa comune.

Buoni motivi per non usare un DBMS

Esistono anche ottimi motivi per non far uso di una Base di Dati ed il suo impiego andrebbe valutato sempre con cautela. Ad esempio: mancanza di uno dei requisiti di denizione della base di dati, ovvero se i dati sono pochi, le esigenze informative sono temporanee, ` e presente un solo utente, non occorrono o non sono prioritarie privatezza, adabilit` a, consistenza, etc; aumento del rischio di interruzione del funzionamento a causa dellintegrazione (un problema particolarmente sensibile ad esempio per i sistemi informativi degli ospedali o in applicazioni militari); Costi di installazione, di formazione del personale, di manutenzione; impatto sullorganizzazione.

Capitolo 2 Modellazione concettuale


In questo capitolo introdurremo gli strumenti principali per la modellazione concettuale i diagrammi Entit` a-Associazione (Entity-Relationship o ER in inglese) e alcuni diagrammi UML. Il riferimento per la notazione sui diagrammi ER ` e il Navathe [2], mentre per la notazione non standard dei diagrammi delle classi il riferimento ` e lAlbano [1]. Trattandosi di aspetti meramente denitivi e convenzionali, si rimanda ai testi citati per la trattazione completa, qui se ne dar` a solo un rapido cenno per sottolineare gli aspetti principali.

Diagrammi Entit` a-Associazione

Nella progettazione di una Base di Dati ci si trova di fronte al problema di rappresentare alcuni aspetti di un contesto della realt` a. Talvolta il contesto in cui si opera ` e detto MINI MONDO. Il problema non ` e solo scegliere gli strumenti da utilizzare per eettuare tale rappresentazione, ma anche e soprattutto scegliere quali fatti rappresentare e in che modo, con quali legami. Per progettare una base di dati ` e essenziale saper riconoscere e denire quali informazioni inserire in una base di dati, in termini sia di elementi del mondo reale che di e quali legami esistono tra di esse. E quindi necessario creare uno schema concettuale di una base di dati, dal quale ` e possibile derivare la struttura dei dati secondo il modello logico del DBMS. Uno strumento per esprimere schemi concettuali sono i diagrammi entit` a-relazione =ER.

10

CAPITOLO 2. MODELLAZIONE CONCETTUALE Gli elementi di base del modello ER sono 3: le ENTITA; gli ATTRIBUTI; le ASSOCIAZIONI.

11

Il primo elemento del modello ER ` e lENTITA. Essa pu` o rappresentare tanto un oggetto concreto (ad es. studente, oppure libro) quanto un oggetto astratto, che esiste soltanto in ambito concettuale (ad es. corso, azienda o dipartimento). Ogni entit` a presenta normalmente numerosi ATTRIBUTI, ovvero propriet` a a lei peculiari (ad esempio ogni entit` a studente avr` a un attributo numero di matricola, un attributo Nome, un attributo anno di corso etc.), ma si noti bene che una entit` a non coincide con una collezione di unit` a dello stesso tipo e non coincide con linsieme dei valori assunti dai suoi attributi. Essa ` e una descrizione astratta di ci` o che accomuna una serie di elementi del mondo reale, siano essi concreti o astratti. Una entit` a` e dunque caratterizzata da due elementi: lINTENSIONE dellentit` a (o SCHEMA): descrizione astratta che accomuna tutto ci` o che fa parte di quellentit` a (elenco degli attributi dellentit` a e del loro tipo). lESTENSIONE dellentit` a (o STATO): collezione di unit` a che appartengono a quellentit` a. Essa ha un DOMINIO che pu` o essere considerato lunione dei domini dei singoli attributi che la compongono. Gli attributi possono essere classicati in: ATOMICI: contengono valori non scomponibili (ad es. anno di corso, professione); STRUTTURATI: sono dati dalla composizione di pi` u attributi atomici (ad es. indirizzo ` e composto da Via,CAP,Citt` a,Numero civico etc.); SEMPLICI (o UNIVOCI ): a valore singolo (ad es. et` a)

CAPITOLO 2. MODELLAZIONE CONCETTUALE

12

MULTIVALORE : ammettono pi` u valori per la stessa entit` a (ad es. colore per una entit` a automobile o Numero di telefono per una entit` a persona) DERIVATI (o CALCOLATI): sono calcolabili a partire da altri attributi della stessa entit` a (ad es. per una persona il valore di et` a pu` o essere calcolato a partire dalla data di nascita o il valore anzianit` a di servizio a partire dalla data di assunzione) TOTALI: hanno necessariamente un valore per ciascuna istanza dellentit` a (ad es. Data di nascita per una entit` a Persona) PARZIALI: non necessariamente hanno un valore per ciascuna istanza dellentit` a (ad es. numero patente per una entit` a Persona) OBBLIGATORI: oltre ad essere totali, il valore che assumono ` e necessariamente noto, ovvero non ` e ammesso che presentino valori nulli (ad es. matricola per una entit` a studente) E importante sottolineare che le categorie di attributi sono indipendenti, ovvero gli attributi possono presentarsi con una qualsiasi combinazione di queste (ad es. lattributo Recapito in genere ` e sia strutturato che multivalore, lattributo numero di telefono in genere ` e atomico e multivalore, mentre indirizzo di residenza ` e in genere univoco e strutturato ). Gli attributi hanno a loro volta un DOMINIO, dato dallinsieme dei valori per essi ammissibili. Per le convenzioni grache sui vari tipi di attributi si rimanda a [2]. Lultimo elemento del modello ER ` e lASSOCIAZIONE. E possibile inoltre stabilire un legame tra pi` u entit` a che chiameremo ASSOCIAZIONE (dotata di due versi), ogni verso dellassociazione ha unentit` a di arrivo e una di partenza. Unassociazione non ` e altro che una relazione matematica tra 2 insiemi. Le associazioni sono caratterizzate dalla MOLTEPLICITA, dalla CARDINALITA e dalla TOTALITA. Anche le associazioni possono avere attributi, analogamente alle ENTITA.

CAPITOLO 2. MODELLAZIONE CONCETTUALE

13

2
2.1

Vincoli di integrit` a
Chiavi

Un vincolo importante sulle entit` a` e il vincolo chiave. Una chiave ` e un insieme di uno o pi` u attributi con 3 caratteristiche principali: UNIVOCITA:I valori degli attributi identicano univocamente le istanze dellentit` a. Ovvero in unentit` a non possono esistere 2 o pi` u istanze uguali sugli attributi chiave (altrimenti non sarebbe possibile distinguerle) OBBLIGATORIETA COSTANZA Un insieme di attributi che soddisfa le propriet` a sopra elencate ` e detto SUPERCHIAVE. E in generale possibile rimuovere alcuni attributi da una superchiave ottenendo ancora una superchiave (ad es. {matricola,nome,cognome} ` e un superchiave dellentit` a Studente cos` come lo ` e {matricola,cognome} ). Quando accade che rimuovendo un qualsiasi attributo da una superchiave non si ottiene pi` u una superchiave (ovvero si viola una delle propriet` a sopra elencate), si dice che la superchiave ` e MINIMALE (ad es. matricola ` e una superchiave minimale di Studente come {ISBN,Numero copia} ` e per libro). In generale una entit` a pu` o avere pi` u superchiavi minimali composte da pi` u di un attributo (ad esempio Studente pu` o avere come superchiave minimale sia matricola che Numero carta didentit` a, libro pu` o avere come superchiave minimale sia {ISBN,Numero copia} che Codice,Numero copia} ), tali superchiavi minimali sono dette CHIAVI CANDIDATE. Tra le chiavi candidate una sola diventa la CHIAVE PRIMARIA (detta anche semplicemente CHIAVE) dellentit` a e la sua scelta spetta al DBA.

2.2

Valori nulli

Anzitutto occorre riconoscere almeno tre signicati dierenti nei valori nulli: non applicabile, non disponibile o sconosciuto. Per indicare tutti e tre questi casi sar` a utilizzata la stessa parola riservata NULL. Il modello

CAPITOLO 2. MODELLAZIONE CONCETTUALE

14

` come tecnica per modellare la mancanza relazionale include il ONULL valueO di informazione. NULL non fa parte del dominio dellattributo. Quando si da ad un attributo la possibilit` a di avere valore NULL, si ammette che quellattributo in qualche n-upla pu` o rimanere non specicato e/o essere assegnato in un secondo momento. Il valore NULL per un certo attributo pu` o indicare: Valore che non esiste (NON APPLICABILE) Il valore esiste ma non lo si conosce al momento (NON DISPONIBILE) Non si sa se il valore non esista o non sia noto (SCONOSCIUTO) I DBMS non modellano il perch e manca il dato, si limitano a denotare la sua mancanza La chiave ` e sempre un attributo obbligatorio ( ovvero ha un vincolo implito NOT NULL).

Capitolo 3 Ottimizzazione di interrogazioni


1 Introduzione

Gli operatori dellalgebra relazionale traduconoil codice dichiarativo SQL in espressioni procedurali, ovvero indicano la sequenza di passi necessari perch` e una query sia eseguita e risolta. Qualunque espressione dichiarativa al momento dellesecuzione va necessariamente trasformata in una sequenza di operazioni relazionali, sebbene spesso si usi la semantica dei multinsiemi (o bag) e quindi non si usino operatori relazionali in senso stretto. Le possibili implementazioni degli operatori relazionali sono molteplici e riettono scelte sia architetturali che siche sul sistema in uso. Vedremo in questo capitolo come lesecuzione di una query avvenga allinterno del database e come possa essere resa pi` u rapida. Questo compito ` e generalmente demandato ad un apposito modulo del DBMS che ` e detto appunto ottimizzatore delle interrogazioni, su cui normalmente lutente non pu` o in alcun modo agire. Cionondimeno si ritiene utile esplorarne la logica sottostante per dare un saggio dellimportanza dellalgebra relazionale da un lato e della struttura sica del database dallaltra. Per la riscrittura algebrica il riferimento ` e lAlbano [1], mentre per gli 15

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

16

algoritmi di esecuzione di join la lettura consigliata ` e [3]. Daremo per nota la denizione degli operatori relazionali e delle loro propriet` a fondamentali, rintracciabili in qualsiasi libro di testo sulle Basi di Dati e segnatamente nei testi consigliati [1] e [2].

Riscrittura algebrica

Data una interrogazione, in generale non ` e unico il modo in cui questa pu` o essere espressa in algebra relazionale, ovvero esistono in generale in algebra relazionale pi` u scritture equivalenti della stessa interrogazione. Fino a che punto si spinge tale equivalenza? E lecito ed auspicabile usare indierentemente le varie espressioni? La risposta ` e un secco no. Lequivalenza delle espressioni ` e algebrica ma non computazionale, per cui se da un punto di vista astratto ` e possibile ricorrere ad una piuttosto che ad unaltra senza particolari conseguenze, da un punto di vista concreto, nel momento in cui queste espressioni devono essere risolte e calcolate, ` e necessario tenere bene in conto quale si sceglie e prestare attenzione ad usare quella pi` u conveniente. In particolare una circostanza da evitare in ogni modo ` e la creazione di prodotti cartesiani, veri buchi neri per quanto riguarda lassorbimento di risorse (si pensi che il prodotto cartesiano di 3 tabelle con 100 tuple ciascuna produce come risultato una tabella con un milione di tuple!). La dierenza nel calcolo (e quindi nelle prestazioni) pu` o essere di svariati ordini di grandezza. La riscrittura algebrica ` e esattamente il processo tramite il quale si sfruttano le propriet` a algebriche degli operatori relazionali per riformulare una data interrogazione in modo da sceglierne la variante pi` u eciente. Per coglierne il signicato basta pensare ad un qualsiasi polinomio, ad esempio (ab + ac). Siamo ragionevolmente certi che il polinomio a(b + c) sia algebricamente equivalente al primo, ma non lo ` e aatto dal punto di vista computazionale: mentre la risoluzione del primo richiede due moltiplicazioni ed una addizione, la risoluzione del secondo richiede una sola moltiplicazione ed una sola addizione, risultando quindi pi` u eciente. Un ragionamento del tutto analogo vale per le interrogazioni, ad esempio data una tabella STUDENTI (S), una tabella ESAMI (E) ed unaltra tabella EsamiSostenuti (ES), la query Q1: trovare il nome di tutti i docenti di Mario Rossiha le seguenti soluzioni

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI algebricamente equivalenti: N omeDoc (N omStud=M ario,CognStud=Rossi (S N omeDoc (N omStud=M ario,CognStud=Rossi ((S N omeDoc ((N omStud=M ario,CognStud=Rossi (S ) N omeDoc (N omStud=M ario,CognStud=Rossi (S ) N omeDoc (M arioRossi (N omeStud,CognomeStud,N omeDoc (S (ES ES ) ES ) (ES (ES E ))) E )) E) E )) E ))))

17

(1) (2) (3) (4) (5) (6)

...............

Le espressioni equivalenti possono ricavarsi applicando ripetutamente le note propriet` a degli operatori algebrici dellalgebra relazionale, tra le quali ricordiamo lassocitativit` a dei prodotti e delle giunzioni (R S) T = R (S T ), la distributivit` a della selezione rispetto al prodotto e alla giunzione (R S ) = (R ) (S ) e la distributivit` a della proiezione rispetto al prodotto e alla giunzione (R S ) = (R) (S ) (per lelenco completo delle propriet` a, le ipotesi sottostanti e i loro casi particolari si veda [1]). La domanda a questo punto diventa: quale criterio usare per scegliere lespressione pi` u conveniente? Se per una query estremamente semplice ` e pensabile valutare tutte le possibili riscritture e scegliere quella senzaltro pi` u conveniente, dovrebbe gi` a dal nostro esempio essere chiaro che tale strategia sarebbe eccessivamente dispendiosa in un caso reale, dato che che il numero di possibili riscritture aumenta esponenzialmente con il numero di tabelle e di operazioni coinvolte. Quello che inne si fa ` e adottare un approccio greedy, preferendo la formulazione in cui i risultati intermedi sono di dimensione minore (si ricorda che unespressione di algebra relazionale ` e valutata sequenzialmente, nellordine inverso rispetto a quello in cui le operazioni sono indicate). Poich` e le selezioni e le proiezioni di norma riducono le dimensioni delle tabelle a cui sono applicate, questa strategia si espleta anticipando il pi` u possibile le selezioni e le proiezioni rispetto alle giunzioni. Nel nostro esempio, le espressioni 3 e 4 sono quindi preferibili alle espressioni 1 ed 2. Ulteriori criteri di scelta per le espressioni equivalenti di una stessa query dipendono da come gli operatori relazionali sono implementati e da come le tabelle sono sicamente memorizzate nel DBMS. Alcuni di essi saranno dati

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI alla ne del capitolo.

18

Alberi di interrogazione

Una query in algebra relazionale pu` o essere convenientemente rappresentata con un albero, le cui foglie indicano le relazioni coinvolte e i cui nodi le operazioni eettuate. Naturalmente, tutte le operazioni binarie hanno due gli, mentre quelle unarie hanno un solo glio. Un esempio di albero di interrogazione relativo alla query Q1 ` e rappresentato in Fig.3.1, albero corrispondente

Figura 3.1: Albero 1 relativo alla query Q1 allespressione 1. Poich` e data una interrogazione, in generale non ` e unico il modo in cui questa si pu` o esprimere in algebra relazionale, in generale non ` e unico neanche lalbero corrispondente. Ad esempio la stessa query Q1 pu` o essere rappresentata come in in Fig.3.2 albero corrispondente allespressione 2. Nellalbero, la sequenza delle operazioni da eseguire si ottiene andando dalle foglie alla radice. Esso fornisce una utile rappresentazione graca della struttura di una query che spesso consente di ottimizzarla algebricamente con maggiore facilit` a. Le relazioni temporanee, ovvero le tabelle rappresentanti i

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

19

Figura 3.2: Albero 2 relativo alla query Q1 risultati intermedi, sono indicate con T 1, T 2, T 3, . . . , T N secondo lordine di esecuzione, che ` e dal basso verso lalto.

Cenni allorganizzazione sica dei le

Faremo lipotesi semplicativa non troppo lontana dalla realt` a che una tabella corrisponda ad un le, cio` e che ogni tabella sia registrata indipendentemente in un singolo le. Una tabella pu` o essere memorizzata sicamente con diverse strutture dati (ad esempio si pu` o usare una linked list, un albero, una pila, una coda etc.) e quindi la dimensione e la struttura del le corrispondente pu` o variare. La struttura pi` u semplice (...lunica che prenderemo in considerazione...) ` e la struttura di HEAP le o organizzazione sequenziale. In essa i record di una tabella sono memorizzati cos` come immessi, senza un ordinamento proprio ma semplicemente uno dopo laltro nellordine di immissione nella tabella. Lorganizzazione ad Heap ` e molto comoda per limmissione di nuovi dati, dato che questi sono semplicemente accodati al le ma per converso rende molto costoso cancellare o modicare un record, poich` e implica lo spostamento di tutti quelli seguenti (cosa che avviene periodicamente con

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

20

operazioni di riorganizzazione). Inoltre, come abbiamo gi` a detto, i record non sono ordinati, e quindi una richiesta di ordinamento pu` o comportare nel caso peggiore un accesso ripetuto a tutti i record della tabella. Per lo stesso motivo la ricerca di un valore ` e molto lenta in quanto mediamente richiede la scansione sequenziale di met` a del le. E dunque una scelta sensata nel caso di tabelle per cui non ` e importante lordinamento dei dati e a cui si accede raramente. La memoria ` e organizzata in blocchi o pagine, la cui dimensione comunemente varia tra i 512B e i 64KB. Un singolo heap le pu` o estendersi su pi` u pagine, ma ogni pagina ` e assegnata soltanto ad un le. Il DBMS normalmente riserva una area della memoria centrale per fare le sue operazioni, questarea ` e detta BUFFER POOL e supporremo sia costituita da K pagine o blocchi.

Implementazione di selezioni e proiezioni

Nel momento in cui ci si aaccia al problema di come implementare nella maniera pi` u eciente possibile gli operatori dellalgebra relazionale si deve tenere conto delle strutture dati con cui sono memorizzate le tabelle su cui questi operano. Come gi` a detto, noi considereremo solo la sequenza, ovvero lHeap le. Loperazione di selezione non fa altro che una scansione sequenziale dellintero le, verica record per record se la condizione di selezione ` e vericata e se ci` o accade memorizza un puntatore a quel record nel le temporaneo di risposta. Intuitivamente ` e facile dedurre che essa si implementa con un semplice ciclo for e che nel caso di Heap le il costo delloperazione ` e O (N T R ) dove N TR ` e il numero di tuple della relazione R. Questo vale dal punto di vista puramente algoritmico...in realt` a le tuple sono caricate in memoria una pagina per volta e lespressione del costo ` e O(c1 T PR + c2 N PR ), dove c1 ` e la costante che esprime il costo di lettura dalla memoria principale e di esecuzione dei confronti, N PR ` e il numero totale di pagine occupate dalla relazione R, T PR ` e il numero di tuple per pagina di R, mentre c2 esprime il

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

21

costo di lettura dalla memoria di massa. Essendo c1 (milardesimi di secondo) di svariati ordini di grandezza minore di c2 (millesimi di secondo), il primo termine ` e trascurabile rispetto al secondo e il costo della selezione risulta inne O(N PR ), . Se indichiamo con DTR la dimensione in byte di una singola tupla di R, con DP la dimensione in byte di una pagina e con T PR il numero di tuple per pagina per R, valgono le seguenti formule: N PR = DTR N TR /DP T PR = DP/DTR (7) (8)

dove tutti i valori decimali sono approssimati allintero pi` u grande. DP dipende dal sistema (il valore pi` u comune ` e 4096) mentre DTR dipende dalla relazione R considerata. Loperazione di proiezione in generale non comporta solo leliminazione degli attributi non presenti nella lista di selezione, ma anche leliminazione dei duplicati (dato che lalgebra relazionale ` e insiemistica e non sono ammesse tuple ripetute). E questultima loperazione pi` u costosa e comporta lordinamento della tabella. Il costo ` e dunque molto diverso nei due scenari: se la lista di selezione include una chiave, basta una scansione della tabella e il costo ` e O(N PR ) (si tenga presente quanto detto prima), mentre se la lista di selezione non include una chiave (ed ammette quindi valori ripetuti) il costo con un generico algoritmo di ordinamento ` e O(N PR log N PR ) (vale il discorso precedente: consideriamo il numero di pagine anzich` e il numero di tuple). Ad esempio se un record della tabella studente occupa 70 byte, essa contiene 500 record e le pagine nel nostro sistema sono da 4Kb, allora avremo: DTStudente = 70 N TStudente = 500 DP = 4096 T PStudente = DP/DTStudente = 4096/70 = 59 N PStudente = DTStudente N TStudente /DP = 70 500/4096 = 9 Esistono innumerevoli varianti di implementazione per gli operatori relazionali, per cui giocoforza ne considereremo solo alcune.

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

22

Algoritmi per limplementazione di giunzioni

Menzione a parte meritano gli algoritmi di giunzione. Loperazione critica dellalgebra relazionale ` e la giunzione, questo sia perch` e se mal implementata pu` o condurre alla formazione di prodotti cartesiani, sia perch` e` e quella pi` u frequentemente usata come operazione di tramite nellesecuzione di selezioni o proiezioni su pi` u tabelle. Supporremo le due tabella da giungere siano R e S.

6.1

Nested loop join

La versione pi` u rozza di algoritmo per il join ` e il Raw Nested Loop Join (RNLJ), che implementa loperazione attenendosi strettamente alla denizione. Lalgoritmo si realizza con un doppio ciclo for che per ogni tupla ri di R, fa la scansione dellintera realzione S cercando tutte le tuple di S che soddisfano la condizione di join con ri e dunque calcolando un prodotto cartesiano. Date due pagine del Buer Pool, P1 per R e P2 per S , il costo di questo algoritmo risulta O(N PR + N TR N PS ), dove N PR ` e il costo della scansione della tabella esterna e N PS il costo della scansione della tabella interna, scansione ripetuta tante volte quante sono le tuple di R. La prima osservazione da fare ` e che il ruolo delle due relazioni R ed S non ` e intercambiabile....una ` e detta relazione esterna e laltra interna. La lettura della relazione interna viene ripetuta tante volte quante sono le tuple della relazione esterna. Intuitivamente conviene scegliere come interna la relazione col maggior numero di tuple per pagina. Laltra osservazione da fare ` e che ` e possibile ridurre di molto il costo semplicemente cambiando lordine di lettura delle tuple, ovvero anzich` e caricare P1 e confrontare tutte le tuple che contiene caricando S interamente una volta per ogni tupla, conviene confrontare tutte le tuple caricate contemporaneamente in memoria, ovvero conviene confrontare tutte le tuple in P1 con tutte le tuple in P2 ed in seguito caricare una nuova pagina in P2 . Il costo di questa strategia risulta O(N PR + N PR N PS ), dove N PR ` e il costo della scansione della tabella esterna e N PS il costo della scansione della tabella interna, scansione ripetuta tante volte quante sono le pagine di

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

23

R. Questa variante ` e detta Nested Loop Join. Finora abbiamo sfruttato due sole pagine del Buer Pool... e per renderci conto di quanto esso pu` o esserci daiuto, basti pensare che se il Buer Pool fosse cos` capiente da contenere per intero una delle due tabelle, il costo del join sarebbe pari al solo costo di caricamento delle due tabelle in memoria (il costo di scansione o di lettura) O(N PR + N PS ). In un caso realistico, il buer pool non pu` o contenere per intero entrambe le tabelle (probabilmente neanche una sola di esse) per cui quello che si fa ` e riempirlo, caricando ed elaborando K pagine per volta. Se assegniamo una pagina P1 ad R e K 1 pagine ad S tutte le pagine di S che sono in memoria contemporaneamente possono essere confrontate con ogni singola tupla contenuta nella pagina P1 di R a costo zero! Il costo totale si riduce dunque a O(N PR + N PR N PS /(K 1)). Questo algoritmo ` e detto Block Nested Loop Join (BNLJ).

6.2

Hash join

Le funzioni di randomizzazione o funzioni hash (...polpetta...) sono a ben ragione ubique nellinformatica e hanno una utilit` a che travalica lambito delle Basi di Dati. Ne daremo un rapido cenno al ne di meglio comprendere lalgoritmo di HASH JOIN. le HASH sono funzioni (quindi associazioni univoche) casuali che hanno per codominio un insieme di numeri interi. Per cogliere lutilit` a ed intuire limportanza delle funzioni Hash si pensi al problema dellordinamento di una enorme pila di documenti etichettati (ovvero su ciascuno dei quali sia stampato un identicativo) dei quali per` o si ignorino il contenuto, lautore, la data di creazione e le regole utilizzate per creare le etichette. In questo caso non esisterebbe alcun attributo naturale utilizzabile per lordinamento, n` e sarebbe possibile ricostruire un ordinamento sensato a partire dalle sole etichette. Di conseguenza, potrebbe essere necessario scartabellare lintera pila ogni volta che si ha bisogno di uno specico documento, non potendo cercare i documenti per data di riferimento, alfabeticamente rispetto al titolo o allautore, per argomento o con un qualsiasi criterio simile. Un po ` e come se le parole di un vocabolario fossero inserite senza rispettare lordine alfabetico...trovare una denizione diverrebbe improponibile. Potremmo suddividere i documenti in M mucchi (le parole

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

24

del vocabolario non ordinato alfabeticamente in M gruppi), in modo che se fossimo in grado di riconoscere il mucchio di appartenenza di ciascun documento potremmo cercare solo in quello e non nellintera pila. Cercare un documento tra N altri suddivisi in M mucchi, supponendo di essere in grado di individuare subito il mucchio giusto, porterebbe a risparmiare la lettura di (N N/M ) documenti. Ad esempio se N = 1000 e M = 10, risparmieremmo per ogni ricerca la lettura di 900 documenti! Il punto naturalmente ` e come individuare il mucchio giusto, ovvero nel criterio adottato per operare la suddivisione. In assenza di qualsiasi informazione ausiliaria, potremmo suddividere i documenti lanciando un dado a M facce per ogni documento da classicare e leggendo sula faccia del dado il mucchio di appartenenza. Questa soluzione senzaltro garantisce che i mucchi siano bilanciati, ovvero ciascuno di loro contenga grossomodo lo stesso numero di documenti degli altri (` e una conseguenza dellequiprobabilit` a delle facce del dado), per` o una volta assegnato un documento ad un gruppo non sarebbe pi` u possibile riconoscere il gruppo a cui appartiene senza rifare una scansione completa dei documenti. Vantaggio nullo. Potremmo scrivere in una lista il codice del documento aanco al valore ottenuto dal dado in modo da avere una tabella che ci permetta di leggere, dato un codice di documento, qual ` e il mucchio che lo contiene, ma a ben guardare neanche questa ` e una soluzione molto vantaggiosa: nel caso peggiore, dato un codice dovremmo scorrere lintera lista di N valori per trovare il mucchio corrispondente. Abbiamo cambiato loggetto della ricerca, ma non il numero di controlli. Quello che in realt` a ci occorre ` e una funzione casuale che abbia come dominio il codice del documento e che generi un numero casuale compreso tra 1 e M . Una tale funzione permetterebbe di calcolare il numero del mucchio dato il codice del documento e renderebbe superua la scansione della lista. Una siatta funzione esiste (invero ne esiste una intera famiglia) ed ` e detta funzione HASH o di randomizzazione. I mucchi sono detti BUCKETS (cesti) e dovrebbero essere sempre equiprobabili. Per tornare allesempio del vocabolario, una funzione HASH data una parola ci direbbe in quale gruppo metterla e andarla a cercare, senza che nei gruppi esista un ordinamento evidente. E come se ogni volta che dovessimo decidere in quale mucchio va inserita una parola lanciassimo un dado... con la dierenza di essere certi che il lancio di un

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

25

dado con la stessa parola produca sempre lo stesso risultato. Lalgoritmo di simple hash join (SHJ) ` e quello pi` u eciente del gruppo, ma si pu` o usare solo per il caso di equijoin. Anzitutto le due relazioni R e S vanno randomizzate , ovvero occorre caricarle in memoria, calcolare la funzione di Hash e riscriverle in memoria riempiendo di conseguenza i bucket. Indicando con B il numero di buckets della nostra funzione hash, il caso peggiore ` e che tutte le tuple vadano in buckets diversi, il caso migliore ` e che tutte le tuple vadano nello stesso bucket e il caso medio ` e che si occupino B/2 bucket per pagina di R. Conviene anche in questo caso sfruttare al meglio il Buer Pool, quindi caricare K 1 pagine di R in memoria e suddividere le N TR (K 1) tuple in B gruppi prima di eettuare la scrittura nei buckets. Se le due relazioni R e S non possono essere interamente contenute nel Buer Pool, supponendo siano in esso disponibili per la lettura K 1 pagine, allora il costo di lettura-scrittura ` e (N PR + N PS )(1+ B/2 1/(K 1)) (ipotizziamo per semplicit` a che un bucket non superi una pagina di dimensione). Se le relazioni R e S possono essere interamente contenute nel buer pool, allora poich` e il costo di valutazione della funzione hash in memoria principale ` e trascurabile, le tuple possono essere completamente raggruppate prima di essere scritte. In questo caso il read-write di entrambe le relazioni ci costerebbe 2 (N PR + N PS ). Si fa presente che il numero di pagine occupate dalle tabelle sar` a lo stesso, in quanto abbiamo soltanto cambiato lordine dei record che contengono. Inne, avendo salvato le relazioni in forma randomizzata, ` e molto rapido fare i confronti: confrontiamo solo i buckets corrispondenti (` e come se avendo preso le parole di una lingua e quelle di unaltra lingua e avendole raggruppate secondo la stessa funzione di randomizzazione, confrontassimo soltanto le parole delle due lingue che stanno negli stessi gruppi), quindi caricandoli a coppie. Il costo di questo passo equivale ad unaltra lettura delle due relazioni, considerazione che ci porta al costo nale: 3 (N PR + N PS ) nel caso le tabelle siano di dimensione minore del Buer Pool e (N PR + N PS ) (2 + B/2 1/(K 1)) nel caso di tabelle di dimensioni maggiori del Buer Pool.

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

26

Calcolo approssimato del tempo di esecuzione di una query

Concludiamo il capitolo con un calcolo che dimostri lutilit` a pratica delle nozioni n qui introdotte. Valutare il costo approssimato di esecuzione di una generica query non ` e una cosa banale e richiede una serie di denizioni e di ipotesi. Lanalisi completa dei casi possibili esula dalle nalit` a di questo corso, pertanto ci concentreremo soltanto sugli algoritmi introdotti in precedenza. La cosa che dovrebbe essere oramai chiara ` e che il calcolo del costo di esecuzione di una operazione nel DBMS empiricamente equivale a contare il numero di accessi al disco eettuati da questa. Procediamo per gradi. Anzitutto deniamo la selettivit` a S di un predicato o di una condizione c su una tabella R come il rapporto tra il numero di tuple che vericano la condizione ed il numero di tuple totali della tabella 9.
R Sc

N Tc=T RU E con N Tc=T RU E N TR N TR

(9)

Ad esempio la selettivit` a di voto = 20 in una tabella studente ` e 1/12, perch` e 12 sono i valori possibili di voto; analogamente la selettivit` a di voto <= 20 in una tabella studente ` e 3/12. Non sempre ` e possibile conoscere la selettivit` a di un attributo a priori e talvolta ` e necessario ricorrere a delle ipotesi per calcolarla. Lipotesi pi` u comune ` e quella di equidistribuzione dei valori. Ad esempio per conoscere la selettivit` a di colore dei capelli = nero in un elenco di persone, si assume che siano equiprobabili i valori nero,biondo,rosso e castano e si deduce che ` e 1/4. Qualunque informazione pu` o essere utilizzata per ranare il calcolo della selettivit` a. Essa ci occorre per stimare la dimensione della tabelle in seguito ad una operazione di selezione: ad esempio se in una tabella studente si eettua una ricerca per trovare tutti gli studenti maschi, dato che la selettivit` a di sesso pu` o essere ragionevolmente assunta come 1/2, il numero di tuple del risultato sar` a circa la met` a rispetto alla tabella originaria. Cos` come si pu` o calcolare la selettivit` a di un predicato o una condizione si selezione, si pu` o anche calcolare la selettivit` a di un predicato o una condizione di giunzione. Essa si denisce come rapporto tra il numero di tuple che

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

27

vericano la condizione di giunzione e il numero di tuple che costituiscono il prodotto cartesiano R S (ovvero N TR N TS ).
R,S Jcjoin

N Tcjoin=T RU E con N Tcjoin=T RU E N TR N TS N TR N TS

(10)

Ad esempio sappiamo che nel nostro database ogni esame sostenuto corrisponde ad uno ed un solo studente, quindi una equigiunzione tra la tabella Studenti di 500 tuple e la tabella EsamiSostenuti di 3500 tuple con condizione Studenti.M atricola = EsamiSostenuti.Candidato avr` a una selettivit` a S,ES JS.M atricola=ES.Candidato = 3500 1/(500 3500) = 1/500 = 0.002. Analogamente, data una tabella Esami di 150 tuple e sapendo che ogni esame sostenuto corrisponde ad uno ed un solo esame, la selettivit` a della condizione di equigiunzione EsamiSostenuti.IdEsame = Esami.IdEsame ` e ES,E JES.IdEsame=E.IdEsame = 3500 1/(3500 150) = 1/150 = 0.007 Si noti bene che un attributo ` e MOLTO selettivo quando il valore di selettivit` a e BASSO e viceversa. Consideriamo una tabella STUDENTI (S), una tabella ESAMI (E) ed unaltra tabella EsamiSostenuti (ES), con i seguenti parametri: DP = 4096 B IOT = 10 ms DTS = 70 B DTE = 40 B DTES = 30 B N AS = 6 N AE = 5 N AES = 4 N TS = 500 N TE = 150 N TES = 3500 T PS = DP/DTS = 4096/70 = 59 T PE = DP/DTS = 4096/40 = 103 T PES = DP/DTS = 4096/30 = 137

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI N PS = DTS N TS /DP = 70 500/4096 = 9 N PE = DTE N TE /DP = 40 150/4096 = 2 N PES = DTES N TES /DP = 30 3500/4096 = 26 S SS.N ome=M ario,S.Cognome=Rossi = 1/100 S,ES JS.M atricola=ES.Candidato = 2/1000 ES,E JES.IdEsame=E.IdEsame = 1/150

28

Dove N A rappresenta il numero di attributi e IOT ` e il tempo di una singola operazione di lettura/scrittura sul disco. La query Q1: trovare il nome di tutti i docenti di Mario Rossiha tutte le soluzioni algebricamente equivalenti viste nel paragrafo Riscrittura algebrica. Tra queste, scegliamo come pi` u conveniente la seguente: N omeDoc (N omStud=M ario,CognStud=Rossi (S ) ES ) E) (11)

la cui rappresentazione come albero ` e visibile in Fig.3.3. Per risolvere la

Figura 3.3: Albero dellinterrogazione Q1 ottimizzata mediante riscrittura algebrica

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

29

query bisogna percorrere lalbero di interrogazione dal basso verso lalto, tenendo conto che in ogni nodo la dimensione delle tabelle varia in conseguenza delle operazioni eettuate e che varia di pari passo il numero di pagine di memoria necessarie per completare ciascuna operazione. Ad esempio la dimensione stimata della tabella T 1 risultante dalla prima operazione N ome=M ario,Cognome=Rossi (S ) ` e di 1/100 500 = 5 tuple, ciascuna con 6 attributi e 70 Byte di ingombro. Il costo della prima operazione ` e dunque proporzionale a N PS = 9. La seconda operazione prevede il join di T 1 ed ES . Supponendo di usare lHash Join, il costo delloperazione ` e proporzionale a 3 (N PT 1 + N PES ). Con qualche semplice calcolo si ricava il costo del secondo passaggio: N PT 1 = 5 70/4096 = 1, dato che N PES = 26, il costo del join ` e dunque 3 (26 + 1) = 81. Il risultato di questa seconda operazione ` e la tabella T 2 con N AT 1 + N AES = 6 + 4 = 10 attributi, 5 tuple e DTT 1 + DT ES = 70 + 30 = 100 byte per tupla. Senza fare i conti possiamo dire che essa ` e contenuta in una sola pagina. La terza operazione ` e ancora un join, che coinvolge le tabelle T 2 ed E . Usando ancora lhash join, il costo delloperazione ` e 3 (N PT 2 + N PE ) = 3 (1 + 2) = 9. La tabella T 3 ha N AT 2 + N AE = 10 + 5 = 15 attributi, sempre 5 tuple e DTT 2 + DT E = 100 + 40 = 140 byte per tupla. Senza fare i conti possiamo ancora una volta dire che essa ` e contenuta in una sola pagina. Inne resta la proiezione di N omeDocente su T 3. Il costo di questa operazione ` e nullo in quanto T3 ` e interamente contenuta in una pagina di memoria (N PT 3 log(N PT 3 ) = 1 log 1 = 0). Riassumendo, lespressione nale per il costo approssimato di esecuzione della query ` e: IOT (N PS + 3 (N PT 1 + N PES ) + 3 (N PT 2 + N PE ) + N PT 3 log(N PT 3 )) = 10 (9 + 81 + 9) = 990 ms ovvero meno di un secondo. Si calcoli per confronto il tempo di esecuzione usando i join con lalgoritmo RNLJ e una versione non opportunamente riscritta della query. Come ulteriore esercizio, si calcoli il tempo approssimato di esecuzione della query Q2: trovare il nome di tutte le persone che hanno preso 30 con il docente Mario Rossi.

CAPITOLO 3. OTTIMIZZAZIONE DI INTERROGAZIONI

30

Note conclusive al capitolo

Finalmente, dovrebbe essere chiaro che una doppia selezione, pur essendo algebricamente equivalente ad una selezione con doppia condizione, in realt` a ` e molto pi` u onerosa, in quanto comporta la doppia scansione della relazione; parimenti, ` e in genere preferibile anticipare la selezione rispetto alla proiezione, in quanto la seconda in genere comporta un ordinamento; ancora, R S non ` e equivalente a S R, pur valendo la simmetria delloperatore di giunzione, in quanto ad esempio nellalgoritmo BNLJ va preferita come esterna la relazione col minor numero di tuple per pagina. Sulla falsariga di quelli forniti, casi simili sono facili da dedurre.

Bibliograa
[1] A. Albano, G. Ghelli e R. Orsini, Fondamenti di Basi di Dati, Zanichelli, 1999. [2] R. A. Elmasri e S. B. Navathe Sistemi di Basi di Dati, Fondamenti, Pearson Italia, 2003. [3] P. Ciaccia e D. Maio Lezioni di Basi di Dati, Esculapio, 1995.