Base di dati: cos’è una base di dati?
Prima di fare ulteriori riflessioni bisogna però capire quali sono le parti in gioco:
“Scienza del trattamento razionale, specialmente per mezzo di macchine automatiche, dell’informazione, considerata come supporto alla conoscenza umana e alla comunicazione”
L’informatica:
Sistema informativo: componente di una organizzazione che gestisce le informazioni di interesse, che funge da supporto ad altri sottosistemi.
Questi due concetti, seppur attualmente quasi utilizzati come sinonimi in ambito aziendale, sono indipendenti, basti pensare che esistono organizzazioni la cui ragion d’essere è la gestione delle informazioni (come l’anagrafica e le banche), ed esistono da secoli.
Si può quindi dire che il sistema informatico sia la parte automatizzata del sistema informativo, quindi la parte di quest’ultimo che gestisce informazioni con tecnologia informatica.
Informazioni, dati e gestione
Nelle attività umane, esistono informazioni di natura differente:
- Idee informali
- Linguaggio naturale
- Disegni, grafici e schemi
- Numeri e codici
E quindi gestite tramite vari supporti:
- Mente umana
- Carta
- Dispositivi elettronici
Quello che importa è che tutte le informazioni hanno un ciclo di vita:
- Raccolta
- Archiviazione
- Elaborazione
- Distribuzione
- Mantenimento
- Smaltimento
È molto importante distinguere le informazioni dai dati: infatti, i dati non sono che la rappresentazione essenziale delle informazioni, più precisamente:
L’informazione è una notizia, un dato o un elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere.
Il dato è ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica) elementi di informazione costituiti da simboli che debbono essere elaborati.
L’informazione nasce quindi come dato, e può essere resa “fertile” solo dopo un processo di elaborazione, questo comporta il passare all’interno di quello che si chiama “schema DIKW”:
- Data: fatti non processati ottenuti spesso da strumenti di misura
- Information: dati strutturati ed elaborati, inseriti in un contesto, in modo da aumentarne il significato
- Knowledge: capacità di utilizzare le informazioni in modo da ottenere obiettivi specifici
- Wisdom (saggezza): capacità di selezionare obiettivi coerenti che supportano un insieme di valori
Spesso, rappresentare forme più “elaborate” di conoscenza, è complesso, per cui si può decidere di sfruttare i dati, i quali costituiscono un asset poiché più stabili nel tempo.
Capendo quindi questi concetti, una base di dati è un insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente, gestito da DBMS (database management system).
DBMS e gestione delle collezioni di dati
DBMS nasce per gestire collezioni di dati:
- Persistenti: dati che devono sopravvivere alle singole esecuzioni dei programmi
- Grandi: dati che arrivano all’ordine di grandezza della memoria del calcolatore o addirittura la superano
- Condivise: tutte le organizzazioni sono divise in settori, e ciascun settore ha un sottosistema informativo che lo supporta, per cui alcuni dati potrebbero essere d’interesse per più settore, ed addirittura nello stesso momento, per cui è necessario dare soluzione a questa necessità
Garantendo:
- Privatezza: il tema della privatezza è emerso con il tempo a causa dell’aumento di valore dei dati, motivo per cui entra in campo il concetto di AAA: authentication (processi per certificare l’identità dell’utente), authorization (definizione di ciò che ogni determinato utente può fare), accounting.
- Grande affidabilità: una buona base di dati è importante sia resistente a malfunzionamenti sia HW che SW, infatti i dati, in quanto risorse pregiate, è bene siano conservati a lungo termine, una tecnica importante è quella della gestione delle transazioni (operazioni considerate indivisibili, anche di fronte a concorrenza, e definitive, il passaggio di denaro da A a B, può avvenire solo se sia l’operazione “prelievo” che quella “versamento” è fattibile).
- Grande efficienza: rapporto resa/spesa
- Grande efficacia: resa; a fare garante di questa caratteristica è la presenza di vari linguaggi ed interfacce per l’interrogazione dei DB, quali:
- Linguaggi testuali interattivi, come SQL
- Comandi SQL immersi in linguaggi ospiti, come Pascal, Java o C
- Comandi SQL immersi in linguaggi ad hoc, con l’integrazione di funzionalità (per creare grafici ad esempio)
- Interfacce amichevoli (senza linguaggio testuale)
Archivio e base di dati
Gli archivi stabiliscono un rapporto 1:1 tra informazioni e unità.
Le base di dati gestiscono informazioni di diverso tipo anche relative alle stesse unità, importante qui è la gestione dei ruoli dei vari applicativi.
Problemi delle basi di dati
Esistono alcuni problemi all’interno dei database:
- Ridondanza: alcune informazioni potrebbero essere contenute più volte
- Incoerenza: alcune informazioni potrebbero non coincidere relativamente alla stessa unità (se mi trasferisco il mio indirizzo cambia ad esempio, e potrebbero essere salvati entrambi in alcuni sistemi informativi)
Base di dati
Una base di dati è una risorsa integrata e condivisa fra applicazioni, per cui si possono fare attività diverse su dati condivisi, a cui, tra l’altro, possono accedere più utenti, quindi nasce la necessità di gestire le autorizzazioni e la concorrenza (se io faccio qualcosa su dei dati, cosa succede se anche altri toccano gli stessi dati?).
Le basi di dati vengono spesso conservate in macchine progettate ad hoc per la conservazione, saranno poi SW esterni ad interrogarle per svolgere calcoli su quei dati in un calcolatore.
Personaggi ed interpreti
Chi sono le persone interessate a queste strutture? Partendo dalla progettazione, fino all’utilizzo:
- Progettisti del DBMS
- Progettisti ed amministratori della base dati, o DBA (persona o gruppo di persone responsabile del controllo centralizzato e della gestione del sistema, delle prestazioni, dell’affidabilità, delle autorizzazioni)
- Progettisti e programmatori di applicazioni
- Utenti:
- Finali, che utilizzano applicazioni predefinite (transazioni)
- Casuali, che utilizzano operazioni non previste a priori, tramite linguaggi interattivi
Il concetto di transazione ha quindi due differenti paradigmi d’interpretazione:
- Per l’utente: programma da eseguire per realizzare una funzione d’interesse, come può essere un versamento, una prenotazione, l’emissione di un certificato, spesso eseguito in linguaggio ospite
- Per la macchina: insieme di operazioni indivisibili
File system
Un file system è un sistema di gestione dei file che determina le modalità di assegnazione dei nomi, memorizzazione ed organizzazione all’interno di un volume di archiviazione, garantisce archivi e cartelle e tutta l’informazione necessaria per la localizzazione e l’accesso da parte di utenti locali e remoti.
I dispositivi di archiviazione sono suddivisi in blocchi di dimensione fissa (o settori), sui quali sono possibili solamente operazioni di lettura e scrittura, il SW organizza questi settori, tenendo traccia di quelli utilizzati e quelli vuoti.
È bene differenziare il file system fisico da quello logico: mentre infatti l’umano vede un’organizzazione secondo un diagramma aciclico, la macchina vede i file come sequenze di byte memorizzate nei blocchi (clusters).
DBMS vs file system
La gestione di dati grandi e persistenti è possibile anche tramite strumenti più semplici dei DBMS, come i file systems degli OS, perché allora non vengono utilizzati se più economici e di più semplice utilizzo?
I FS utilizzano ad esempio forme rudimentali di condivisione: “tutto o niente”, mentre i DBMS offrono ciò che offrono i FS, ma anche altri servizi ed in maniera integrata, inoltre nei tradizionali programmi, ognuno contiene una descrizione della struttura del file stesso, creando il rischio di incongruenza tra le descrizioni ed i file stessi, nei DBMS esiste invece una porzione alla base dei dati, che ne contiene una descrizione centralizzata (dizionario o catalogo), utilizzabile dai vari programmi.
DBMS
Descrizione dei dati nei DBMS
La descrizione a livello più alto (quindi nome e tipo della variabile), permette l’indipendenza del carattere dal livello fisico con cui questo è conservato.
Due elementi fondamentali di un DB sono:
- Schema: si può immaginare al nome ed al tipo delle colonne ed all’ordine in cui sono disposte e sono n+1, dove n è il numero delle variabili e l’uno è l’identificatore delle righe
- Istanza: ogni riga è un’istanza
Schema-> impostazione del database variabile per variabile.
Istanza-> singola unità che assume un valore per ogni variabile.
Così come il file system ha due diversi livelli di lettura: uno logico ed uno fisico, anche i DBMS funzionano in modo simile: l’utente vede lo schema (logico), mentre la macchina, mentre la macchina lo schema fisico (o interno), ossia la rappresentazione dello schema logico per mezzo di strutture di