Menu
Coddy logo textTech

Cos'è un database?

Un database è una raccolta organizzata di dati memorizzata su un computer in modo che i programmi possano trovarli, aggiungerli, modificarli e cancellarli in modo rapido e sicuro. È gestito da un software chiamato sistema di gestione di basi di dati (DBMS), come PostgreSQL, MySQL, SQLite o MongoDB.

Di Kevin Spektor, Cofondatore e CTO

Aggiornato il 24 settembre 2026

Quando accedi a un sito web, il sito deve trovare il tuo account tra milioni di altri, controllare la password e caricare le tue impostazioni, tutto in pochi millisecondi. Non apre un file di testo leggendolo riga per riga. Invia una richiesta come SELECT * FROM users WHERE email = 'ana@example.com' a un database, e il database salta direttamente alla riga giusta usando un indice, un po' come l'indice analitico in fondo a un libro.

Come funziona un database

Due pezzi lavorano insieme. Il database sono i dati, organizzati in una struttura fissa. Il sistema di gestione di basi di dati (DBMS) è il programma che salva quei dati in file, li mantiene coerenti e risponde alle richieste. PostgreSQL, MySQL e SQLite sono DBMS; il tuo elenco di clienti è il database.

In un database relazionale, i dati vivono in tabelle. Ogni tabella ha colonne (nome, paese, punti) e righe (una per utente). Una richiesta passa per queste fasi:

  1. Il tuo programma invia una query, di solito scritta in SQL (Structured Query Language).
  2. Il DBMS analizza la query e pianifica come rispondere: quali tabelle leggere e se un indice può saltare la maggior parte delle righe.
  3. Legge i dati dal disco in pagine di dimensione fissa (4.096 byte per impostazione predefinita in SQLite, 8 KB in PostgreSQL), tenendo in memoria le pagine usate più spesso.
  4. Filtra, ordina e combina le righe, poi restituisce il risultato.

Python include SQLite, quindi puoi usare un vero database proprio qui:

Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5

Il programma non dice mai come cercare. Descrive il risultato che vuole, e il DBMS decide come ottenerlo. È questa la differenza principale tra interrogare un database e scrivere un ciclo su una lista.

Tipi di database

TipoMemorizza i dati comeEsempiUso tipico
Relazionale (SQL)Tabelle di righe e colonne, collegate da chiaviPostgreSQL, MySQL, SQLite, Oracle, SQL ServerUtenti, ordini, pagamenti: la maggior parte delle applicazioni
A documentiDocumenti simili a JSONMongoDB, Firestore, CouchDBRecord i cui campi cambiano dall'uno all'altro
Chiave-valoreUn valore cercato tramite una chiaveRedis, DynamoDBCache, sessioni, contatori
A colonne largheRighe con colonne flessibili distribuite su molti serverCassandra, HBaseVolumi di scrittura molto alti
A grafoNodi e relazioni tra di essiNeo4jSocial network, raccomandazioni
Serie temporaliMisure indicizzate per tempoInfluxDB, TimescaleDBMetriche, letture di sensori
VettorialeListe di numeri (embedding)pgvector, Pinecone, MilvusRicerca per somiglianza nelle funzionalità di IA

Tutto ciò che non è relazionale viene spesso raggruppato sotto il nome NoSQL. I database relazionali restano la scelta predefinita per la maggior parte delle applicazioni, perché tabelle, vincoli e SQL coprono bene un'ampia gamma di problemi. Molti prodotti combinano anche più tipi: PostgreSQL salva documenti JSON, e pgvector gli aggiunge la ricerca vettoriale.

Transazioni: tutto o niente

Spostare denaro da Ana a Ben richiede due modifiche: aggiungere a Ben, togliere ad Ana. Se il programma si blocca tra le due, compare denaro dal nulla. Una transazione raggruppa le modifiche in modo che vengano salvate tutte o nessuna. Qui la seconda modifica viola una regola (un saldo non può scendere sotto zero), quindi il database annulla anche la prima:

transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}

I 40 di Ben sono stati aggiunti e poi ripresi, quindi i totali tornano. I database relazionali garantiscono quattro proprietà per le transazioni, note come ACID: atomicità (tutto o niente), coerenza (regole come CHECK valgono sempre), isolamento (due utenti che eseguono transazioni nello stesso momento non vedono il lavoro a metà dell'altro) e durabilità (una volta salvata, una modifica sopravvive a un crash o a un'interruzione di corrente).

Database, foglio di calcolo o file

