Programmazione · dati · database
Che cos’è un database?
Ogni app che usi — la tua banca, un negozio, un feed social — conserva le sue informazioni da qualche parte dove possono essere ritrovate, modificate e considerate affidabili. Quel «da qualche parte» è un database. È una delle idee fondanti del software. Questa guida spiega che cos’è un database, le grandi tipologie, i concetti che contano, esempi reali e il suo legame con SQL.
La definizione breve
Un database è una raccolta organizzata di dati, gestita da un software (un sistema di gestione di database, o DBMS) che permette di archiviare, recuperare, aggiornare e proteggere questi dati in modo affidabile. Anche un foglio di calcolo può contenere dati, ma un database aggiunge struttura, interrogazioni rapide su larga scala, accesso multiutente e la garanzia che i dati restino coerenti anche quando molte cose cambiano nello stesso momento.
Database vs DBMS
Due parole usate spesso come sinonimi ma che indicano cose diverse. Il database sono i dati stessi e la loro organizzazione. Il DBMS — PostgreSQL, MySQL, SQLite, MongoDB — è il software che li archivia, esegue le tue interrogazioni, applica le regole e gestisce gli accessi concorrenti. Quando si chiede «quale database usare?», di solito si parla del DBMS.
Le due grandi famiglie
- Database relazionali (SQL): organizzano i dati in tabelle di righe e colonne, con relazioni definite tra loro, e si interrogano con SQL. Eccellono con dati strutturati e coerenza garantita. Esempi: PostgreSQL, MySQL, SQLite, SQL Server.
- Database NoSQL: allentano la struttura rigida a tabelle per guadagnare flessibilità e scalabilità. Esistono in più forme: orientati ai documenti (MongoDB), chiave-valore (Redis), wide-column (Cassandra) e a grafo (Neo4j). Utili per grandi volumi, cache veloce o dati la cui forma cambia spesso.
La maggior parte dei sistemi reali ne usa diversi — per esempio un database relazionale per i record principali e un archivio chiave-valore per la cache.
I concetti chiave
- Schema — la struttura definita: quali tabelle esistono, le loro colonne e tipi e le regole. I database relazionali sono schema-first; molti NoSQL sono flessibili.
- Interrogazione — una richiesta di dati precisi («tutti gli ordini della settimana scorsa»). Nei database relazionali si scrivono in SQL.
- Indice — una struttura di ricerca che rende rapide le interrogazioni evitando di scorrere ogni riga, come l’indice analitico in fondo a un libro.
- Transazione — un gruppo di modifiche che devono riuscire tutte o fallire tutte insieme (trasferire denaro tra due conti). I database relazionali lo garantiscono con le proprietà ACID.
Che cosa significa ACID
ACID descrive le garanzie che un database affidabile offre a una transazione: Atomicità (tutto o niente), Coerenza (i dati rispettano le loro regole prima e dopo), Isolamento (le transazioni concorrenti non si corrompono a vicenda) e Durabilità (una volta confermata, la modifica sopravvive a un crash). Sono queste garanzie a far sì che si affidino denaro e record a un database invece che a un semplice file.
Perché i database contano
Permettono al software di archiviare i dati una sola volta e di usarli ovunque, in sicurezza, su larga scala, con molti utenti contemporaneamente — e di ritrovarne qualunque porzione in pochi millisecondi. Quasi ogni programma non banale prima o poi ne ha bisogno. Saper scegliere il tipo giusto e interrogarlo bene è una delle competenze più durature in informatica.
I compromessi onesti
Non esiste un database universalmente «migliore». I database relazionali offrono forte coerenza e interrogazioni potenti ma richiedono uno schema definito; NoSQL offre flessibilità e scalabilità orizzontale ma spesso sacrifica alcune garanzie di coerenza. La scelta giusta dipende dalla forma dei tuoi dati, dalla tua scala e da quanta importanza dai alla coerenza stretta rispetto alla flessibilità. Molti team combinano entrambi.
FAQ
Un database è la stessa cosa di SQL? No. Un database archivia i dati; SQL è il linguaggio usato per interrogare i database relazionali. I database NoSQL usano altri metodi di interrogazione.
Un foglio di calcolo è un database? In senso lato sì, ma non davvero. Un foglio di calcolo contiene dati, ma un database aggiunge struttura imposta, interrogazioni rapide su larga scala, sicurezza multiutente e garanzie transazionali che un foglio di calcolo non ha.
Qual è la differenza tra SQL e NoSQL? I database SQL/relazionali usano tabelle strutturate e forte coerenza; i database NoSQL allentano la struttura per flessibilità e scalabilità. Nessuno sostituisce l’altro — si adattano a usi diversi. Per un confronto approfondito, vedi SQL vs NoSQL: quale database, e quando.
Quale database imparare per primo? Uno relazionale — SQLite o PostgreSQL — perché il modello relazionale e SQL si trasferiscono ovunque e insegnano con chiarezza le idee di base.
Per interrogare un database relazionale userai SQL; i dati che un database restituisce a un’app viaggiano spesso in JSON. Sfoglia altre spiegazioni chiare nel nostro indice delle guide.