Informazioni e dati
L'informatica è la scienza che studia i processi di rappresentazione, gestione e trasformazione dell'informazione e la loro automazione. L'informazione deriva da un dato, o più verosimilmente da un insieme di dati, che sono stati sottoposti a un processo di interpretazione che li ha resi significativi per il destinatario. Queste informazioni devono essere gestite: vengono innanzitutto raccolte e acquisite e poi archiviate. Queste informazioni vengono anche elaborate e trasformate, ma soprattutto distribuite e scambiate.
Le informazioni vengono gestite in forme diverse: si possono avere idee formali, informazioni espresse in un linguaggio naturale (ambiguo e ricco), o attraverso grafici, schemi, disegni, o anche attraverso numeri e codici. E per gestire le informazioni si usano diversi supporti: la mente, la carta, dispositivi elettronici…
L'insieme delle risorse dedicate all'organizzazione dei dati e delle informazioni mediante sistemi informatici, o meno, in un'organizzazione è detto sistema informativo. Per esempio, nel catasto viene usata ancora la carta.
Sistemi informatici e rappresentazione dei dati
Nei sistemi informatici le informazioni sono spesso rappresentate in modo essenziale e compatto, attraverso i dati. Dei dati presi singolarmente possono non essere interpretabili. Se si aggiunge un simbolo, non si sanno ancora interpretare i dati, non si ha un'informazione, ma solo dei dati. Se si aggiunge della semantica, per esempio: siamo in Finlandia, le parentesi indicano il sabato e il rosso i festivi, i dati sono interpretabili e si ha quindi un'informazione.
Se si fa una ricerca in Google, sulla destra appare un canel con informazioni, a volte sbagliate; se cerco Claudio Bettini si può confondere con un omonimo e quindi ricevo info sbagliate.
Semantic web: trasformazione del World Wide Web in un ambiente dove i documenti pubblicati sono associati a informazioni e dati che ne specificano il contesto semantico in un formato adatto all'interrogazione e all'interpretazione, e all'elaborazione automatica.
Perché i dati?
Perché rappresentare in modo preciso e ricco le informazioni e la conoscenza è difficile. I dati costituiscono spesso una risorsa strategica, perché più stabili nel tempo di altre componenti (processi, tecnologie, ruoli umani). La collezione di dati, che tipicamente descrivono le informazioni di interesse di una o più organizzazioni correlate, viene definita base di dati.
Questi dati vengono appunto memorizzati in basi di dati (database), gestiti dal DBMS, un sistema software in grado di memorizzare, gestire e interrogare grandi collezioni di dati. Non è che ogni applicazione deve sviluppare il proprio database, più applicazioni possono insistere sullo stesso database, anzi è utile che più applicazioni che condividono le stesse informazioni, o parte di esse, utilizzino lo stesso database. L'applicazione è indipendente dai dati, se si cambia applicativo i dati rimangono, si aggiorna soltanto l'applicazione.
Database e DBMS
Un DB è un archivio, un insieme ordinato di dati detto base di dati o database. Il DBMS (Data Base Management System) è un particolare software che permette di creare e gestire un database sulla memoria di massa.
Basi di dati
Si tratta quindi di un sistema che gestisce una collezione di dati. Queste collezioni di dati sono:
- Grandi: Dimensioni maggiori della memoria centrale dei sistemi di calcolo usati. Il limite deve essere solo quello fisico dei dispositivi. Esempi di dimensioni molto grandi:
- 500 Gigabyte (dati transazionali)
- 10 Terabyte (dati decisionali)
- 500 Terabyte (dati scientifici, CERN)
- Persistenti
- Condivise: Utilizzando diversi database per mantenere le stesse informazioni porterebbe a:
- Un problema di ridondanza: ripetizione delle informazioni;
- Un problema di consistenza: se non si ha un meccanismo istantaneo che esegua un'operazione di consistenza, dati aggiornati su un database, non vengono aggiornarsi gli altri, quindi si avranno dati diversi.
Una base di dati è una risorsa integrata condivisa fra applicazioni. Attività diverse su dati condivisi: meccanismi di autorizzazione: accessi di più utenti.
DBMS di oggi
Esistono sistemi basati sul modello relazionale:
- Soluzioni commerciali: DB2 (IBM), Oracle, SQLServer (Microsoft)
- Soluzioni Open: MySQL, PostgreSQL, Access (Microsoft Office)
Sistemi emergenti per applicazioni Internet (noSQL DBMS) basati sui modelli non relazionali, come chiave-valore, singola colonna, grafo, .... Sono altamente parallelizzabili (ottimizzati per essere distribuiti su più macchine). Esempi: HBase, Amazon Dynamo.
Oppure si hanno sistemi relazionali distribuiti altamente scalabili (newSQL DBMS): mantengono caratteristiche dei relazionali, ma resi più scalabili.
I DBMS garantiscono...
Privatezza: Anche in un file system ci sono sistemi di privatezza, ma si hanno pochi permessi principali (proprietario, gruppo, altri e si può scegliere chi può leggere, scrivere ed/o eseguire). Si hanno permessi a livello di file (file o directory), mentre in un DBMS si ha un'organizzazione logica, si potranno dare permessi a livello più preciso/fine, sofisticati.
Affidabilità: I DBMS garantiscono affidabilità cioè la capacità del sistema di conservare sostanzialmente intatto il contenuto della base di dati in caso di malfunzionamento hardware e software. In un file system ci sono meccanismi di affidabilità detti log, che tengono traccia di tutte le operazioni, quindi riguardano la parte software. Mentre per guasti hardware si eseguono scritture periodiche su disco, se si ha un NAS ci sono meccanismi in cui si hanno più dischi (ridondanza prima tecnica).
I file di log sono file che contengono messaggi relativi al sistema, compreso il kernel, i servizi e le applicazioni in funzione. I record conservano tutte le informazioni sul normale funzionamento della macchina e, soprattutto, le registrazioni di errori e problemi.
Perché allora servono i DBMS? Anche il file system ha sistemi di resistenza ai guasti, così come il DBMS. In un file system e in un DBMS sono stati introdotti delle tecniche di journey basate sui log, ma il modo in cui si strutturano i dati è diverso, è molto più fine in un database.
I DBMS devono essere...
Efficienti: Per efficienza si intende la capacità di svolgere le operazioni utilizzando un insieme di risorse (tempo e spazio) al meglio.
Efficaci: Per efficacia si intende la capacità della base di dati di rendere produttive in ogni senso le attività dei suoi utenti, offrendo funzionalità articolate, potenti e flessibili. Se è efficiente, ma per interrogarlo occorre un linguaggio molto complesso, non sarà efficace.
DBMS vs file system
La gestione di insiemi di dati grandi e persistenti è possibile anche attraverso sistemi più semplici - gli ordinari file system dei sistemi operativi. I file system prevedono forme rudimentali di condivisione: "tutto o niente". Nel file system si ha il rischio di inconsistenza fra descrizioni e i file stessi: si ha una descrizione dei file dentro l'applicazione, al contrario nel DBMS si ha un catalogo/dizionario che contiene un'informazione concentrata dei dati.
Transazioni
DBMS aggiungono funzionalità, per esempio le transazioni. Il termine transazione indica una qualunque sequenza di operazioni lecite che, se eseguita in modo corretto, produce una variazione nello stato di una base di dati. In caso di successo, il risultato delle operazioni deve essere permanente o persistente, mentre in caso di insuccesso si deve tornare allo stato precedente all'inizio della transazione.
Il problema è che un DBMS riceve operazioni da più parti e magari sugli stessi dati, quindi a volte si mischiano le operazioni, garantendo comunque l'effetto finale che si avrebbe nel farne una alla volta in sequenza.
Le transazioni sono concorrenti: l'effetto di transazioni concorrenti deve essere coerente, se due agenzie vogliono prendere lo stesso posto sul treno, solo una potrà farlo.
L'insieme delle proprietà delle transazioni di database, intese a garantire la validità dei dati nonostante errori, interruzioni di corrente e altri contrattempi, sono detto ACID. Nel contesto dei database, una sequenza di operazioni di database che soddisfa le proprietà ACID è chiamata transazione:
- Atomicità: Le transazioni sono spesso composte da più dichiarazioni. L'atomicità garantisce che ogni transazione sia trattata come una singola "unità", che riesce completamente o fallisce completamente: se una qualsiasi delle istruzioni che costituiscono una transazione non riesce a completarsi, l'intera transazione fallisce e il database rimane invariato. Un esempio di transazione atomica è un trasferimento monetario dal conto bancario A al conto B. Consiste in due operazioni, prelevare il denaro dal conto A e salvarlo sul conto B. L'esecuzione di queste operazioni in una transazione atomica garantisce che il database rimanga in uno stato coerente, cioè, il denaro non viene né addebitato né accreditato se una di queste due operazioni fallisce.
- Consistenza: Questa proprietà deve garantire che una transazione non violi i vincoli di integrità. Una transazione rappresenta una trasformazione corretta dello stato del database e quindi al suo termine quest'ultimo deve trovarsi in uno stato consistente senza che si verifichino contraddizioni (inconsistency) tra i dati archiviati.
- Isolamento: Le transazioni vengono spesso eseguite contemporaneamente (ad esempio, più transazioni in lettura e scrittura su una tabella contemporaneamente). L'isolamento garantisce che l'esecuzione simultanea di transazioni lasci il database nello stesso stato che si sarebbe ottenuto se le transazioni fossero state eseguite in sequenza. Questo tipo di proprietà deve garantire che gli effetti di una transazione siano isolati fino al termine della stessa. L'isolamento è l'obiettivo principale del controllo della concorrenza.
- Durabilità: Nel caso in cui un'operazione abbia modificato la base di dati i suoi effetti devono essere permanenti.
Vantaggi DBMS
Riduzione ridondanze e inconsistenze
Ogni dato logico dovrebbe essere memorizzato in un solo posto nella base di dati. Avere più copie della stessa informazione ha i seguenti svantaggi:
- Vi è un maggior uso di memoria;
- Le modifiche della stessa informazione debbono essere effettuate diverse volte;
- Ci possono essere fenomeni di inconsistenza dei dati qualora gli aggiornamenti dei dati vengano eseguiti in modo indipendente. Dunque, la stessa informazione potrebbe assumere valori diversi.
Talvolta viene consentita una forma di ridondanza controllata in un DBMS allo scopo di migliorare le prestazioni delle interrogazioni. Il DBMS stesso controlla che tale ridondanza non generi inconsistenze.
Indipendenza dei dati
Un DBMS mantiene diversi livelli di astrazione dei dati. Il livello più basso è detto fisico (o interno) e descrive come i dati sono fisicamente archiviati. Il livello immediatamente superiore è detto logico e descrive quali dati sono archiviati e quali vincoli di integrità essi devono soddisfare. Un DBMS permette di accedere ai dati logici indipendentemente dalla loro rappresentazione fisica. Quest'ultima può cambiare senza che i metodi di accesso ai dati logici debbano essere modificati. Si parla di indipendenza fisica dei dati. Non sempre l'intera base di dati deve essere visibile a tutti gli utenti. Il livello esterno descrive porzioni della base di dati (viste) accessibili da particolari gruppi di utenti.
Altri vantaggi DBMS
- Gestione centralizzata con possibilità di standardizzazione ed "economia di scala";
- Dati come risorsa comune, base di dati come modello della realtà;
- Disponibilità di servizi integrati;
Svantaggi DBMS
- Costo dei prodotti e della transazione verso di essi (costoso migrare da un DBMS a un altro)
- Non scorporabilità delle funzionalità (riduzione di efficienza) (magari si usa una minima parte dei dati)
Chi lavora con i DBMS
- Progettisti e realizzatori di DBMS (come ottimizzare query SQL, come organizzare dati a livello fisico,...);
- Progettisti della base di dati e amministratori della base di dati (DBA);
- Progettisti e programmatori di applicazioni;
- Utenti (interrogazioni e modifiche dirette da terminale)
I modelli dei dati
L'indipendenza dei dati è un altro vantaggio enorme rispetto al file system. I dati possono essere rappresentati a livelli diversi: permettono l'indipendenza dei dati dalla rappresentazione fisica (come DBMS rappresentano i dati a livello fisico). I dati vengono rappresentati secondo un modello. Il modello dei dati è una collezione di costrutti utilizzi per organizzare i dati di interesse e descriverne la struttura in modo che risulti comprensibile ad un elaboratore (il modello più diffuso è il modello relazionale). I programmi fanno quindi riferimento a uno schema logico, non guardano alla disposizione fisica, cioè come sono rappresentati i dati su disco.
Si distinguono diversi modelli dei dati:
- Modello concettuale: Permettono di rappresentare i dati in modo indipendente da ogni sistema. Il più diffuso è il modello Entity-Relationship. Servono per modellare la realtà, tra informazione informale e la tabella che è rigida. Il costruttore principale è l'associazione.
- Modello logico: Evidenzia l'organizzazione dei dati dal punto di vista del loro contenuto informativo, descrivendo la struttura di ciascun dato e i collegamenti tra dati diversi. Adottati nei DBMS esistenti per l'organizzazione dei dati (modello relazionale, modello basato su chiave-valore, basati su grafi (riesce a catturare bene la struttura per esempio delle reti sociali),....). Nel modello relazionale il costruttore principale è la relazione, la tabella.
- Modello fisico (come vengono memorizzati i dati sulla memoria di massa)
Modello logico – relazionale
Il modello dei dati è definito dai costruttori di tipo, in quelli relazionali c'è un solo costruttore, la relazione. Il modello relazionale è uno dei diversi modelli logici possibili. Il modello relazionale è un modello logico di rappresentazione dei dati di un database, implementato su sistemi di gestione di basi di dati (DBMS). Questo modello fu proposto da E. F. Codd nel 1970 per favorire l'indipendenza dei dati. Si basa sul concetto matematico di relazione. Le relazioni hanno una rappresentazione naturale per mezzo di tabelle, dove i dati sono organizzati in una sequenza di record, in cui ogni colonna dà un'informazione sulla semantica del dato rappresentato.
Schema: insieme di attributi di una tabella, ne descrive la struttura e permette quindi di capire come sono organizzati i dati. Lo schema è sostanzialmente invariante nel tempo. L'istanza sono i dati inseriti nelle colonne delle tabelle, è una tupla. Tupla = elemento di un database relazionale caratterizzato da uno o più attributi; record.
Architettura a tre livelli per DBMS
- Schema esterno: Descrizione di una parte della base di dati in un modello logico ("viste" parziali, derivate, anche in modelli diversi). Dare una vista diversa a utenti diversi (anche di una porzione di tabella). Quello che un utente non vede, non sa che esiste. Nella maggiore parte dei casi le viste non sono materializzate, è un livello di astrazione;
- Schema logico: Descrizione dell'intera base di dati nel modello logico "principale" del DBMS;
- Schema interno (o fisico): Rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione e di accesso veloce.
L'indipendenza dei dati è una proprietà desiderabile per un DBMS, l'articolazione in livelli facilita la sua realizzazione. L'accesso ai dati avviene solo tramite il livello esterno. Ci sono due forme di indipendenza:
- Indipendenza fisica: Dato uno schema logico permette di astrarre dalla rappresentazione fisica.
- Indipendenza logica: Il modello logico può essere modificato senza modificare gli schemi esterni. Se si aggiungono una o più colonne alle tabelle non c'è problema, perché la tabella visibile si può comunque recuperare. Se si cancellasse una colonna, non si potrebbe più avere la stessa vista. Le viste devono rimanere "possibili".
Nella pratica, pochi DBMS hanno implementato completamente l'architettura. Ogni DBMS ha delle proprie caratteristiche.
Linguaggi
Per definire e cambiare gli schemi e per inserire e modificare i dati occorre utilizzare dei linguaggi: SQL è lo standard per i DBMS relazionali. Il linguaggio noSQL DBMS: uso di linguaggi a basso livello (programmazione). Se le query sono più complicate, si dovranno fare più query semplici (al contrario di SQL che fornisce più costrutti).
SQL
Il linguaggio SQL viene usato in vari modi:
- Testuale interattivo: quando si installa DBMS controllare se funziona da terminale
- Istruzioni SQL vengono scritte in un linguaggio ospite (Pascal, Java, PHP...)
- Comandi SQL immersi in un linguaggio ad hoc, con anche altre funzionalità (per esempio per grafici o stampe strutturate)
- Implicito con interfacce amichevoli (senza linguaggio testuale) poco usato a livello professionale
Si ha uno schema (nome tabella e attributi) e le istanze (dati). DBMS che gestisce questo database e si vuole chiedere di trovare i corsi tenuti a piano terra. Come si fa? Guardare nella tabella "aule" e cercare "terra" nella colonna "piano".
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.
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.