File di testo o CSVFoglio di calcoloDatabase
DimensioneQuello che il tuo programma riesce a caricare1.048.576 righe per foglio in ExcelMiliardi di righe
Più scritture contemporaneeNoLimitateSì, con lock e transazioni
Trovare un recordLeggere tutto il fileFiltrare o cercareRicerca tramite indice
Regole sui datiNessunaConvalida facoltativaTipi, vincoli, chiavi esterne
Fare domandeScrivere il proprio codiceFormuleSQL o un'API di query

Un foglio di calcolo è un buon strumento per una persona che guarda qualche migliaio di righe. Quando più programmi o utenti scrivono dati nello stesso momento, o i dati devono rispettare delle regole, lo strumento giusto è un database.

Come i database proteggono i dati

Un DBMS scrive ogni modifica in un log prima di toccare i file dei dati (il write-ahead log), così dopo un crash può ripetere o annullare il lavoro non finito. PostgreSQL può salvare un checksum su ogni pagina da 8 KB e segnalare un errore di checksum quando un disco guasto restituisce dati danneggiati. Utenti e permessi decidono chi può leggere o modificare quali tabelle, e la replica mantiene copie su altri server. I programmi devono anche passare l'input degli utenti come parametri, come i segnaposto ? qui sopra, mai incollandolo nel testo SQL, che è il modo in cui avvengono gli attacchi di SQL injection.

Falsi miti comuni

  • "SQL è un database." SQL è il linguaggio. PostgreSQL, MySQL e SQLite sono database che lo capiscono.
  • "NoSQL significa niente SQL." Il termine di solito si legge come "not only SQL", non solo SQL, e diversi database NoSQL hanno linguaggi di query simili a SQL, come il CQL di Cassandra.
  • "Un database è sempre un grande server." SQLite è un singolo file che un programma apre direttamente, senza alcun server. Gira dentro ogni telefono Android e iOS.
  • "I dati in un database sono al sicuro per sempre." Un database protegge dai crash, non da qualcuno che esegue DELETE per sbaglio. I backup servono comunque.

Cosa leggere dopo

Il corso SQL insegna le query a partire dal primo SELECT. La documentazione di SQLite copre i passi successivi: cos'è SQLite, creare una tabella, gli indici e prevenire la SQL injection. Per vedere come sono disposti i dati sul disco, leggi cos'è un byte, e checksum spiega come vengono scoperte le pagine danneggiate.

Domande frequenti

Cos'è un database in parole semplici?
Un database è il posto dove un programma conserva le informazioni per poterle ritrovare in fretta. Pensa a uno schedario con un indice perfetto: chiedi "tutti gli ordini della settimana scorsa" e ricevi la risposta in pochi millisecondi, anche quando ci sono milioni di record.
Qual è un esempio di database?
I contatti del tuo telefono sono salvati in un database: sia Android sia iOS includono SQLite. Una banca tiene i conti dei clienti in un database come Oracle o PostgreSQL, e Wikipedia salva le sue voci in MariaDB. Un negozio online tiene prodotti, clienti e ordini in tabelle collegate tra loro.
Quali sono i quattro tipi di database?
Non esiste un elenco ufficiale di quattro. I quattro citati più spesso sono i database relazionali (tabelle e SQL), i database a documenti (record simili a JSON), i database chiave-valore (un valore cercato tramite una chiave) e i database a grafo (nodi e relazioni). I libri di testo più vecchi elencano anche i database gerarchici e reticolari.
Quali sono i 5 database più usati?
Oracle, MySQL, Microsoft SQL Server, PostgreSQL e MongoDB occupano da anni i primi cinque posti della classifica di popolarità DB-Engines. Tra chi sviluppa, PostgreSQL è il database più usato nello Stack Overflow Developer Survey dal 2023, e SQLite è il più diffuso in assoluto, perché è incluso nei telefoni e nei browser.
Qual è la differenza tra un database e un DBMS?
Il database sono i dati stessi, organizzati in tabelle o documenti. Il DBMS è il software che salva quei dati su disco e risponde alle richieste, come PostgreSQL o MySQL. Spesso si dice "database" per entrambi.
Devo imparare SQL per usare un database?
Per i database relazionali, sì: SQL è il modo in cui crei le tabelle e interroghi i dati, e le basi si imparano in pochi giorni. Molti programmi usano una libreria che scrive l'SQL al posto tuo, ma conoscere SQL rende molto più facile capire cosa sta facendo quella libreria e perché una query è lenta.
Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA