|
|
| << | < | > | >> |IndicePrefazione xiii 1 Introduzione ai sistemi di basi di dati 3 1.1 Gestione dei dati 4 1.2 Una prospettiva storica 5 1.3 File system verso DBSM 7 1.4 Vantaggi di un DBMS 8 1.5 Descrivere e memorizzare dati in un DBMS 9 1.5.1 Il modello relazionale 10 1.5.2 Livelli di astrazione in un DBMS 11 1.5.3 Indipendenza dei dati 13 1.6 Interrogazioni in un DBMS 14 1.7 Gestione delle transazioni 15 1.7.1 Esecuzione concorrente di transazioni 16 1.7.2 Transazioni incomplete e crash di sistema 17 1.7.3 Punti da ricordare 17 1.8 Struttura di un DBMS 17 1.9 Persone che lavorano con le basi di dati 19 1.10 Domande di riepilogo 20 Esercizi 21 Esercizi basati su progetto 22 Note bibliografiche 22 2 Il modello relazionale 23 2.1 Introduzione al modello relazionale 25 2.1.1 Creare e modificare relazioni usando SQL 27 2.2 Vincoli di integrità sulle relazioni 29 2.2.1 Vincoli di chiave 30 2.2.2 Vincoli di chiave esterna 31 2.2.3 Vincoli generali 33 2.3 Applicazione dei vincoli di integrità 34 2.3.1 Transazioni e vincoli 36 2.4 Interrogare basi di dati relazionali 38 2.5 Introduzione alle viste 39 2.5.1 Viste, indipendenza dei dati, sicurezza 40 2.5.2 Aggiornamenti delle viste 40 2.6 Distruggere/alterare tabelle e viste 44 2.7 Domande di riepilogo 44 Esercizi 45 Esercizi basati su progetto 46 Note bibliografiche 46 3 Algebra relazionale 49 3.1 Introduzione 49 3.2 Algebra relazionale 51 3.2.1 Selezione e proiezione 51 3.2.2 Operazioni sugli insiemi 53 3.2.3 Rinominare i campi 54 3.2.4 Join 55 3.2.5 Divisione 57 3.2.6 Altri esempi di interrogazioni algebriche 58 3.3 Domande di riepilogo 64 Esercizi 65 Note bibliografiche 66 4 SQL 67 4.1 Introduzione 68 4.1.1 Organizzazione del capitolo 69 4.2 La forma di una interrogazione SQL base 70 4.2.1 Esempi di interrogazioni SQL di base 74 4.2.2 Espressioni e stringhe nel comando SELECT 76 4.3 UNION, INTERSECT e EXCEPT 78 4.4 Interrogazioni annidate 81 4.4.1 Introduzione alle interrogazioni annidate 81 4.4.2 Interrogazioni annidate correlate 83 4.4.3 Operatori di confronto tra insiemi 84 4.4.4 Altri esempi di interrogazioni annidate 85 4.5 Operatori di aggregazione 87 4.5.1 Le clausole GROUP BY e HAVING 90 4.5.2 Ulteriori esempi di interrogazioni con aggregazione 94 4.6 Valori null 97 4.6.1 Confronti usando valori null 98 4.6.2 Operatori logici AND, OR e NOT 98 4.6.3 Impatto sui costrutti SQL 98 4.6.4 Join esterni 99 4.6.5 Impedire l'uso dei valori null 100 4.7 Vincoli di integrità complessi in SQL 100 4.7.1 Vincoli su singola tabella 100 4.7.2 Vincoli di dominio e tipi distinti 101 4.7.3 Asserzioni: VI su più tabelle 102 4.8 Trigger e basi di dati attive 103 4.8.1 Esempi di trigger in SQL 104 4.9 Progetto di basi di dati attive 105 4.9.1 Perché i trigger possono essere difficili da capire 105 4.9.2 Vincoli verso trigger 106 4.9.3 Altri usi dei trigger 106 4.10 Domande di riepilogo 107 Esercizi 108 Note bibliografiche 112 5 Il modello Entità-Relazione 115 5.1 Progettazione di basi di dati e diagrammi ER 116 5.1.1 Oltre la progettazione ER 117 5.2 Entità, attributi e insiemi di entità 118 5.3 Relazioni e insiemi di relazioni 119 5.4 Ulteriori caratteristiche del modello ER 122 5.4.1 Vincoli di chiave 122 5.4.2 Vincoli di partecipazione 124 5.4.3 Entità deboli 124 5.4.4 Gerarchie di classi 126 5.4.5 Aggregazione 128 5.5 Progettazione concettuale con il modello ER 129 5.5.1 Entità verso attributo 129 5.5.2 Entità verso relazione 131 5.5.3 Relazioni binarie verso relazioni ternarie 132 5.5.4 Aggregazione verso relazioni ternarie 134 5.6 Progettazione concettuale per grandi organizzazioni 134 5.7 Case study: la libreria su Internet 135 5.7.1 Analisi dei requisiti 135 5.7.2 Progettazione concettuale 136 5.8 Domande di riepilogo 137 Esercizi 137 Note bibliografiche 140 6 La progettazione logica: dallo schema ER al relazionale 141 6.1 Da insiemi di entità a tabelle 142 6.2 Da insiemi di relazioni (senza vincoli) a tabelle 142 6.3 Traduzione di insiemi di relazioni con vincoli di chiave 144 6.4 Traduzione di insiemi di relazioni con vincoli di partecipazione 146 6.5 Traduzione di insiemi di entità deboli 148 6.6 Traduzione delle gerarchie di classi 149 6.7 Traduzione di diagrammi ER con aggregazione 150 6.8 Da ER a relazionale: altri esempi 151 6.9 Case study: la libreria su Internet 152 6.10 Domande di riepilogo 154 Esercizi 155 Note bibliografiche 155 7 La normalizzazione 157 7.1 Introduzione al raffinamento degli schemi 158 7.1.1 Problemi causati dalla ridondanza 158 7.1.2 Decomposizioni 160 7.1.3 Problemi relativi alla decomposizione 161 7.2 Dipendenze funzionali 162 7.3 Ragionare sulle DF 163 7.3.1 Chiusura di un insieme di DF 163 7.3.2 Chiusura degli attributi 165 7.4 Forme normali 165 7.4.1 Forma normale di Boyce-Codd 166 7.4.2 Terza forma normale 167 7.5 Proprietà delle decomposizioni 169 7.5.1 Decomposizione senza-perdita 169 7.5.2 Decomposizione con conservazione delle dipendenze 171 7.6 Normalizzazione 172 7.6.1 Decomposizione in BCNF 172 7.6.2 Decomposizione in 3NF 174 7.7 Raffinamento dello schema nella progettazione di basi di dati 178 7.7.1 Vincoli su un insieme di entità 179 7.7.2 Vincoli su un insieme di relazioni 179 7.7.3 Identificare gli attributi delle entità 180 7.7.4 Identificare gli insiemi di entità 181 7.8 Case study: la libreria su Internet 182 7.9 Domande di riepilogo 184 Esercizi 184 Note bibliografiche 187 8 Applicazioni tradizionali 191 8.1 Accedere alle basi di dati dalle applicazioni 192 8.1.1 SQL incapsulato 193 8.1.2 Cursori 195 8.1.3 SQL dinamico 199 8.2 Introduzione a JDBC 199 8.2.1 Architettura 200 8.3 Classi e interfacce JDBC 202 8.3.1 Gestione dei driver JDBC 202 8.3.2 Connessioni 202 8.3.3 Esecuzione dei comandi SQL 204 8.3.4 ResultSet 205 8.3.5 Eccezioni e warning 207 8.3.6 Esame dei metadati della base di dati 208 8.4 SQLJ 209 8.4.1 Scrivere codice SQLJ 211 8.5 Stored procedure 212 8.5.1 Creare una semplice stored procedure 213 8.5.2 Chiamare le stored procedure 214 8.5.3 SQL/PSM 215 8.6 Case study: la libreria su Internet 217 8.7 Domande di riepilogo 219 Esercizi 220 Esercizi basati su progetto 221 Note bibliografiche 221 9 Applicazioni Internet 223 9.1 Introduzione 223 9.2 Concetti di base su Internet 224 9.2.1 Uniform Resource Identifiers 224 9.2.2 Hypertext Transfer Protocol (HTTP) 226 9.3 Documenti HTML 228 9.4 Documenti XML 229 9.4.1 Introduzione all'XML 230 9.4.2 DTD di XML 233 9.4.3 DTD specifici per un dominio 236 9.5 L'architettura delle applicazioni three-tier 237 9.5.1 Architetture single-tier e client-server 238 9.5.2 Architetture a tre livelli 240 9.5.3 Vantaggi dell'architettura a tre livelli 242 9.6 Il livello di presentazione 243 9.6.1 Moduli HTML 243 9.6.2 JavaScript 246 9.6.3 Fogli di stile 248 9.7 Il livello intermedio 250 9.7.1 CGI: Common Gateway Interface 251 9.7.2 Application server 253 9.7.3 Servlet 254 9.7.4 JavaServer Pages (JSP) 256 9.7.5 Mantenimento dello stato 257 9.8 Case study: la libreria su Internet 260 9.9 Domande di riepilogo 263 Esercizi 263 Esercizi basati su progetto 266 Note bibliografiche 267 10 File e indici 271 10.1 Memorizzazione esterna dei dati 272 10.2 Organizzazioni dei file e indicizzazione 273 10.2.1 Indici clustered 274 10.2.2 Indici primari e secondari 275 10.3 Strutture di dati per gli indici 276 10.3.1 Indici hash 276 10.3.2 Indici ad albero 277 10.4 Confronto tra organizzazioni di file 279 10.4.1 Modello di costo 280 10.4.2 File heap 281 10.4.3 File ordinati 282 10.4.4 File clustered 283 10.4.5 File heap con indice non clustered ad albero 284 10.4.6 File heap con indice hash non clustered 286 10.4.7 Confronto dei costi di I/O 287 10.5 Indici e miglioramento delle prestazioni 288 10.5.1 Impatto del carico di lavoro 288 10.5.2 Organizzazione con indici clustered 289 10.5.3 Chiavi di ricerca composite 291 10.5.4 Specificazione degli indici in SQL:1999 295 10.6 Domande di riepilogo 295 Esercizi 296 Note bibliografiche 298 11 Esecuzione delle interrogazioni 299 11.1 Il catalogo di sistema 300 11.1.1 Informazioni nel catalogo 301 11.2 Introduzione alla valutazione degli operatori 303 11.2.1 Tre tecniche comuni 303 11.2.2 Percorsi di accesso 304 11.3 Algoritmi per operazioni relazionali 306 11.3.1 Selezione 306 11.3.2 Proiezione 306 11.3.3 Join 307 11.3.4 Altre operazioni 309 11.4 Introduzione all'ottimizzazione delle interrogazioni 309 11.4.1 Piani di valutazione delle interrogazioni 310 11.4.2 Interrogazioni con operatori multipli: valutazione a cascata 312 11.4.3 L'interfaccia iteratore 313 11.5 Piani alternativi: un esempio motivante 314 11.5.1 Anticipare le selezioni 314 11.5.2 Usare gli indici 316 11.6 Cosa fa un tipico ottimizzatore 319 11.6.1 Piani alternativi considerati 319 11.6.2 Stima dei costi di un piano 320 11.7 Domande di riepilogo 321 Esercizi 322 Note bibliografiche 323 12 Progettazione fisica 325 12.1 Introduzione alla progettazione fisica delle basi di dati 326 12.1.1 Carichi di lavoro delle basi di dati 327 12.1.2 Progettazione fisica e decisioni di ottimizzazione 328 12.1.3 Necessità dell'ottimizzazione delle basi di dati 328 12.2 Linee guida per la selezione degli indici 329 12.3 Semplici esempi di selezione degli indici 331 12.4 Clustering e indicizzazione 333 12.4.1 Co-clustering di due relazioni 334 12.5 Indici che permettono piani basati solo sugli indici 337 12.6 Strumenti di aiuto per la selezione dell'indice 338 12.6.1 Selezione automatica degli indici 338 12.7 Cenni sull'ottimizzazione delle basi di dati 339 12.7.1 Ottimizzazione degli indici 340 12.7.2 Ottimizzazione dello schema logico 341 12.7.3 Ottimizzazione di interrogazioni e viste 342 12.8 Scelte nell'ottimizzazione dello schema logico 343 12.8.1 Decidere per una forma normale più debole343 12.8.2 Denormalizzazione 344 12.8.3 Scelta della decomposizione 344 12.8.4 Partizionamento verticale di relazioni BCNF 345 12.8.5 Decomposizione orizzontale 346 12.9 Scelte nell'ottimizzazione di interrogazioni e viste 347 12.10 Case study: la libreria su Internet 349 12.10.1 Ottimizzazione della base di dati 350 12.11 Domande di riepilogo 351 Esercizi 351 Note bibliografiche 355 13 Gestione delle transazioni 357 13.1 Le proprietà "ACID" 358 13.1.1 Consistenza e isolamento 359 13.1.2 Atomicità e durabilità 360 13.2 Transazioni e programmi 360 13.3 Esecuzione concorrente di transazioni 361 13.3.1 Motivazione per l'esecuzione concorrente 362 13.3.2 Serializzabilità 362 13.3.3 Anomalie dovute a esecuzione concorrente 363 13.3.4 Programmi che coinvolgono transazioni abortite 366 13.4 Controllo di concorrenza basato sui lock 367 13.4.1 Strict 2PL 367 13.4.2 Deadlock 370 13.5 Prestazioni dei protocolli di locking 370 13.6 Supporto alle transazioni in SQL 371 13.6.1 Creare e terminare transazioni 371 13.6.2 Su cosa dobbiamo mettere i lock ? 373 13.6.3 Caratteristiche delle transazioni in SQL 374 13.7 Introduzione al crash recovery 376 13.7.1 Rubare i frame e forzare le pagine 377 13.7.2 Passi relativi al ripristino durante la normale esecuzione 378 13.7.3 Cenni su ARIES 379 13.7.4 Atomicità: implementare il rollback 379 13.8 Domande di riepilogo 379 Esercizi 380 Note bibliografiche 382 Indice analitico 383 |
| << | < | > | >> |Pagina xiiiPrefazione
I sistemi di gestione di basi di dati
(Data Base Management Systems, DBMS)
sono sempre di più strumenti indispensabili per gestire la quantità crescente di
informazioni da memorizzare. La comprensione delle basi di dati è legata
strettamente alla conoscenza dei sistemi di gestione e in egual misura a quella
delle metodologie di progetto. Questo testo, che è la versione italiana riveduta
di un libro in lingua inglese di larghissimo uso nelle Università statunitensi e
di altri paesi, tratta entrambi gli aspetti.
In particolare, il testo illustra in maniera approfondita la progettazione
concettuale e logica delle basi di dati così come analizza le caratteristiche
principali dei DBMS e parla anche degli aspetti di progettazione (per esempio
fisica) che dipendono da come il DBMS effettivamente memorizza i dati, processa
le interrogazioni, gestisce le transazioni ecc. Inoltre le basi di dati vengono
viste anche dal punto di vista sistemistico e architetturale, trattando lo
sviluppo di applicazioni (sia
standalone
sia Internet).
Organizzazione dei Contenuti Il libro è organizzato in quattro parti: 1. Fondamenti - Inizialmente vengono introdotti i principi fondamentali dei DBMS. Viene poi descritto formalmente il modello di dati attualmente più usato nei DBMS, cioè il modello relazionale, con il corrispondente linguaggio di interrogazione, cioè l'algebra relazionale. L'utilizzo concreto del modello nei DBMS è illustrato descrivendo lo Structured Query Language (SQL), che è il linguaggio per basi di dati relazionali commerciali più largamente usato, e uno standard de facto. L'attuale standard ANSI/ISO per l'SQL, ovvero SQL:1999, non è ancora supportato in pieno dai DBMS che, al contrario, supportano lo standard precedente, SQL-92. SQL:1999 è molto simile a SQL-92 per quanto riguarda le funzioni principali. L'esposizione dell'SQL nel Capitolo 4 è coerente sia con l'SQL-92 sia con l'SQL:1999, ed evidenzia esplicitamente ogni aspetto che differisce nelle due versioni. 2. Progettazione di basi di dati - Viene illustrato in dettaglio il processo di progettazione concettuale e logica di una base di dati. A questo scopo viene innanzitutto introdotto il modello attualmente più utilizzato nella fase di progettazione concettuale, cioè il modello Entità-Relazione, e viene presentata una metodologia per il progetto concettuale. Viene poi mostrato come dallo schema concettuale di una base di dati si passa allo schema relazionale, evidenziando anche in termini di quali costrutti SQL vengano tradotti i vincoli di integrità fissati nello schema concettuale. Infine, nel Capitolo 7 viene discusso come alcuni vincoli di integrità non siano espressi nello schema concettuale e di come lo schema relazionale possa essere ulteriormente raffinato per soddisfare tali vincoli secondo le regole della teoria della normalizzazione. 3. Sviluppo di Applicazioni - In questo capitolo la base di dati e il DBMS vengono considerati come componenti di architetture software più complesse, trattando vari meccanismi, quali JDBC, SQL dinamico e stored procedure, che consentono l'integrazione con altre applicazioni, nonché introducendo i concetti che sono alla base dello sviluppo di applicazioni su Internet, come architetture three-tier, XML e HTML. 4. Dentro il DBMS - Vengono descritti l'effettiva gestione dei dati e funzionamento interno del DBMS, dal punto di vista delle strutture dati utilizzate, delle modalità di valutazione e ottimizzazione delle interrogazioni e del controllo di concorrenza. Inoltre, viene mostrato come il funzionamento del DBMS condiziona le scelte dell'ultima fase di progettazione di una base di dati, la progettazione fisica e la conseguente ottimizzazione delle prestazioni. | << | < | > | >> |Pagina 41.1 Gestione dei datiScopo di questo libro è presentare una introduzione approfondita ai sistemi di gestione di basi di dati, con un'enfasi particolare su come progettare una base di dati e usare effettivamente un DBMS. Non sorprende che molte decisioni sull'uso di un DBMS per una data applicazione dipendano da quali funzionalità siano più efficacemente supportate dal DBMS stesso. Perciò per usare bene un DBMS è anche necessario capire come esso lavora. Ci sono molti tipi di sistemi di gestione di basi di dati, ma in questo libro ci concentriamo sui sistemi di basi di dati relazionali (RDBMS), che oggi sono di gran lunga il tipo di DBMS dominante. Nei capitoli centrali di questo libro risponderemo alle seguenti domande: • Progettazione di basi di dati e sviluppo di applicazioni: come può un utente descrivere un'organizzazione del mondo reale (per esempio una università) in termini di dati memorizzati in un DBMS? Che fattori bisogna considerare per decidere l'organizzazione dei dati? Come possiamo sviluppare applicazioni che si basino su un DBMS? (Capitoli 2, 5, 6, 7, 8, 9, 12) • Analisi dei dati: come può un utente rispondere a domande sull'impresa impostando delle interrogazioni sui dati nel DBMS? (Capitoli 3 e 4) • Concorrenza e robustezza: come fa un DBMS a permettere a molti utenti di accedere ai dati concorrentemente, e come protegge i dati in caso di guasti al sistema? (Capitolo 13) • Efficienza e scalabilità: come fa un DBMS a memorizzare grandi insiemi di dati e a rispondere efficientemente a domande su di essi? (Capitoli 10, 11) | << | < | > | >> |Pagina 51.2 Una prospettiva storicaDai primi giorni dei computer, memorizzare e manipolare dati è stato uno degli obiettivi principali. Il primo DBMS per uso generico, progettato da Charles Bachman alla General Electric nei primi anni sessanta, fu chiamato Integrated Data Store. Esso costituì la base per il modello di dati reticolare che fu standardizzato dalla Conferenza sui Linguaggi per Sistemi di Dati (CODASYL) e influenzò fortemente i sistemi di basi di dati di quegli anni. Bachman fu il primo a ricevere, nel 1973, l'ACM Turing Award (il premio informatico equivalente al Nobel) per il suo lavoro nel campo delle basi di dati. Sul finire degli anni sessanta, l'IBM sviluppò il DBMS Information Management System (IMS), usato ancora oggi in molte grandi installazioni. L'IMS fornì la base per una struttura alternativa di rappresentazione dei dati chiamata modello di dati gerarchico. Il sistema SABRE per prenotazioni aeree fu sviluppato congiuntamente dalla American Airlines e dall'IBM circa nello stesso periodo, e permetteva a più persone di accedere agli stessi dati attraverso una rete di computer. È interessante osservare che oggi lo stesso sistema SABRE è usato da agenzie di viaggio molto popolari nel Web come Travelocity. Nel 1970 Edgar Codd, ai Laboratori di Ricerca di San Jose, propose una nuova struttura di rappresentazione dei dati chiamata modello di dati relazionale. Esso diventò uno spartiacque nello sviluppo di sistemi di basi di dati, provocando il rapido sviluppo di diversi DBMS basati su questo modello, insieme a un ricco corpo di risultati teorici che diedero a questo settore solide fondamenta. Codd vinse nel 1981 il Turing Award per il suo pionieristico lavoro. I sistemi di basi di dati maturarono come disciplina accademica, e la popolarità dei DBMS relazionali cambiò il panorama commerciale. I loro vantaggi furono ampiamente riconosciuti, e l'uso dei DBMS per gestire i dati aziendali divenne una pratica standard. Negli anni ottanta il modello relazionale consolidò la sua posizione di dominanza. Il paradigma DBMS e i sistemi di basi di dati continuarono a diffondersi sempre più. Il linguaggio di interrogazione SQL per basi di dati relazionali, sviluppato come parte del progetto System R dell'IBM, è divenuto il linguaggio di interrogazione standard. L'SQL è stato standardizzato sul finire degli anni ottanta, e lo standard attuale, SQL:1999, è stato adottato dall'Istituto Americano per gli Standard Nazionali (ANSI) e dall'Organizzazione Internazionale per la Standardizzazione (ISO). È da notare che la forma di programmazione concorrente maggiormente usata è l'esecuzione concorrente di programmi (chiamati transazioni) nelle basi di dati. Gli utenti scrivono programmi come se questi dovessero essere eseguiti da soli, e la responsabilità di eseguirli in concorrenza è lasciata al DBMS. James Gray vinse nel 1999 il Turing Award per il suo contributo alla gestione delle transazioni nelle basi di dati. Nei tardi anni ottanta e negli anni novanta furono fatti progressi in molte aree dei sistemi di basi di dati. Fu svolta una considerevole ricerca per determinare linguaggi di interrogazione più potenti e modelli di dati più ricchi, con particolare enfasi sul supporto all'analisi complessa dei dati da parte di un'impresa. Diversi produttori (per esempio IBM con il DB2, Oracle con la versione 8, Informix con UDS) diedero ai loro sistemi l'abilità di memorizzare nuovi tipi di dati come immagini e testo, e di eseguire interrogazioni più complesse. Sistemi specializzati sono stati sviluppati da diverse case per creare data warehouse, per consolidare i dati provenienti da basi di dati diverse e per eseguire analisi specializzate. Un interessante fenomeno è l'apparizione di diversi pacchetti di pianificazione delle risorse dell'impresa (ERP) e di pianificazione delle risorse gestionali (MRP), che aggiungono a un DBMS uno strato sostanziale di funzionalità orientate all'applicazione. Pacchetti largamente usati includono sistemi Baan, Oracle, PeopleSoft, SAP e Siebel. Questi pacchetti identificano un insieme di compiti comuni (per esempio gestione di inventari, pianificazione delle risorse umane, analisi finanziaria) richiesti a un gran numero di organizzazioni, e forniscono uno strato applicativo generico per eseguire tali compiti. I dati sono memorizzati in un DBMS relazionale, e lo strato applicativo può essere personalizzato per le diverse società, portando a un generico abbassamento dei costi per queste ultime, a paragone del costo della creazione di uno strato applicativo partendo da zero. Fatto ancora più significativo, forse, i DBMS sono entrati nell'era di Internet. Mentre la prima generazione di siti registrava i dati esclusivamente in file del sistema operativo, l'uso di un DBMS per memorizzare i dati e accedervi da un browser sta diventando sempre più comune. Le interrogazioni sono generate attraverso form accessibili via Web e le risposte sono formattate usando un linguaggio a marcatori come l'HTML per essere facilmente visualizzate nel browser. Tutti i venditori di basi di dati stanno aggiungendo ai loro DBMS caratteristiche mirate a rendere più semplice il loro impiego su Internet. La gestione delle basi di dati continua a crescere di importanza man mano che i dati sono portati on line e resi sempre più accessibili dalle reti di computer. Oggi il settore è animato da visioni eccitanti come basi di dati multimediali, video interattivi, dati in streaming, librerie digitali, una moltitudine di progetti scientifici come il tentativo di mappatura del genoma umano e il progetto Sistema di Osservazione Terrestre della NASA, e il desiderio delle compagnie di consolidare i loro processi decisionali e scavare nei loro depositi di dati per ottenere informazioni utili sui loro affari. Commercialmente, i sistemi di gestione di basi di dati rappresentano uno dei più grandi e più vigorosi segmenti del mercato. Quindi lo studio dei sistemi di basi di dati può essere fortemente remunerativo in più di un senso! | << | < | > | >> |Pagina 81.4 Vantaggi di un DBMSUsare un DBMS per gestire i dati ha molti vantaggi: • Indipendenza dei dati: i programmi applicativi, in teoria, non dovrebbero essere esposti ai dettagli della rappresentazione e della memorizzazione dei dati. Il DBMS fornisce una vista astratta dei dati che nasconde tali dettagli. • Accesso efficiente ai dati: un DBMS usa una varietà di tecniche sofisticate per memorizzare e reperire efficientemente i dati. Questa caratteristica è importante specialmente se i dati sono registrati in dispositivi di memorizzazione esterni. • Integrità e sicurezza dei dati: se ai dati si accede sempre tramite il DBMS, quest'ultimo può garantire dei vincoli di integrità. Per esempio, prima di inserire informazioni sul salario di un impiegato, il DBMS può controllare che non si ecceda il budget del dipartimento. Inoltre, può garantire controlli di accesso che governano la visibilità dei dati per differenti classi di utenti. • Amministrazione dei dati: quando più utenti condividono i dati, la centralizzazione dell'amministrazione dei dati può offrire miglioramenti significativi. Professionisti esperti che comprendono la natura dei dati che gestiscono, e anche come questi dati vengono usati dai diversi gruppi di utenti, possono avere la responsabilità di organizzarne la rappresentazione, allo scopo di minimizzare la ridondanza, e di ottimizzarne la memorizzazione, così da rendere efficiente il reperimento delle informazioni. • Accesso concorrente e ripristino da crash: un DBMS organizza gli accessi concorrenti ai dati in modo tale che ogni utente possa pensare di essere l'unico, in quel momento, a usarli. Inoltre, il DBMS protegge gli utenti dagli effetti dei guasti del sistema. • Riduzione del tempo di sviluppo delle applicazioni: chiaramente, il DBMS fornisce importanti funzioni che sono comuni a molte applicazioni che accedono ai suoi dati. Questo, congiuntamente all'interfaccia di alto livello con i dati, facilita il rapido sviluppo di applicazioni. È anche probabile che le applicazioni DBMS siano più robuste di analoghe applicazioni stand alone, perché molti compiti importanti sono gestiti dal DBMS stesso (e non devono essere corretti e testati nell'applicazione).
Dati tutti questi vantaggi, c'è qualche ragione per
non
usare un DBMS? A volte sì. Un DBMS è un
software
complesso, ottimizzato per certi tipi di carichi lavorativi (come rispondere a
interrogazioni complesse o gestire molte richieste concorrenti), e le sue
prestazioni possono non essere adeguate per certe applicazioni particolari.
Gli esempi comprendono applicazioni con rigidi vincoli in tempo reale, o con un
certo numero di operazioni critiche ben definite, per le quali deve essere scritto del
codice efficiente opportuno. Un'altra ragione per non usare un DBMS è che
un'applicazione può aver bisogno di manipolare i dati in modi non supportati dal
linguaggio di interrogazione. In una tale situazione, la vista astratta dei dati
presentata dal DBMS non soddisfa le necessità dell'applicazione, e in realtà
diventa un ostacolo. Per esempio, le basi di dati relazionali non supportano
l'analisi flessibile dei dati testuali (sebbene le case produttrici stiano
attualmente estendendo i loro prodotti in questa direzione).
|