Ciao, e benvenuto nella nona puntata della settantaseiesima stagione. Abbiamo costruito tutta la macchina dal basso: le pagine, il tavolo, lo schedario, l'ordine, il registro, le transazioni, le versioni. Oggi il pezzo che sta in cima e decide come usare tutto il resto: chi sceglie la strada. Ed è la puntata equilibrata, perché la lezione sorprendente è che la mossa veloce ovvia non è sempre la più veloce. Il titolo: la strada giusta.
Partiamo dal regalo del dichiarativo. A un database non dici come trovare i dati: dici cosa vuoi, gli utenti di Roma, dal più recente, e lui si inventa il come. È la magia delle domande dichiarative. Ma apre un vuoto: per ogni domanda ci sono tante strade possibili, usa questo schedario o quello, oppure percorri tutto; unisci prima questa tabella o quella; e possono costare l'una mille volte l'altra. Qualcuno deve scegliere. Quel qualcuno è il pianificatore.
Pensalo come la bibliotecaria che sa la strada. Tu chiedi una cosa; lei, in silenzio, considera le rotte: percorro tutto lo scaffale, o passo dallo schedario, o parto dall'insieme più piccolo e incrocio con l'altro? Stima il costo di ciascuna in viaggi, e sceglie la più economica. Poi chi esegue segue la strada scelta. Dichiarativo di fuori, una strada scelta di dentro.
E qui la svolta equilibrata: lo schedario non ha sempre ragione. Abbiamo passato una puntata intera a lodare l'indice. Ma la scansione completa, leggere ogni scatola in ordine, a volte è la strada giusta, e il pianificatore lo sa. Se la tua domanda toccherà comunque quasi tutte le righe, mettiamo tutti gli iscritti di quest'anno quando sono l'ottanta per cento, l'indice è una trappola: rimbalzeresti dallo schedario allo scaffale e indietro, un viaggio sparpagliato per ogni riga, più lento che percorrere gli scaffali una volta sola in ordine. L'indice vince quando ti fa saltare quasi tutti i dati; quando li stai prendendo quasi tutti, vince la scansione onesta e in fila. Nessuno dei due è lo strumento veloce: dipende da quanto ne stai tirando su. È ancora la dose giusta di tante nostre stagioni: lo strumento adatto alla forma, non quello più elegante.
Due parole sugli accoppiamenti, perché anche unire due tabelle ha le sue strade. Per ogni riga di qui, cerca la corrispondente là: ottimo quando un lato è piccolissimo. Oppure costruisci al volo una tabella di consultazione rapida di un lato e fai sfilare l'altro davanti: ottimo quando sono entrambi grandi. Oppure ordina i due e falli scorrere a cerniera: ottimo quando sono già in ordine. Stessa risposta, costi lontanissimi a seconda di dimensioni e ordine. Anche qui sceglie il pianificatore.
Come decide? Non conosce i tuoi dati: li stima, con un censimento sommario che tiene da parte. Quante righe, quanti valori diversi, come sono distribuiti. Da lì indovina quante righe produrrà ogni passo, e sceglie il piano più economico. Quando il censimento è fresco e i dati sono normali, è di una bravura quasi inquietante. Ma quando il censimento è vecchio, o i tuoi dati sono sbilanciati in un modo che il riassunto non coglie, o chiedi qualcosa di correlato che non sa modellare, indovina male: sceglie lo schedario dove vincerebbe la scansione, o l'ordine di accoppiamento sbagliato, e una domanda cade da una rupe. È per questo che capita il ieri era veloce: i dati si sono spostati e la stima no. Il pianificatore è un modello di costo, e un modello è una bugia utile che ogni tanto si rompe.
La postura pratica è giusta verso entrambi. Quasi sempre fidati: considera più rotte di quante ne peseresti a mano, e il codice dichiarativo resta pulito. Ma quando una domanda fa i capricci, hai il diritto e il modo di guardare: chiedi al database di mostrarti la strada scelta, e cosa si aspettava rispetto a cosa ha trovato. Lo scarto tra righe attese e reali è, quasi sempre, tutta la storia. Non combatti il pianificatore: gli dai statistiche migliori, o formuli la domanda in modo che la sua strada migliore sia ovvia. Non è né un oracolo né uno sciocco: è uno stimatore veloce che puoi ispezionare e aiutare.
Voglio lasciarti con il rispetto giusto per la bibliotecaria. Scrivi cosa vuoi, e lasciala scegliere la strada: quasi sempre sceglie meglio di te, perché pesa più rotte di quante ne valuteresti a mano. Ma ricorda due cose. La prima: non esiste la mossa veloce in assoluto, né l'indice né la scansione; esiste la mossa giusta per quanti dati stai prendendo. La seconda: quando sbaglia strada, non indovinare al posto suo, aprile gli occhi, guarda il piano che ha scelto e confronta l'atteso con il reale. Lì, in quello scarto, c'è quasi sempre la spiegazione. Tratta chi sceglie la strada come un collega esperto ma non onnisciente: fidati, verifica, e aiutalo con dati aggiornati.
Per oggi ci fermiamo qui. Abbiamo visto il dichiarativo che apre un vuoto, e il pianificatore che lo colma scegliendo la strada; la svolta per cui l'indice non ha sempre ragione e la scansione onesta a volte vince; le tre strade per unire due tabelle; e il censimento con cui il pianificatore stima, bravissimo finché è fresco e onesto, in errore quando invecchia o i dati lo ingannano. La regola resta la dose giusta: lo strumento adatto alla forma del problema. Nella prossima e ultima puntata: la scatola che non dimentica. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.