Base di dati
1️⃣ Base di Dati
Una base di dati è:
- Un insieme organizzato di dati utilizzati per supportare lo svolgimento delle attività di un ente.
- Un insieme di dati gestito da un DBMS (Database Management System).
Database Management System (DBMS)
Un DBMS è un sistema che gestisce collezioni di dati che possono essere grandi, persistenti e condivise. Garantisce vari aspetti cruciali:
- Privatezza: Protezione dei dati da accessi non autorizzati.
- Affidabilità: Capacità di resistere a malfunzionamenti hardware e software, mantenendo l'integrità dei dati.
- Efficienza: Ottimizzazione delle operazioni per garantire prestazioni rapide.
- Efficacia: Capacità di rispondere ai requisiti degli utenti e delle applicazioni in modo accurato e tempestivo.
Esempi di DBMS includono:
- DB2
- Oracle
- SQLServer
- MySQL
- PostgreSQL
- Access (non è considerato un vero DBMS)
Affidabilità dei Database
I database sono considerati affidabili grazie alla loro capacità di resistere a malfunzionamenti hardware e software. Poiché rappresentano una risorsa pregiata, devono essere conservati a lungo termine. Una tecnica fondamentale per garantire l'affidabilità è la gestione delle transazioni.
Gestione delle Transazioni
Una transazione è un insieme di operazioni da considerare indivisibile (atomica). Una transazione deve:
- Fallire o avere successo nella sua interezza: Non ci sono successi parziali.
- Essere corretta: Anche in presenza di concorrenza, le operazioni devono mantenere l'integrità dei dati.
- Effetti definitivi: Dopo il commit, tutti i cambiamenti sono registrati permanentemente nella base di dati.
Questi principi garantiscono che le operazioni sui database siano sicure, coerenti e resistenti agli errori.
Modelli di Dati
- Gerarchico: Organizza i dati in una struttura ad albero. Ogni nodo ha un singolo genitore e può avere più figli. Esempi: IMS di IBM.
- Reticolare: Simile al modello gerarchico, ma ogni nodo può avere più genitori, creando una struttura a rete. Esempi: IDMS.
- Relazionale: Utilizza tabelle (relazioni) per rappresentare i dati e le loro interconnessioni. SQL è il linguaggio standard per l'interazione. Esempi: MySQL, PostgreSQL.
- Object-oriented: Combina i concetti di programmazione orientata agli oggetti con quelli di basi di dati. Esempi: ObjectDB.
- NoSQL: Include vari sottotipi come documenti, grafi, colonne e chiavi-valore. Adatto a dati non strutturati o semi-strutturati. Esempi: MongoDB, Cassandra.
Normalizzazione
La normalizzazione è il processo di organizzazione dei dati in una base di dati per ridurre la ridondanza e migliorare l'integrità dei dati. Include vari livelli (forme normali):
- Prima Forma Normale (1NF): Rimuove i valori duplicati nelle colonne.
- Seconda Forma Normale (2NF): Rimuove le dipendenze parziali tra colonne.
- Terza Forma Normale (3NF): Rimuove le dipendenze transitiva tra colonne.
- Boyce-Codd Normal Form (BCNF): Una versione più rigorosa della 3NF.
2️⃣ Database Management System (DBMS)
Architettura del DBMS
- Livello Fisico: Come i dati sono effettivamente memorizzati.
- Livello Logico: Quali dati sono memorizzati e le relazioni tra di essi.
- Livello di Vista: Come i dati sono visualizzati dagli utenti finali.
ACID Properties
Le proprietà ACID sono un insieme di proprietà che garantiscono che le transazioni nei DBMS siano affidabili:
- Atomicità: Le operazioni di una transazione sono indivisibili; o tutte si completano o nessuna si completa.
- Coerenza: Le transazioni portano il database da uno stato coerente a un altro stato coerente.
- Isolamento: Le operazioni di una transazione sono isolate dalle operazioni di altre transazioni.
- Durabilità: Una volta che una transazione è confermata (commit), i suoi effetti sono permanenti anche in caso di guasto del sistema.
Concorrenza e Locking
- Locking Pessimistico: Previene l'accesso concorrente ai dati durante una transazione bloccando i record coinvolti.
- Locking Ottimistico: Consente l'accesso concorrente, ma verifica i conflitti prima di confermare una transazione.
Backup e Recupero
- Full Backup: Una copia completa di tutto il database.
- Incremental Backup: Copia solo i dati modificati dall'ultimo backup.
- Differential Backup: Copia solo i dati modificati dall'ultimo full backup.
Performance Tuning
- Indici: Migliorano la velocità delle query creando una struttura di ricerca sui campi.
- Caching: Memorizza i risultati delle query per ridurre il tempo di accesso ai dati frequentemente richiesti.
- Partitioning: Divide grandi tabelle in parti più piccole per migliorare la gestione e le prestazioni.
Tipi di Indici
- Indice Clustered: Ordina fisicamente i dati della tabella in base ai valori dell'indice.
- Indice Non-Clustered: Mantiene un ordine logico dei dati che differisce dall'ordine fisico.
3️⃣ Tecnologie Emergenti
Big Data
Gestione e analisi di enormi quantità di dati eterogenei raccolti da varie fonti. Esempi di tecnologie: Hadoop, Spark.
Data Warehousing
Archiviazione e gestione di grandi volumi di dati storici per analisi e reportistica. Esempi: Amazon Redshift, Google BigQuery.
Machine Learning e AI nei DBMS
Integrazione di algoritmi di machine learning e intelligenza artificiale per analisi avanzate, previsione e automazione delle operazioni database. Esempi: Google Cloud AI, Azure Machine Learning.
Cloud Databases
Database ospitati su piattaforme cloud che offrono scalabilità, affidabilità e flessibilità. Esempi: Amazon RDS, Microsoft Azure SQL Database, Google Cloud SQL.
Blockchain
Tecnologia emergente per basi di dati decentralizzate e immutabili, utilizzata principalmente in criptovalute e contratti intelligenti. Esempi: Ethereum, Hyperledger.
4️⃣ Sicurezza del Database
Controlli di Accesso
Implementazione di ruoli e permessi per controllare chi può accedere e modificare i dati. Tecniche includono:
- Autenticazione: Verifica dell'identità degli utenti.
- Autorizzazione: Determinazione dei permessi dell'utente.
Crittografia
Protezione dei dati sensibili mediante tecniche di crittografia sia a riposo (stored data) che in transito (data in transit).
Auditing
Monitoraggio e registrazione delle attività degli utenti per identificare e prevenire accessi non autorizzati o comportamenti sospetti.