Ciao, e benvenuto nella quinta puntata della cinquantaseiesima stagione. Oggi affrontiamo il ribaltamento mentale più spiazzante di questa famiglia di basi di dati, quello che manda in crisi chi arriva dal mondo relazionale, e che è insieme la sua più grande forza e il suo prezzo più alto. Oggi capiamo cosa vuol dire progettare a partire dalle domande.
Partiamo dal modo a cui siamo abituati, perché è il contrasto. Nel mondo relazionale, quello di Postgres e MySQL, l'ordine delle cose è questo: prima organizzi i dati nel modo più pulito e corretto possibile, con ogni informazione al suo posto giusto; e solo dopo, a struttura pronta, fai le domande che vuoi, anche quelle che non avevi previsto. È il database, con il suo pianificatore, a sudare per trovare le risposte. Prima la struttura giusta, poi le domande libere: questo è il patto relazionale.
Voglio darti il ribaltamento di Scylla, perché è l'esatto opposto. In Scylla si fa il contrario, e bisogna proprio capovolgere la testa. Prima scrivi la lista delle domande esatte che il tuo sistema dovrà fare. Chi vorrà leggere cosa, e come. E solo dopo, guardando quelle domande, dai ai dati la forma che risponde a ciascuna nel modo più veloce possibile: idealmente, ogni domanda soddisfatta leggendo una sola partizione, in un colpo solo. Non parti dai dati per arrivare alle domande. Parti dalle domande per arrivare ai dati. È un rovesciamento completo del punto di partenza.
Voglio dirti la conseguenza più strana, perché all'inizio disturba. La conseguenza è che, spesso, in Scylla scrivi la stessa informazione più volte, in tabelle diverse, ognuna disegnata per una domanda diversa. Se una cosa la cerchi sia per nome sia per data, potresti tenerne due copie, organizzate in due modi. A chi viene dal mondo relazionale, dove duplicare è quasi peccato, questo sembra un'eresia. Ma qui non lo è: è la strategia. Preferisci sprecare un po' di spazio su disco, che costa poco, per guadagnare un'enorme velocità in lettura, che vale tanto. Lo spazio è economico; il tempo di risposta, sotto carico, è prezioso. È un capovolgimento di valori che spiazza: per anni ci hanno insegnato che duplicare i dati è sbagliato, sintomo di disordine. Qui la duplicazione è ordine, se è deliberata: ogni copia esiste per servire in fretta una domanda ben precisa.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa alla differenza tra una biblioteca con un unico grande catalogo che puoi interrogare come vuoi, e un negozio che prepara in anticipo dei pacchetti già pronti per le richieste più comuni. La biblioteca è flessibile: qualunque domanda tu abbia, lei si arrangia a cercare, ma ci mette il suo tempo. Il negozio con i pacchetti pronti è fulmineo per le richieste previste: chiedi, e il pacchetto è già lì, confezionato. Ma se chiedi qualcosa per cui non ha preparato un pacchetto, resti a mani vuote. Scylla è il negozio dei pacchetti pronti: velocissimo sul previsto, in difficoltà sull'imprevisto.
Voglio essere onesto sul prezzo, perché è alto e va detto. E qui il rovescio, senza sconti. Questo modo di progettare è rigido. Ti costringe a conoscere in anticipo come userai i dati, cosa non sempre è possibile, specie all'inizio di un progetto. E se domani arriva una domanda nuova, di un tipo che non avevi previsto, non puoi semplicemente farla: devi ristrutturare, o creare l'ennesima copia dei dati disegnata apposta. Inoltre, tenere sincronizzate tutte quelle copie, quando un dato cambia, diventa una tua responsabilità, con tutti i rischi che abbiamo già visto parlando di duplicazione. La flessibilità che il mondo relazionale ti regalava, qui la paghi.
Voglio darti la lezione generale, perché è un principio, non solo una tecnica. La lezione è che velocità e flessibilità sono spesso in tensione, e ogni sistema decide dove mettersi. Il mondo relazionale sceglie la flessibilità: chiedi quello che vuoi, quando vuoi, e paghi in velocità alle scale estreme. Scylla sceglie la velocità: rinuncia a chiedere quello che vuoi, e in cambio va fortissimo su ciò per cui è stato disegnato. Nessuna delle due è la scelta giusta in assoluto. La scelta giusta dipende, come sempre, dal tuo problema: sai in anticipo cosa chiederai, oppure no? Se sai esattamente quali domande farai, e le farai milioni di volte al secondo, Scylla è magnifico. Se non lo sai ancora, o se le domande cambieranno di continuo in modi imprevedibili, la sua rigidità diventa una gabbia, e forse ti serve la flessibilità di un altro mondo.
Per oggi ci fermiamo qui. Abbiamo capito il ribaltamento di Scylla. Nel mondo relazionale prima sistemi i dati, poi fai le domande libere. In Scylla è l'opposto: prima elenchi le domande esatte, poi dai ai dati la forma che risponde a ciascuna in un colpo solo. La conseguenza strana: duplichi la stessa informazione in più tabelle, una per domanda, perché lo spazio costa poco e la velocità vale tanto. Come un negozio di pacchetti pronti: fulmineo sul previsto, a mani vuote sull'imprevisto. Con un prezzo onesto: è rigido, devi conoscere prima i tuoi usi, e le copie vanno tenute in sincronia. La lezione: velocità e flessibilità sono in tensione, e Scylla sceglie la velocità. Nella prossima puntata: nessun padrone, la distribuzione tra pari. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.