Basi di dati: Strutture e algoritmi
Antonio Albano
Limpiego più comune degli elaboratori elettronici è per il trattamento automatico di grandi insiemi di dati permanenti, cioè per applicazioni in cui:
Queste applicazioni possono essere di complessità molto diversa: ad un estremo si trovano quelle che prevedono la gestione di semplici schedari su calcolatori personali, mentre allopposto si trovano i sistemi informatici di supporto a sistemi informativi complessi, realizzati su grandi calcolatori con sistemi per la gestione di basi di dati. In tutti i casi, però, queste applicazioni presentano un aspetto comune: le loro prestazioni dipendono principalmente da come vengono organizzati i dati in memoria permanente. Infatti, sebbene in alcuni casi possa essere presente una complessa elaborazione dei dati in memoria temporanea, ad esempio per analisi statistiche, nella quasi totalità dei casi le prestazioni dipendono dal tempo di trasferimento dei dati, da e verso la memoria permanente, che è molto più alto di quello richiesto da ogni altra operazione in memoria temporanea. Infatti un accesso a dischi rigidi per grandi sistemi richiede circa 10-2 secondi e un accesso a dischi flessibili per calcolatori personali richiede circa 10-1 secondi, mentre unaccesso alla memoria temporanea richiede circa 10-7 secondi, quindi un secondo di elaborazione dati in memoria temporanea equivale a 100.000 secondi (circa 28 ore) di elaborazione dati in un disco rigido.
Per sviluppare con competenza questo tipo di applicazioni è importante conoscere le tecniche di organizzazione dei dati in memoria permanente e le tecniche di valutazione di unorganizzazione, al fine di prevedere le prestazioni delle operazioni prioritarie già note. Queste conoscenze sono importanti affinché il progettista possa certificare che la soluzione adottata consente la più rapida esecuzione delle operazioni prioritarie e quindi può garantire che esse siano eseguibili con le prestazioni desiderate. Se il tipo di sistema impiegato prevede solo la gestione di archivi, questa conoscenza costituisce il necessario bagaglio culturale che consente di affrontare il problema da esperti, ma se il tipo di sistema prevede la gestione di basi di dati, la conoscenza di queste tecniche di organizzazione di dati consente sia di comprendere a fondo le caratteristiche del sistema, sia di affrontare consapevolmente la definizione dello schema interno, cioè la scelta dellorganizzazione fisica della base di dati.
Valutazione delle prestazioni
Si vedrà come i dati possano essere organizzati in modi diversi e come la scelta della soluzione migliore vada fatta cercando di ottimizzare certi indici di prestazione, come lo spazio occupato e il tempo per eseguire le operazioni prioritarie.
Per fare una scelta, il valore degli indici di prestazione va stimato per ogni soluzione presa in considerazione. Ad esempio si vedrà che esistono soluzioni diverse che portano ad operazioni di ricerca con tempi variabili fra pochi secondi e decine di minuti, per cui, per evitare sorprese, è molto importante valutare attentamente una soluzione prima di procedere a costose realizzazioni che risulterebbero inutilizzabili.
Per semplificare la valutazione di unorganizzazione, come indici di prestazione si prenderanno:
Questi indici sono sufficienti per scegliere la soluzione migliore fra più alternative, ma il numero di accessi agli archivi non consente di fare una stima accurata del tempo di esecuzione delle operazioni, che dipende dal modello del sistema di elaborazione e in particolare dai parametri che caratterizzano il sistema operativo e il sistema di archiviazione.
Approccio
Si parte con unanalisi delle organizzazioni basilari, passando poi a quelle più complesse usate nei sistemi per la gestione di basi di dati per organizzare insiemi di dati e associazioni fra di essi. Succesivamente si illustrano le caratteristiche principali dei moduli per la gestione della memoria permanente di un sistema di gestione di basi di dati, per la gestione delle transazioni e per lottimizzazione dellesecuzione delle operazioni dei sistemi relazionali. Nellultimo capitolo, infine, si mostra un approccio alla scelta delle strutture di accesso per agevolare le operazioni sui dati. Gli argomenti sono presentati soffermandosi prima sulle caratteristiche generali delle soluzioni, e poi valutandone le prestazioni.
Udienza
Il libro è stato pensato principalmente per studenti dei corsi di laurea in informatica delle facoltà di scienze e ingegneria, con conoscenze di strutture dati in memoria temporanea e di tecniche di programmazione. Per come sono presentati gli argomenti, il materiale può essere usato sia in corsi introduttivi, soffermandosi sugli aspetti generali delle soluzioni, sia in corsi più avanzati dove lattenzione sarà posta anche sulle tecniche di valutazione delle prestazioni. Il capitolo finale sulla progettazione fisica tratta invece un argomento che di solito si affronta in corsi sulla progettazione di basi di dati.
Organizzazione del libro
Nel primo capitolo vengono presentati i concetti generali sulla modellazione delle informazioni e sui fattori da prendere in considerazione nella progettazione di unorganizzazione dei dati in archivi.
Il capitolo 2 si sofferma sulle caratteristiche delle memorie permanenti e sui problemi che si presentano nel loro uso.
Il capitolo 3 è dedicato alla più semplice delle organizzazioni, quella sequenziale, ed al problema dellordinamento di archivi.
Il capitolo 4 tratta diffusamente del primo tipo di organizzazione per grandi insiemi di registrazioni, basata su tecniche hash sia statiche che dinamiche, al fine di agevolare il recupero di una registrazione conoscendone la chiave primaria.
Il capitolo 5 continua lanalisi delle organizzazioni del capitolo precedente, prendendo in considerazione le tecniche basate su indici organizzati con strutture ad albero.
Il capitolo 6 è dedicato alle organizzazioni per grandi insiemi di registrazioni al fine di agevolare il recupero di piccoli sottoinsiemi caratterizzati da condizioni logiche sui valori di alcuni attributi delle registrazioni che ne fanno parte.
Il capitolo 7 tratta le organizzzazioni per basi dati e presenta le soluzioni adottate nei sistemi di tipo gerarchico, reticolare, relazionale ed a oggetti, mostrando come le tecniche presentate nei capitoli precedenti vengono combinate in funzione delle caratteristiche del modello dei dati dei vari sistemi.
Il capitolo 8 è dedicato alle organizzazioni per documenti multimediali, in particolare per trattare testi e immagini nei sistemi per il recupero dellinformazione.
Il capitolo 9 è il primo dedicato ai principali moduli dei sistemi per basi di dati e si sofferma sul problema della gestione della memoria, considerando il caso dei sistemi relazionali ed a oggetti.
Il capitolo 10 è dedicato ad un altro modulo dei sistemi per basi di dati, il gestore delle transazioni e della loro esecuzione concorrente in sistemi centralizzati e distribuiti. Vengono presentate sia le strutture che gli algoritmi per proteggere i dati da malfunzionamenti e interferenze indesiderate in caso di accessi concorrenti.
Il capitolo 11 è dedicato al modulo dei sistemi relazionali dedicato allottimizzazione dellesecuzione delle operazioni sui dati, in ambiente centralizzato e distribuito.
Il capitolo 12, infine, è dedicato al problema della progettazione fisica di basi di dati relazionali e reticolari, ovvero al problema di come scegliere le strutture di accesso per ottimizzare le prestazioni delle applicazioni.
Le problematiche vengono trattate supponendo note le caratteristiche dei modelli dei dati e dei linguaggi per basi di dati, sebbene siano stati inclusi dei richiami su queste nozioni per rendere comprensibili gli argomenti. In effetti questo libro è stato pensato in modo congiunto ad un altro in corso di pubblicazione nella stessa collana dove i sistemi per basi di dati vengono trattati in modo complementare dal punto di vista dellutente, mentre sono limitate al massimo le considerazioni su come siano realizzati i sistemi.