Database e DBMS: chi fa cosa
What you'll learn
- a distinguere un database (un archivio organizzato) da un , cioè il programma che esegue le query SQL e gestisce i dati
- a spiegare il percorso di una query, «SQL → DBMS → risultato», e perché un mucchio di file Excel non regge migliaia di utenti in contemporanea
- a elencare ciò che un DBMS offre in più rispetto ai «semplici file»: transazioni, registro di ripristino (), controllo degli accessi (
GRANT), controlli di integrità
Capitolo 1 — «La mappa dell'archivio»
Lo di Kotomarket non è più un segnale proveniente da un settore morto: ora si trova in un compartimento di quarantena a bordo di Vault-9 e, sotto l'ultima riga del , compare sempre la stessa firma: «K.». Stamattina sul tuo olopannello lampeggia una nuova voce: «Accesso concesso: l'inventario dell'archivio. Rilasciato da: modulo S.Q.L.» La porta del deposito scivola di lato; dietro, immersi in una luce ambrata, i rack dei server ronzano con ritmo regolare.
QUERY: Prima di leggere la memoria di qualcun altro, devi capire com'è fatta. Partiamo dall'essenziale: che cosa, qui dentro, è il deposito e chi ne è il custode.
Database e DBMS
Un database è un archivio organizzato. Nello snapshot di Kotomarket ci sono clienti, prodotti, ordini ed eventi: non buttati alla rinfusa in qualche file, ma disposti in una struttura chiara. È per questo che, dopo centosessant'anni, possiamo ancora leggerli.
L'archivio, però, da solo non risponde alle domande. Serve un programma capace di creare tabelle, registrare nuovi ordini, leggere i dati e impedire che i collegamenti si rompano. Quel programma è un (sistema di gestione di database). Alcuni esempi: PostgreSQL, MySQL, ClickHouse. Il nostro snapshot è un database PostgreSQL e parla ancora lo stesso SQL di quando il negozio era vivo.
Tu scrivi una query in SQL → la invii al DBMS → il DBMS recupera i dati richiesti e ti restituisce il risultato. Excel va benissimo per un foglio di calcolo personale, ma non per un negozio in cui migliaia di utenti sfogliano prodotti, effettuano ordini e lasciano eventi nel sistema nello stesso momento.

Database and DBMS
A database is an organized store. The Kotomarket holds buyers, products, orders, and events — not scattered across files, but in a clear structure. That’s exactly why it can still be read a hundred and sixty years later.
But the store itself doesn’t answer questions. You need a program that can create tables, record new orders, read data, and make sure the links never break. That’s a (database management system). Examples: PostgreSQL, MySQL, ClickHouse. Our snapshot is a PostgreSQL database, and it still speaks the same SQL it did when the shop was alive.
You write a query in SQL → send it to the DBMS → the DBMS fetches the data you asked for and returns the result. Excel is fine for a personal spreadsheet, but not for a shop where thousands of users browse products, place orders, and leave events in the system all at once.
Che cosa sa fare un DBMS che i «semplici file» non possono
A prima vista il negozio potrebbe cavarsela anche senza un : basterebbe scrivere gli ordini in un CSV o in Excel. Per un taccuino personale funziona anche così, finché non arrivano proprio i problemi per cui i DBMS sono stati inventati.
- Accesso concorrente. Quando Kotomarket era attivo, i clienti effettuavano ordini nello stesso momento. Due processi che scrivono sullo stesso file rischiano di cancellarsi a vicenda le modifiche; un DBMS esegue le modifiche come transazioni e coordina da solo le operazioni parallele. PostgreSQL lo fa tramite il meccanismo : chi legge non blocca chi scrive, e viceversa.
- Ripristino dopo un guasto. Se l'alimentazione salta a metà di una scrittura, il file può corrompersi e non è chiaro quale parte dell'ordine sia stata salvata. Il DBMS registra prima la modifica in un registro (in PostgreSQL il , write-ahead log) e dopo un guasto la riapplica: l'ordine viene scritto per intero oppure non viene scritto affatto.
- Controllo degli accessi. Un file, di solito, è accessibile o non lo è. In un DBMS i permessi sono granulari, fino alla singola tabella:
-- All'analista solo la lettura degli ordini, senza il diritto di modificarli
GRANT SELECT ON orders TO analyst;
- Integrità. Un DBMS non accetta un ordine con un prezzo scritto come testo, né un riferimento a un cliente che non esiste: i tipi delle colonne e i vincoli vengono controllati a ogni scrittura. A un file, invece, non importa che cosa ci sia dentro.
- Domande dichiarative. «Mostrami gli ordini sopra i 5000» è una sola riga di SQL. Con un file, lo stesso lavoro ricade su un programma che qualcuno deve scrivere, e scrivere bene.
Un è l'intermediario operativo tra te e i dati: riceve le query SQL, le esegue e impedisce al database di precipitare nel caos. In questo corso useremo PostgreSQL, molto richiesto per ruoli in ambito analytics e backend. Il custode, ormai, lo hai conosciuto. Ma prima di aprire l'inventario del nostro , QUERY ti accompagna nella sezione accanto: il registro degli altri archivi della vecchia Terra. Così capirai perché proprio il nostro, e solo il nostro, è sopravvissuto intatto.
Interview question
Domanda da colloquio: qual è la differenza tra un database e un ? Perché un'applicazione non dovrebbe semplicemente conservare i dati in file?
Risposta efficace: un database è l'insieme organizzato dei dati; un DBMS è il programma che li gestisce (PostgreSQL, MySQL, ClickHouse). I file non offrono accesso concorrente affidabile (le scritture parallele possono sovrascriversi), né ripristino dopo un guasto (un DBMS tiene un registro e riapplica le modifiche incomplete), né permessi granulari, né controlli di integrità. Soprattutto, un DBMS risponde a query SQL dichiarative, mentre un file va interpretato con codice scritto da te.