Basi di dati e web
Martedì 1 marzo 2016 08:44
Appunti di Alessandro Sperotti
Prof. Claudio Bettini
Esame: Teoria (9 CFU) + Laboratorio (3 CFU)
Per la prova di laboratorio si farà un progetto con PHP/PostGres/SQL
Voto finale: media pesata dei due voti (2/3 Teoria 1/3 Lab) + Bonus di 2 punti per chi fa la teoria a giugno e lab entro luglio.
Struttura dell'esame
Prima parte: quiz a scelta multipla su computer
Seconda parte: esercizi di progettazione concettuale, esercizi di algebra relazionale (?) ed esercizi su SQL
Lab: progetto da fare a casa, una volta in sede d'esame viene chiesto di "cambiare" il progetto secondo il prof.
Prima parte
Gestione delle informazioni
In cosa consiste la gestione delle informazioni in informatica? Per gestione delle informazioni si intende come raccoglierle, come archiviarle e conservarle, come elaborarle ed infine come distribuirle (o come "comunicarle").
Le informazioni vengono gestite, "visualizzate" in forme diverse:
- Tramite idee informali (a detta del prof "idee molto confuse")
- Linguaggio naturale (scritto o parlato, ecc.)
- Tramite disegni, grafici e schemi
- Tramite numeri e codici (pensa all'indirizzo "via comelico 39")
Queste informazioni possono venire immagazzinate in vari supporti.
Sistema informativo
Un sistema informativo è la componente di un'organizzazione che gestisce le informazioni di interesse (ossia che servono per gli scopi dell'organizzazione). Un sistema informativo può essere automatizzato o meno.
Nei sistemi informatici le informazioni sono rappresentate attraverso i dati. La differenza tra dato e informazione è che un'informazione può venire rappresentata attraverso i dati. Un dato da solo potrebbe non avere nessun significato: quindi è fondamentale associare un'interpretazione ad ogni dato. I dati sono spesso il risultato di forme di organizzazione e codifica delle informazioni. Ad esempio, il codice fiscale racchiude informazioni anagrafiche di una persona.
Perché i dati?
Spesso la rappresentazione di forme più ricche di informazioni in un calcolatore (delle idee, dei disegni, delle immagini, ecc.) è molto difficile: ora con la tecnologia siamo più facilitati. I dati che vengono utilizzati sono più stabili e persistenti di altri componenti (processi, tecnologie, ruoli umani).
Base Di Dati
Cos'è una base di dati (Database)?
Una base di dati è un insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente. Nella sua definizione più tecnica possiamo definire una base di dati come un insieme di dati gestito da un DBMS (DataBase Management System).
DBMS
Un DBMS (Database Management System) è un sistema che gestisce collezioni di dati grandi, persistenti (hanno un tempo di vita indipendente dalle singole esecuzioni dei programmi che li utilizzano), e condivisi. Le basi di dati sono grandi, nel senso che spesso hanno dimensioni enormi e in genere molto maggiore della memoria centrale disponibile. Le basi di dati sono condivise, ossia che applicazioni e utenti diversi devono poter accedere, secondo opportune modalità. Tramite la condivisione riduciamo la possibilità di ridondanza e inconsistenza.
Una base di dati è una risorsa integrata, condivisa tra più applicazioni. Come conseguenza di questo requisito vi saranno dei meccanismi di autorizzazione e di concorrenza (accesso a più utenti contemporaneamente).
Un Database deve garantire privatezza, affidabilità, efficienza ed efficacia.
- Privatezza: Vengono definiti dei meccanismi di autorizzazione (l'utente A è abilitato ad accedere ad un certo dato mentre l'utente B non può).
- Affidabilità: Resistenza a malfunzionamenti hardware e software: una base di dati è una risorsa pregiata, e deve essere conservata a lungo termine.
- Efficienza: i DB cercano di utilizzare al meglio le risorse del calcolatore (memoria e tempo di esecuzione). L'efficienza è data sia dall'hardware, che dal software (ossia dalle applicazioni che noi creiamo).
- Efficacia: Cercano di rendere produttive le attività dei loro utilizzatori.
DBMS vs File System
I File System prevedono forme rudimentali di condivisione: i DBMS estendono la funzionalità dei file system fornendo più servizi in maniera integrata. Nei programmi tradizionali che accedono ai file, ogni programma contiene una descrizione della struttura del file stesso, con conseguenti rischi di incoerenza fra le descrizioni dei file contenuti in ogni programma e i file stessi. Nei DBMS in genere esiste una porzione della base di dati (detto catalogo o dizionario che contiene una descrizione centralizzata dei dati).
Alcune delle qualità dei Database tuttavia sono condivise anche dai File System, come la persistenza e la privatezza. Il database mira ad avere un'"astrazione" a livello più alto del File System e dei file, che il programmatore potrà gestire con più facilità, e non si dovrà preoccupare di chiedersi come e dove sono memorizzati i dati a livello di file.
I DBMS oggi
Nell'ambito dei DBMS basati sul modello relazionale il leader del mercato è Oracle: poi vi sono altre alternative proposte da altre compagnie, DB2 (IBM), SQLServer, (a pagamento) MySQL, PostgreSQL (completamente free). Vi sono anche DBMS utilizzati da applicazioni internet basati su modelli non relazionali (chiave-valore, singola colonna, grafo) in generale sono utilizzati per organizzazioni di dati abbastanza semplici. Ed infine vi sono dei sistemi relazionali distribuiti (i dati vengono distribuiti su macchine raccolte in cluster sparsi in tutto il mondo), altamente scalabili, come Google Spanner.
Nella gestione dei DB conviene utilizzare un sistema informativo unico per gestire i vari dati, altrimenti si può andare in contro a vari problemi, come ad esempio:
- Ridondanza (Informazioni ripetute all'interno di un DB)
- Incoerenza: i dati contenuti nei due sistemi informativi possono non coincidere.
Transazioni
Le transazioni sono un insieme di operazioni da considerare indivisibile, corretto anche in presenza di concorrenza e che abbia effetti definitivi. (o atomico): se una delle operazioni della transizione non viene eseguita, vengono annullate tutte le operazioni precedenti un esempio pratico di ciò può essere trovato nelle transazioni bancarie. Le transazioni devono venire effettuate anche in presenza di concorrenza (ossia quando vi sono più richieste differenti da vari utenti sulla stessa risorsa) ad esempio, un DB deve poter gestire correttamente l'incasso di due assegni sullo stesso conto contemporaneamente. Se la transazione viene conclusa positivamente, il suo risultato deve risultare permanente all'interno del database. Quando viene conclusa positivamente una transazione si ha un commit che è una parola chiave che vedremo successivamente.
Modelli
Cosa sono i modelli? Sono rappresentazioni dei dati a livelli diversi. Uno dei vantaggi più forte dei modelli è che essi permettono l'indipendenza dei dati dalla rappresentazione fisica, ossia un modello è un'astrazione di tutto ciò. Un modello è un insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la natura. Ogni modello dei dati fornisce un componente fondamentale, ossia il meccanismo di strutturazione (o costruttore di tipo) Es: per il modello E-R, il costruttore di tipo è l'entità e la relazione.
Schema e Istanze
Lo schema è la parte che descrive i dati: l'istanza è l'insieme stesso dei dati. Lo schema è sostanzialmente invariante nel tempo, mentre una o più istanze di una base di dati possono cambiare molto rapidamente. Vi sono due tipi principali di modelli:
- Modelli Logici
- Modelli Concettuali
Modelli Logici
I modelli logici sono adottati nei DBMS esistenti per l'organizzazione dei dati; più in particolare, i modelli logici vengono utilizzati dai programmi; ovviamente un modello logico è indipendente dalle strutture fisiche. Esempi di modelli logici: Modello relazionale, modello chiave-valore, grafo, ad oggetti, basato su XML.
Modelli Concettuali
I modelli concettuali invece permettono di rappresentare i dati in modo indipendente da ogni sistema: essi vengono utilizzati dal progettista del database, e non dal programmatore (lui si occuperà dei modelli logici). I modelli concettuali vengono utilizzati nelle fasi di progettazione di un database, e spesso per costruire un modello logico si parte dal modello concettuale. Il modello concettuale che studieremo si chiama E-R (Entity-Relationship).
Architettura semplificata di un DBMS (importante!)
Si utilizza un'architettura standardizzata per DBMS articolata su tre livelli. Analizziamoli:
- Schema esterno: uno schema esterno costituisce la descrizione di una porzione della base di dati, per mezzo del modello logico. Ad esempio, una Vista relazionata può essere considerata come uno schema esterno.
- Schema logico: lo schema logico costituisce una descrizione dell'intera base di dati per mezzo del modello logico adottato dal DBMS.
- Schema interno: lo schema interno costituisce la rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione. (file)
In questo modello oltre ai due schemi abbiamo un terzo schema, chiamato schema esterno, ossia la descrizione di una parte della base di dati in un modello logiche (viste parziali, ossia quando interrogo il database). L'accesso ad un database dall'utente avviene solo tramite il livello esterno (che ogni tanto può coincidere con il livello logico). Questa architettura fatta dai 3 livelli ci permette di avere indipendenza. Abbiamo due forme di indipendenza:
- Indipendenza fisica: il livello logico e quello esterno sono indipendenti da quello fisico, ossia l'indipendenza fisica consente di interagire con il DBMS indipendentemente dalla struttura fisica dei dati.
- Indipendenza logica: L'indipendenza logica consente di interagire con il livello esterno in modo indipendente dal livello logico. Ad esempio, è possibile aggiungere uno schema esterno senza dover modificare lo schema logico.
Linguaggi per le basi di dati
In termini di standard per DBMS, il linguaggio di riferimento si chiama SQL. Esso viene utilizzato come linguaggio di riferimento per il modello relazionale. Abbiamo anche modelli più leggeri, ad esempio modelli utilizzati da applicazioni web. È questo il caso di noSQL. In questo caso le query sono molto più efficienti rispetto a SQL, anche se è necessario un maggior numero di query.
Due tipi di linguaggi
I linguaggi per le basi di dati si distinguono in due categorie:
- Data Manipulation Language (DML): questo linguaggio viene utilizzato per l'interrogazione e l'aggiornamento di (istanze di) basi di dati (Ad esempio, i linguaggi che abbiamo visto precedentemente per le query).
- Data Definition Language (DDL): questo linguaggio viene utilizzato per la definizione di schemi (logici, esterni, fisici), o meglio, per creare la struttura del database.
Linguaggio SQL standard
Il linguaggio SQL può essere utilizzato in vari modi:
- In modo testuale interattivo, ossia tramite un terminale
- Comandi SQL all'interno di un linguaggio ospite (linguaggio di programmazione) Questo chiaramente è il modo più comune con cui viene utilizzato l'SQL.
- Comandi SQL all'interno ad un linguaggio ad hoc, ossia un linguaggio fornito dall'azienda che fornisce il DBMS.
- Implicito con interfacce "amichevoli" (grafiche)
Qui avremo un esempio di SQL immerso in un linguaggio ospite e dell'SQL immerso in un linguaggio ad hoc:
Analizziamo un esempio di un'operazione DDL, più in particolare per la creazione di una tabella:
CREATE TABLE orario ( Insegnamento CHAR(20), Docente CHAR(20), Aula CHAR(4), Ora CHAR(5) )
Orario sarà il nome della tabella, mentre i vari campi "insegnamento, docente, …" rappresenteranno le varie etichette che daremo allo schema e specificheremo cosa dovrà contenere ogni campo. L'SQL possiede istruzioni sia rivolte alla manipolazione dei dati (DML), sia rivolte alla definizione del database (DDL). Quindi possiamo affermare che SQL è sia un DML che un DDL.
Personaggi ed interpreti
Quali sono i "personaggi" che vengono presi in causa quando parliamo di Database?
- Progettisti e realizzatori del DBMS
- Progettisti della base di dati ed amministratori della base di dati (DBA)
- Progettisti e programmatori di applicazioni
- Utenti: gli utenti fanno le query e le modifiche al database
Database administrator (DBA)
Il DBA è una persona o un gruppo di persone responsabile del controllo e la gestione del sistema (Database), e la gestione delle sue prestazioni, affidabilità, autorizzazioni, ecc.
Vantaggi e svantaggi dei DBMS
Analizziamo i pro dei DBMS:
- Nei DBMS i dati vengono trattati come una risorsa comune: una base di dati si avvicina il più possibile ad essere un modello della realtà di un'organizzazione.
- Con un uso dei DBMS è possibile un controllo centralizzato dei dati, che può essere arricchito da forme di standardizzazione e beneficiare di "economie di scala".
- Disponibilità di servizi integrati.
- La condivisione permette la riduzione di ridondanze e inconsistenze.
- Indipendenza dei dati: una conseguenza della indipendenza dei dati favorisce lo sviluppo e la manutenzione di applicazioni più flessibili e facilmente modificabili.
Analizziamo i contro dei DBMS:
- I DBMS sono prodotti spesso costosi (svantaggio "eliminabile" poiché esistono DBMS gratuiti).
- Costo della transizione su nuovi database: Nel caso di migrazione da un database all'altro si ha un grande costo di risorse e di fatica per migrare da un tipo di DB all'altro, in quanto molto spesso DBMS diversi hanno keyword diverse.
- I DBMS forniscono in maniera integrata una serie di servizi, che sono associati ad un costo. A volte è possibile che alcuni di questi servizi non siano necessari e non sia possibile scorporarli, portando ad una riduzione di prestazioni.
Il web e l'accesso ai DBMS
Martedì 8 marzo 2016 08:53
Il modello Client-Server
Questa qui sopra è l'architettura interna di un database. Più in particolare viene mostrato il processo di una query e di visita del database. Al giorno d'oggi spesso i database vengono implementati in un server. Di conseguenza un approccio possibile dell'accesso ai DBMS può essere attraverso al paradigma client-server: più client sono collegati tra loro attraverso una rete, ed i client effettueranno comunicazioni con il server (più in particolare, i client faranno interrogazioni sul DB) molto spesso la connessione al DBMS è protetta da autorizzazione, ossia il client per accedere al DB avrà bisogno di un username ed una password. L'accesso ad un Database non è sempre uguale: ad esempio, degli utenti possono effettuare le interrogazioni tramite particolari applicazioni, che utilizzeranno delle API per accedere al Database (di due tipi: ODBC, Open Database Connectivity standard e JDBC, per i programmi java); Oppure un client potrà effettuare le interrogazioni direttamente al database effettuando le interrogazioni tramite un terminale.
Architettura WEB-DB multi-tier
Questo tipo di architettura, a 3 livelli (non confondere con architettura dbms), è quella che viene principalmente usata nel web. In questo tipo di architettura avremo un client, un server, ed infine avremo un Database, su cui il server effettuerà interrogazioni. Ecco un'immagine esplicativa: (a sinistra…)
Web Application e DBMS
Facciamo un breve ripasso: cos'è un'applicazione web? Un'applicazione web è un'applicazione eseguita dentro un browser, che segue il paradigma client/server, che non necessita di essere installata all'interno del computer, in quanto viene caricata come una pagina Web. Una web application è altamente portabile e scalabile su vari dispositivi client. Nelle web application i dati sono gestiti in lato server.
Mobile app e DBMS
Una mobile app è un'applicazione scritta in codice nativo per una certa piattaforma. Rispetto ad una web app si denotano varie differenze:
- Un'applicazione nativa avrà una miglior UI, una maggiore reattività, la capacità di accedere a componenti hardware del dispositivo, e di conseguenza anche ad un DBMS/Datastore locale.
Ad esempio, Facebook fornisce sia la web app (ossia il servizio di login via browser) che le mobile app native.
Modello relazionale
Giovedì 10 marzo 2016 08:49
Storicamente per i Database abbiamo 3 modelli logici tradizionali: il modello gerarchico, il modello reticolare (struttura ad albero), ed il modello relazionale, che approfondiremo in dettaglio. Più recentemente è nato il modello a oggetti, il modello chiave-valore (utilizzati nelle app), grafo, e basato su XML. Il modello relazionale è un modello "basato su valori". Anche i riferimenti fra i dati in strutture (relazioni) diverse sono rappresentati per mezzo dei valori stessi. Negli altri 2 modelli logici invece si ha l'utilizzo di riferimenti espliciti (puntatori) fra i record.
Il modello relazionale
Il modello relazionale viene creato da Codd nel 1970, per favorire la...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.