Table Of ContentCostruire sistemi per basi di dati
Seconda edizione
AntonioAlbano
Universita` diPisa
DipartimentodiInformatica
LargoB.Pontecorvo3,56127Pisa–Italy
[email protected]
Copyright(cid:13)c 2014byAntonioAlbano
E` consentitofarecopiedigitaliocartaceedituttoopartediquestotesto
persolousopersonale. None` consentitofareodistribuirecopiedeltesto
ascopodilucro. Laprimapaginadiognicopiadeveincludereiltitolo,
gliautoriequestoavviso. Perusidiversidaquellopersonale,perlapubbli-
cazionesusitiweboladistribuzioneaterzi,e` richiestal’autorizzazione
delproprietariodelcopyright.
28febbraio2015
INDICE
1 Funzionalita` earchitetturadeiDBMS 1
1.1 IDBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 ArchitetturadeiDBMS . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 IlsistemaJRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Gestionedellamemoriapermanenteedelbuffer 7
2.1 Lememorieadischimagnetici . . . . . . . . . . . . . . . . . . . . 7
2.2 Ilgestoredellamemoriapermanente . . . . . . . . . . . . . . . . . 10
2.3 Ilgestoredelbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Organizzazioniserialeesequenziale 17
3.1 Memorizzazionedicollezionidirecord . . . . . . . . . . . . . . . 17
3.2 Modellodeicosti . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Organizzazioneseriale . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Organizzazionesequenziale . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Sceltadiun’organizzazione . . . . . . . . . . . . . . . . . . . . . . 25
3.6 Ordinamentodeidati . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.7 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Organizzazioniperchiaveconmetodoprocedurale 31
4.1 Tipidiorganizzazioniperchiave . . . . . . . . . . . . . . . . . . . 31
4.2 Metodoproceduralestatico . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Metodoproceduraledinamico . . . . . . . . . . . . . . . . . . . . 37
4.4 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5 Organizzazioniperchiaveconstruttureadalbero 47
5.1 Struttureadalberoperdatipermanenti . . . . . . . . . . . . . . . . 47
5.2 B–alberi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 B+–alberi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Organizzazionestatica . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5 Organizzazioniperindici . . . . . . . . . . . . . . . . . . . . . . . 58
5.6 Indiciconchiavidilunghezzavariabile* . . . . . . . . . . . . . . . 62
5.7 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
IV INDICE (cid:13)c 88-08-7270
6 Organizzazioniperattributinonchiave 65
6.1 Laricercaperattributinonchiave . . . . . . . . . . . . . . . . . . 65
6.2 Indicialisteinvertite . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.3 Indiciabitmap* . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.4 Organizzazioniperricerchemultiattributi . . . . . . . . . . . . . . 73
6.5 Indicipertesti* . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.6 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7 Organizzazioniperdatimultidimensionali 79
7.1 Tipididatiediricerche . . . . . . . . . . . . . . . . . . . . . . . . 79
7.2 G–alberi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.3 R∗–alberi* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.4 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8 Gestionedeimetodidiaccesso 93
8.1 Lamacchinafisica . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2 Operatorisubasididati . . . . . . . . . . . . . . . . . . . . . . . . 94
8.3 Operatorisufileseriali . . . . . . . . . . . . . . . . . . . . . . . . 94
8.4 Operatorisuindici . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.5 Operatorideimetodidiaccesso . . . . . . . . . . . . . . . . . . . . 95
8.6 Esempidiusodeimetodidiaccesso . . . . . . . . . . . . . . . . . 96
8.7 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9 Gestionedelletransazioni 99
9.1 Latransazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.2 Malfunzionamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.3 Modellodelsistema . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.4 Protezionedeidatidamalfunzionamenti . . . . . . . . . . . . . . . 106
9.5 Approcciperlagestionedelletransazioni . . . . . . . . . . . . . . 110
9.6 Algoritmiperlagestionedelletransazioni . . . . . . . . . . . . . . 114
9.7 Ripresadaimalfunzionamentidisistemaedisastri . . . . . . . . . . 117
9.8 L’algoritmoARIES* . . . . . . . . . . . . . . . . . . . . . . . . . 119
9.9 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10 Gestionedellaconcorrenza 125
10.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
10.2 Storiadiuninsiemeditransazioni . . . . . . . . . . . . . . . . . . 126
10.3 Storieserializzabili . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10.4 Serializzabilita` conilbloccodeidati . . . . . . . . . . . . . . . . . 133
10.5 Ilserializzatore2PL-stretto . . . . . . . . . . . . . . . . . . . . . . 133
10.6 Controllodellaconcorrenzasenzablocchi . . . . . . . . . . . . . . 137
10.7 Ilbloccodidatididimensionediversa* . . . . . . . . . . . . . . . 138
10.8 Gestionedellaconcorrenzasubasididati* . . . . . . . . . . . . . 140
10.9 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11 Realizzazionedeglioperatorirelazionali 145
11.1 Ipotesienotazione . . . . . . . . . . . . . . . . . . . . . . . . . . 145
11.2 Operatoriperunarelazione(R) . . . . . . . . . . . . . . . . . . . 155
11.3 Operatoriperlaproiezione(πb) . . . . . . . . . . . . . . . . . . . 156
11.4 Operatoripereliminareduplicati(δ) . . . . . . . . . . . . . . . . . 156
11.5 Operatoreperl’ordinamento(τ ) . . . . . . . . . . . . . . . . . 158
{Ai}
11.6 Operatoriperlarestrizione(σ ) . . . . . . . . . . . . . . . . . . . 158
ψ
11.7 Operatoriperilraggruppamento( γ ) . . . . . . . . . . . . . 162
{Ai} {fi}
(cid:13)c 88-08-7270 INDICE V
11.8 Operatoriperlagiunzione( (cid:46)(cid:47) ) . . . . . . . . . . . . . . . . . . . 163
ψJ
11.9 Operatoriperglioperatoriinsiemistici(∪,−,∩) . . . . . . . . . . . 173
11.10Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
12 Ottimizzazionedelleinterrogazioni 179
12.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
12.2 Analisidell’interrogazione . . . . . . . . . . . . . . . . . . . . . . 180
12.3 Trasformazionedell’interrogazione . . . . . . . . . . . . . . . . . . 181
12.4 Ottimizzazionefisicadell’interrogazione . . . . . . . . . . . . . . . 194
12.5 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
13 ProgettazionefisicaemessaapuntodiBD 215
13.1 Laprogettazionefisicadibasididati . . . . . . . . . . . . . . . . . 215
13.2 Messaapuntodellabasedidati . . . . . . . . . . . . . . . . . . . 226
13.3 MessaapuntodelDBMS . . . . . . . . . . . . . . . . . . . . . . . 232
13.4 Sommario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
A Formulario 235
Bibliografia 241
Indiceanalitico 247
VI INDICE (cid:13)c 88-08-7270
Prefazione
Cos`ı recitava la prefazione alla precedente edizione di questo libro (2001) “Dopo
dieci anni dalla pubblicazione del libro Basi di dati: strutture e algoritmi, l’evolu-
zione della tecnologia delle basi di dati e la nuova organizzazione della didattica
universitariasuggerisceunarevisionesostanzialedelmateriale.”
Oggialtrimotivihannosuggeritodirivedereilmateriale,tracuiiseguenti:
1. I corsi di laurea magistrali offerti dal Dipartimento di Informatica dell’Univer-
sita` di Pisa sono frequentati da un’alta percentuale di studenti laureati in altre
universita` chehannoseguitodifferentiinsegnamentiintroduttivisullebasididati.
2. Gli studenti spesso non frequentano le lezioni e il materiale comunemente usato
perprepararel’esamesonoleslidesdeldocenteinvecedellibro.
3. Gli studenti che superano l’esame alla fine del semestre sono in media poco piu`
del60%degliiscritti.
Di conseguenza, nel preparare questa nuova edizione del libro l’obiettivo e` stato di
limitare il contenuto agli argomenti fondamentali presentati nelle lezioni sulla rea-
lizzazione dei DBMS relazionali centralizzati, da conoscere per essere usati poi nel
modo migliore. I DBMS, infatti, hanno un ruolo fondamentale nella nostra societa`
basata sull’informazione ricavata dal trattamento di grandi quantita` di dati e, quin-
di, sono molto richiesti esperti informatici con competenze sia sugli aspetti teorici
che applicativi dei DBMS relazionali per sviluppare applicazioni con le prestazioni
desiderate.
Il libro inizia con l’analisi dell’architettura dei DBMS relazionali e poi presenta
le fondamentali strutture dati e gli algoritmi per realizzare i moduli per la gestione
della memoria permanente, del buffer, delle strutture di memorizzazione di grandi
collezioni di dati, delle transazioni e dell’ottimizzazione delle ricerche espresse in
SQL. Infine, viene trattata la progettazione fisica delle basi di dati e la loro messa a
puntopermigliorareleprestazionidelleapplicazioni.
Un aspetto particolare del materiale e` l’uso del JRS (Relational Java System) per
perillustrareesempidisoluzionieinparticolareilproblemadell’ottimizzazionedelle
interrogazioni SQL, con metodi diversi basati sui costi piani fisici per eseguirle. Il
sistemae` ilrisultatodiunprogettosviluppatoinJava,perlaprecedenteedizionedel
testo,pressoilDipartimentodiInformatica,Universita` diPisa,dall’autorestessocon
lacollaborazionedelProf.R.Orsiniedialcunistudenticonlelorotesidilaurea.
Una caratteristica del sistema e` che permette di fare esperimenti sui piani fisi-
ci generati dall’ottimizzatore usando non solo il linguaggio SQL, ma anche editori
grafici per definire interrogazioni eseguibili usando piani logici, con gli operatori
dell’algebrarelazionale,oppurepianifisici,conglioperatoridelJRS.
VIII INDICE (cid:13)c 88-08-7270
Contenuti del testo
Il materiale della precedente edizione e` stato ridotto e aggiornato in quasi tutti i ca-
pitoli, per rendere il libro piu` adatto per l’uso da parte degli studenti di un insegna-
mento avanzato sulle basi di dati, che hanno seguito solo un insegnamento introdut-
tivo sulle basi di dati. Inoltre, e` stato deciso di rendere questa edizione disponibile
gratuitamentesulweb.
Il primo capitolo presenta l’architettura di un DBMS relazionale e le caratteristi-
che dei moduli che lo compongono. Il Capitolo 2 si sofferma sulle caratteristiche
delle memorie permanenti e del gestore del buffer. Il Capitolo 3 mostra come me-
morizzare i dati in memoria permanente utilizzando file e presenta le piu` semplici
organizzazionideidati,laserialeelasequenziale,l’approccioallavalutazionedelle
prestazioni delle organizzazioni dei dati e l’importante algoritmo per l’ordinamento
di file. Il Capitolo 4 descrive le organizzazioni primarie dei dati, statiche o dina-
miche, per recuperare con pochi accessi un record di una collezione conoscendone
la chiave, in particolare quelle basate su tecniche di hash. Il Capitolo 5 continua la
descrizione delle organizzazioni dinamiche primarie utilizzando invece strutture ad
albero, e le principali organizzazioni secondarie con indici. Il Capitolo 6 e` dedicato
alleorganizzazionisecondarieconindiciperagevolareilrecuperodipiccolisottoin-
siemi di record caratterizzati da condizioni sui valori di attributi non chiavi, mentre
il Capitolo 7 presenta l’idea di base sulle organizzazioni di dati multidimensionali.
IlCapitolo8descriveimetodidiaccessodelgestoredellamacchinafisicaemostra
gli operatori forniti dal sistema JRS per realizzare gli operatori fisici dei piani d’ac-
cessogeneratidall’ottimizzatoredelleinterrogazioni.ICapitoli9e10sonodedicati
alla gestione delle transazioni e presentano sia le strutture dati che gli algoritmi per
proteggere i dati da malfunzionamenti e da interferenze indesiderate in caso di ac-
cessi concorrenti. I Capitoli 11 e 12 sono dedicati agli operatori fisici del JRS che
con opportuni algoritmi implementano gli operatori dell’algebra relazionale estesa
per trattare l’SQL, e poi come sono utilizzati dall’ottimizzatore delle interrogazioni
pergenerareunbuonpianofisicopereseguireun’interrogazioneSQL.Infine,ilCa-
pitolo 13 descrive le soluzioni per la progettazione fisica e la messa a punto di basi
didati.
Ringraziamenti
Desideroringraziareiseguentistudentichemihannosegnalatoimprecisionierefusi
nelleprimeversionideltesto:P.Barra,M.Idini,G.LoConteeL.Morlino.
Capitolo 1
`
FUNZIONALITA E
ARCHITETTURA DEI DBMS
Il capitolo e` dedicato a una presentazione generale dell’architettura dei sistemi per
basididati(DBMS).Vienedataunabrevedescrizionedellefunzionalita` deimoduli
principali di un DBMS e indicati i capitoli successivi nei quali verranno trattati i
problemidaaffrontareperlalororealizzazioneconlerelativesoluzioni.
1.1 I DBMS
L’usopiu` comunedellatecnologiainformaticae` perl’archiviazioneerecuperodiin-
formazionirappresentatecomedaticonunastrutturapredefinitaecampiconformati
diversi, tipo numeri, caratteri, testi, immagini, grafica, video e audio. La tecnologia
impiegatae` principalmentequelladellebasididati,disponibileormaisuognitipodi
elaboratoreespessoatitologratuito.
Unabasedidatie` unacollezionediinsiemiomogeneididati,fraiqualisonodefi-
nitedellerelazioni,memorizzatasuunamemoriapermanenteedutilizzabiletramite
un DBMS (Data Base Management System), un software dedicato particolarmente
complessodovendooffrireleseguentifunzionalita` principali:
1. Unlinguaggioperladefinizionedelloschemadiunabasedidati,unaraccoltadi
definizionichedescrivonolastrutturadeidati,lerestrizionisuivaloriammissibili
dei dati (vincoli d’integrita`), le relazioni esistenti fra gli insiemi, e a volte anche
alcune operazioni eseguibili sui dati. La struttura dei dati e le relazioni sono de-
scritte nello schema con opportuni meccanismi di astrazione che dipendono dal
modellodeidati(datamodel)adottatodalDBMS.
2. Una varieta` di strutture per la memorizzazione e il recupero efficiente di grandi
quantita` didatiinmemoriapermanente.
3. Unlinguaggioperconsentireadutentiautorizzati,interattivamenteodaprogram-
mi,dimemorizzareemodificareidati,rispettandoivincolidefinitinelloschema,
oppure di recuperare rapidamente sottoinsiemi dei dati interessanti a partire da
unaspecificaparzialedellelorocaratteristiche.
4. Un meccanismo di transazioni per proteggere i dati da malfunzionamenti hard-
ware e software e da interferenze indesiderate durante l’accesso concorrente da
partedipiu` utenti.
2 CAPITOLO1 Funzionalita` earchitetturadeiDBMS (cid:13)c 88-08-7270
Lebasididati(BD)eiDBMSsipossonostudiaredapuntidivistadiversiaseconda
delle esigenze delle persone che devono farne uso. Tralasciando gli utenti delle ap-
plicazioni,aiqualinone` richiestanessunacompetenzaspecifica,glialtrisipossono
classificarenelleseguenticategorie:
– Utenti non programmatori: sono interessati a come si usa un DBMS interattiva-
menteperarchiviare,modificareerecuperaredatiorganizzatiinBD.
– ProgettistidiBD:sonointeressatiacomesiprogettaunaBDeleapplicazioniche
nefannouso.
– Programmatori di applicazioni che usano BD: sono interessati a come si usa un
DBMSdaprogrammipersviluppareleapplicazionicheconsentonoadutentinon
specialisticidisvolgerecompitipredefiniti.
– AmministratoridiBD:sonointeressatiacomesiinstalla,simantieneinesercizio
esimetteapuntounaBDpergarantireleprestazionidesideratealleapplicazioni
cheusanoidati.
– RealizzatoridiDBMS:sonointeressatiall’architetturadiunDBMSeallestrutture
ealgoritmifondamentaliadattiarealizzarelesuefunzionalita`.
Inquestolibrol’attenzionee` sucomesirealizzanoiDBMS,assumendocheillettore
abbiagia` unaconoscenzadellebasididatialmenosecondoiprimiduepuntidivista,
al livello di approfondimento trattato, ad esempio, in [Albano et al., 2005] o in altri
testi della stessa natura citati nelle note bibliografiche. Come DBMS di riferimento
si considerano i sistemi relazionali, oggetto di studio a partire dagli anni ’70 e per i
qualisonostatipropostesoluzioniormaidiventateclassicheediriferimentoperogni
altrotipodisistema.
La conoscenza delle strutture ed algoritmi discussi piu` avanti e` utile non solo per
coloro che dovranno realizzare moduli con le funzionalita` tipiche di quelli usati dai
DBMS,maanchepercolorochedovrannoamministrarebasididatieinterveniresul
loro schema o sui parametri del DBMS a disposizione per migliorare le prestazioni
delleapplicazioni.
Nelseguitoverra`presentataun’architetturaperDBMSrelazionaliefattaunabreve
descrizione delle funzionalita` dei vari moduli, la cui realizzazione sara` oggetto dei
prossimicapitoli.
1.2 Architettura dei DBMS
Come un linguaggio di programmazione trasforma un calcolatore in una macchina
astrattalecuicaratteristicheefunzionalita`sonodeterminatedallinguaggioedalsoft-
waredisupporto,cos`ıillinguaggioperladefinizioneeusodibasididatitrasforma
uncalcolatoreinunamacchinaastrattaperbasididati.
E` uso suddividere una macchina astratta per basi di dati in una macchina astratta
delmodellologicodeidati(perbrevita` macchinalogica)eunamacchinaastrattadel
modellofisicodeidati(perbrevita` macchinafisica)(Figura1.1).
Lamacchinafisicaprevedeimoduliperl’accessoelamodificadeidatipermanenti.
Neisistemirealilefunzionalita` diquestimodulinonsononettamenteseparatecome
lafigurapotrebbefarpensare,maquestaschematizzazioneconsentedicomprendere
megliogliscopidiognunodiessi.
Siesaminabrevementeognimodulodescrivendoillivellodiastrazionefornitoele
funzionalita` cherendonodisponibiliaglialtrimoduli.
– Il gestore della memoria permanente (storage manager) offre una visione di essa
come un insieme di basi di dati ognuna costituita da un insieme di file di pagine