Costruire 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