Ciao, e benvenuto nella sesta puntata della sessantunesima stagione. Oggi affrontiamo il secondo grande problema difficile del caching, il gemello dell'invalidazione. Perché una cache, per essere veloce, deve essere piccola. E una cosa piccola, prima o poi, si riempie. E allora arriva la domanda spinosa: cosa butti via per fare spazio? Oggi parliamo dello sfratto.
Partiamo dal perché la cache deve restare piccola, perché non è ovvio. Potresti chiederti: se una cache è così utile, perché non farla enorme e tenerci dentro tutto? La risposta è che la piccolezza è proprio ciò che la rende veloce. Le memorie velocissime sono piccole e costose, lo abbiamo visto. Se ingrandisci la cache all'infinito, o diventa lenta, e allora non è più una cache, o costa una fortuna. Quindi una buona cache è per forza limitata: ci sta solo un pezzetto di tutto ciò che potresti volerci mettere. Ed è proprio questo limite a generare il problema di oggi.
Voglio metterti davanti al momento della verità, perché è un dilemma preciso. Immagina la cache piena. Arriva una nuova cosa da mettere da parte, una copia che ti servirà. Ma non c'è più posto. Per farla entrare, devi buttarne fuori un'altra, una che c'era già. Quale? Questa è la decisione dello sfratto: scegliere quale copia sacrificare per fare spazio a quella nuova. E non è una scelta da poco, perché è una scommessa sul futuro: stai cercando di indovinare quale delle copie che hai non ti servirà più a breve, per buttare proprio quella e tenere le altre.
Voglio darti la strategia più usata, perché è geniale nella sua semplicità. Come si indovina cosa non servirà più? Non possiamo vedere il futuro, quindi ci affidiamo al miglior indizio che abbiamo: il passato recente. La strategia più diffusa dice, in sostanza: butta via la cosa che non usi da più tempo. L'idea è semplice e sorprendentemente efficace: se una copia non la tocchi da un pezzo, probabilmente non ti serve granché, mentre quelle che hai usato di recente sono le più calde, e le vorrai ancora presto. È la stessa località di cui parlavamo: il passato recente è la miglior bussola per il futuro immediato. Non è perfetta, ma è la scommessa più sensata che si possa fare senza una sfera di cristallo.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa a un frigorifero piccolo. Non ci sta tutto quello che vorresti, quindi devi scegliere. Quando torni dalla spesa e non c'è più posto, cosa butti? Il buon senso ti dice: butta le cose che sono in fondo da settimane, che non hai più toccato, e tieni quelle che usi di continuo. Nessuno butterebbe il latte che usa ogni mattina per fare spazio a un barattolo che aprirà chissà quando. Buttare via ciò che non tocchi da tempo, e tenere ciò che usi spesso: è esattamente la stessa logica dello sfratto in una cache. Un piccolo frigo ben gestito tiene sempre a portata di mano le cose giuste.
Voglio mostrarti come si può sbagliare, perché è istruttivo. Naturalmente, una politica di sfratto può prendere cantonate. Immagina di dover andare in fondo al frigo a prendere una cosa che usi una volta all'anno: in quel preciso istante, quella cosa risulta usata di recente, e magari salvi lei e butti qualcosa di più utile. Le regole basate sul passato recente falliscono quando il futuro non somiglia al passato, quando c'è un evento eccezionale, o un accesso strano e isolato. Per questo esistono politiche più raffinate, che non guardano solo all'ultima volta, ma anche a quanto spesso una cosa viene usata. Ma il principio resta lo stesso: sono tutte scommesse sul futuro, fatte guardando indizi del passato.
Voglio darti la lezione generale, perché è filosofica. La lezione è che una cache, per sua natura, deve dimenticare. Non può ricordare tutto, e la sua intelligenza sta non solo in cosa sceglie di tenere, ma in cosa sceglie di lasciar andare. È un promemoria interessante: anche per una macchina, come per una mente, la memoria buona non è quella che tiene tutto, ma quella che tiene le cose giuste e lascia svanire il resto. Saper dimenticare bene è una forma di intelligenza, non il suo contrario.
Per oggi ci fermiamo qui. Abbiamo visto lo sfratto. Una cache deve restare piccola, perché la piccolezza è ciò che la rende veloce; e una cosa piccola, prima o poi, si riempie. Allora, per far entrare una copia nuova, devi buttarne fuori una vecchia, scommettendo su quale non ti servirà più. La strategia più diffusa e sensata è buttare ciò che non usi da più tempo, perché il passato recente è la miglior bussola per il futuro. Come in un frigo piccolo, dove tieni il latte di ogni mattina e butti ciò che è in fondo da settimane. Con i suoi errori, quando il futuro non somiglia al passato. La lezione: una cache deve dimenticare, e l'intelligenza sta nel dimenticare le cose giuste. Nella prossima puntata: il caching sul web, dal browser ai depositi vicini agli utenti. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.