DBMS
Prodotti software (complessi) disponibili sul mercato; esempi:
DB2
Oracle
SQLServer
MySQL
PostgreSQL
Access
esempi di dimensioni molto grandi
500 Gigabyte (dati transazionali)
10 Terabyte (dati decisionali)
500 Terabyte (dati scientifici)
100 miliardi di record
L'importanza dell'organizzazione nelle basi di dati
L’organizzazione di una base di dati è fondamentale per due motivi principali:
Per garantire alcune proprietà essenziali del sistema.
Per evitare che i dati si trasformino in un insieme caotico di stringhe e numeri
incomprensibili.
Dal punto di vista tecnologico, una base di dati è un insieme di dati gestiti da un
DBMS (Database Management System), ovvero un software che consente di:
Interrogare i dati
Aggiornarli
Scriverli
Garantirne la persistenza
Tra i DBMS più noti ci sono Access, MySQL, PostgreSQL, Oracle, e molti altri.
Questi sistemi sono progettati per gestire grandi quantità di dati in modo efficiente e
sicuro. Caratteristiche fondamentali di una base di dati
Una base di dati ben progettata deve essere:
1. Grande
Le basi di dati devono poter contenere una quantità significativa di informazioni,
soprattutto se supportano attività complesse o se vengono riutilizzate da più sistemi
informativi. Anche se non è una buona pratica, in alcune piccole aziende lo stesso
DBMS viene usato per gestire dati di sistemi informativi diversi.
2. Persistente
La persistenza è cruciale. Immagina di lavorare in banca e perdere tutti i dati delle
operazioni appena spegni il computer: sarebbe un disastro. I dati devono essere:
Memorizzati correttamente
Ritrovabili
Tracciabili
Protetti da corruzione o errori
3. Condivisa
Le basi di dati devono essere accessibili a più unità organizzative, come dipartimenti
aziendali, enti pubblici o università. Questo implica:
Regole di accesso ben definite
Distribuzione controllata delle informazioni
Coordinamento tra utenti e sistemi
Garantendo:
privatezza
affidabilità
efficienza
efficacia
Esempio pratico: dati universitari
Supponiamo di avere una base di dati che contiene informazioni su corsi universitari.
Vediamo nomi come Nicola Mori per Chimica, Mario Bruni per Fisica 1 e Fisica 2, con
orari e aule.
Questi dati possono apparire in più tabelle. Ma se vengono memorizzati in modo
ridondante, cioè duplicati in più punti, si creano problemi:
Disallineamenti: se aggiorniamo un dato in una tabella ma dimentichiamo di
farlo nell’altra.
Spreco di spazio: ogni duplicazione occupa memoria inutile, che su larga scala
può diventare molto costosa.
Ridondanza: un problema da evitare
Se ogni campo occupa anche solo pochi byte, moltiplicato per milioni di record duplicati,
lo spazio consumato diventa enorme. Per questo motivo è essenziale:
Normalizzare i dati
Unificare le informazioni comuni
Evitare duplicazioni attraverso relazioni e strutture ben progettate
Conclusione
Una base di dati non è solo un contenitore di informazioni: è un sistema complesso che
deve essere progettato con attenzione per garantire:
Sicurezza
Efficienza
Accessibilità
Coerenza
Problemi:
Ridondanza: informazioni ripetute. Questo può creare confusione, perché
non si sa quale versione sia quella “giusta” o più aggiornata..
Rischio di incoerenza: le versioni delle informazioni non coincidono:
magari un dato è stato modificato, ma non ovunque.
Se chi analizza i dati è lo stesso che li ha inseriti, può accorgersene subito.
Ma se un altro operatore ci mette mano dopo molto tempo, senza sapere cosa è
successo prima, può fare fatica a capire dove sta l’errore.
Se ci sono due versioni contrastanti, quale si considera
valida?
Quella inserita per prima? Quella più recente?
Se si ha accesso a un log (registro delle modifiche), si può ricostruire la storia.
Ma senza log, si rischia di prendere decisioni basate su dati sbagliati.
Conseguenze
L’incoerenza può portare a errori gravi, soprattutto in contesti dove la precisione è
fondamentale (sanità, contabilità, sicurezza…).
Serve un sistema che:
Eviti la duplicazione inutile.
Tracci ogni modifica.
Permetta di risalire facilmente alla fonte e al momento dell’inserimento.
Soluzioni possibili
Implementare un sistema di versionamento dei dati.
Obbligare l’uso di log automatici.
Limitare l’accesso alla modifica solo a chi ha competenze specifiche.
Introdurre controlli incrociati e verifiche periodiche.
Condivise:
Una base di dati è una risorsa integrata, condivisa fra applicazioni.
Conseguenze autorizzazione
attività diverse su dati condivisi: meccanismi di concorrenza.
Accessi di più utenti ai dati condivisi: controllo della
Privatezza:
Sì possono definire meccanismi di autorizzazione:
l’utente A è autorizzato a leggere tutti i dati e a modificare X
l’utente B è autorizzato a leggere i dati X e a modificare Y
Affidabilità:
(Per le basi di dati):
Resistenza a malfunzionamenti HW e SW.
una base di dati è una risorsa pregiata e quindi deve essere conservata a lungo
termine.
tecnica fondamentale: gestione delle transizioni.
Transazione
Insieme di operazioni da considerare indivisibile (“atomico”), corretto anche in
presenza di concorrenza e con effetti definitivi.
Le transazioni sono: atomiche
Una sequenza di operazioni correlate:
trasferimento di fondi da un conto A ad un conto B: o si fanno il
prelevamento da A e il versamento su B o nessuno dei due
deve essere eseguita per intero o per niente:
o si fanno il prelevamento da A e il versamento su B o nessuno dei due
Le transazioni sono: concorrenti
L'effetto di transazioni concorrenti deve essere coerente
se due assegni emessi sullo stesso conto corrente vengono incassati
contemporaneamente
si deve evitare di trascurarne uno
…
se due agenzie rischiedono lo stesso posto (libero) su un treno
si deve evitare di assegnarlo due volte
…
I risultati delle transazioni sono permanenti
La conclusione positiva di una transazione corrisponde ad un impegno (in inglese
commit) a mantenere traccia del risultato in modo definitivo, anche in presenza di
guasti e di esecuzione concorrente
I DBMS debbono essere...efficienti
Cercano di utilizzare al meglio le risorse di spazio di memoria (principale e secondaria)
e tempo (di esecuzione e di risposta)
I DBMS, con tante funzioni, rischiano l'inefficienza e per questo ci sono grandi
investimenti e competizione
L’efficienza è anche il risultato della qualità delle applicazioni
I DBMS debbono essere...efficaci
Cercano di rendere produttive le attività dei loro utilizzatori, offrendo funzionalità
articolate, potenti e flessibili:
il corso è in buona parte dedicato ad illustrare come i DBMS perseguono l'efficacia
–
se i dati fossero memorizzati esattamente come appaiono nelle tabelle senza una
strutturazione ottimizzata, si rischierebbe una proliferazione di informazioni
duplicate. Questo non solo porta a problemi di spazio, ma rende difficile mantenere
la coerenza in presenza di aggiornamenti multipli, soprattutto quando sistemi
differenti interagiscono senza un controllo centralizzato.
Considerazioni
Verificare la coerenza dei dati memorizzati
Evitare la duplicazione per ridurre sprechi di spazio
Circostanze Speciali
Se si riscontra una duplicazione e incoerenza dei dati, valutare l'adozione di
sistemi di unione e controllo centralizzato per garantire l'integrità dei dati.
Utilizzo del Log nel DBMS
Il concetto di log viene presentato come un sistema di tracciamento fondamentale
per monitorare gli eventi all'interno del DBMS. Il log tiene traccia delle operazioni
eseguite, segnando cosa, quando e da chi è stato effettuato ogni intervento.
Il log permette di ricostruire la sequenza delle operazioni sul database, facilitando
l'individuazione e la correzione degli errori, specialmente quando questi emergono in
momenti successivi all'operazione originale.
Quindi viene utilizzato per monitorare e verificare le modifiche e per accedere
regolarmente al log per identificare eventuali discrepanze
Se l'accesso al log non è disponibile, diventa difficile risalire agli errori e potrebbe
essere necessario implementare soluzioni alternative di tracciamento.
Atomicità, Commit e Rollback nelle Transazioni
Viene evidenziato il concetto di atomicità nelle transazioni, che garantisce che un
insieme di operazioni venga eseguito come un'unica unità indivisibile. Questo
meccanismo si basa sui comandi commit e rollback per confermare o annullare
l'operazione in caso di errori.
Punti chiave
Atomicità delle operazioni
Commit per rendere definitive le modifiche
Rollback per annullare operazioni incomplete
Gestione della concorrenza tra processi
Spiegazione
Si è discusso dell'esempio del trasferimento fondi su conti bancari, in cui se due
operazioni si sovrappongono, si potrebbe verificare un prelievo errato se la
transazione non fosse atomica. Il DBMS blocca l'accesso degli altri processi fino al
completamento della transazione, garantendo così l'integrità dell'operazione.
Considerazioni
Garantire che le transazioni siano completate integralmente
Verificare il meccanismo di commit per rendere definitive le modifiche
Circostanze Speciali
Se operazioni concorrenti tentano di modificare lo stesso dato, il sistema deve
garantire il blocco fino al completamento della transazione per evitare errori.
Efficienza e Ottimizzazione nella Gestione del Database
È importante l'efficienza nei DBMS, sia in termini di tempo di risposta che di utilizzo
dello spazio di archiviazione. Vengono citate tecniche come il caching e strumenti di
compattazione dei dati per ottimizzare le prestazioni.
Punti chiave
Caching per memorizzare in memoria centrale le informazioni più richieste
Ottimizzazione dello spazio attraverso la compattazione dei dati
Gestione rapida degli accessi multipli
Spiegazione
Per evitare ritardi e inefficienze quando più utenti accedono contemporaneamente al
database, il DBMS implementa meccanismi che migliorano le performance
complessive. Questi includono tecniche di caching e tool specifici per ottimizzare la
memorizzazione dei dati, garantendo tempi di accesso accettabili anche in sistemi di
grandi dimensioni.
Considerazioni
Monitorare le performance e il tempo di risposta del DBMS
Implementare sistemi di caching per ridurre i tempi di accesso
Circostanze
-
Progetto Basi
-
Basi di dati - Esercizi
-
Basi di dati - sunti corso basi di dati
-
Introduzione-Basi di Dati