Database senza misteri

Database e DBMS: chi fa cosa

9 min
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.

Un cadetto all'ingresso del deposito: tra lui e gli scaffali della memoria si erge un guardiano olografico che fa da intermediario — il DBMS
L'archivio custodisce la memoria, ma è il custode a rispondere alle domande: la query arriva al DBMS, e solo lui tocca i dati.

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.

clientDBMSparserplannerexecutordata filesSQL queryresultdatathe client talks to the DBMS, not the files directly
Tutte le strade verso i dati passano dal DBMS: riceve l'SQL, lo esegue e protegge l'integrità del database.

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.

Check yourself
Chi si occupa di che cosa: il database o il DBMS?