Ciao, e benvenuto nell'ottava puntata della cinquantasettesima stagione. Oggi affrontiamo una delle promesse più sbandierate dei mappatori, e anche una delle più fraintese: l'idea che, grazie a loro, tu possa cambiare database quando vuoi, come cambiare una gomma all'auto. Oggi parliamo del dialetto e della promessa della portabilità.
Partiamo dalla promessa, perché è allettante. Suona più o meno così: scrivi il tuo codice usando il mappatore, senza legarti a nessun database in particolare. Se un domani vuoi passare da un database a un altro, ti basterà cambiare una riga di configurazione, e tutto continuerà a funzionare. Il tuo codice resta lo stesso; è il mappatore che, dietro le quinte, traduce le tue richieste nel linguaggio specifico del database di turno. La libertà di non essere prigioniero di una scelta fatta all'inizio. Detta così, è una promessa magnifica.
Voglio spiegarti perché in parte è vera, perché non è una bugia. Questa promessa si regge su un fatto reale: i database relazionali parlano lingue molto simili tra loro, ma non identiche. Ognuno ha il suo dialetto, piccole differenze nel modo di scrivere le stesse cose. Il mappatore conosce questi dialetti, e quando gli chiedi un'operazione comune, la traduce nel dialetto giusto per il database che stai usando. Per tutto il lavoro ordinario, quello di sportello, creare, leggere, aggiornare, cancellare le cose in modo semplice, la traduzione funziona davvero, e cambiare database è quasi indolore. L'ottanta per cento delle operazioni di un'applicazione tipica è fatto di queste cose semplici.
Voglio dirti dove la promessa si incrina, perché è il punto onesto. Il problema è l'altro venti per cento. Ogni database, l'abbiamo visto per intere stagioni, ha i suoi superpoteri unici: un modo speciale di trattare certi dati, un tipo di indice particolare, una funzione avanzata che gli altri non hanno. Sono proprio le caratteristiche che ti hanno fatto scegliere quel database. E queste caratteristiche speciali, per definizione, non si traducono: sono uniche di quel dialetto. Nel momento in cui le usi, il tuo codice si lega a quel database, e la promessa della portabilità svanisce. Il mappatore ti dà l'indipendenza solo finché ti accontenti del minimo comune denominatore, cioè finché rinunci a tutto ciò che rende speciale il database che hai scelto.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa a un adattatore universale da viaggio, quello che porti in valigia. Per caricare il telefono in qualunque paese del mondo, è perfetto: infili la spina e funziona ovunque. Ma prova a collegarci un elettrodomestico potente, che ha bisogno delle caratteristiche specifiche della rete elettrica locale, e l'adattatore universale non basta più. Il mappatore è quell'adattatore: magnifico per le esigenze comuni e semplici, insufficiente quando ti servono i superpoteri specifici del database sotto. Comodo per il telefonino, inadatto per il macchinario industriale. E nessuno butterebbe via l'adattatore per questo: semplicemente, sa quando basta e quando no. Con il mappatore vale lo stesso: usarlo per il lavoro comune è saggio, pretendere che sostituisca la conoscenza del database specifico è illudersi.
Voglio darti anche il rovescio della medaglia, perché è ironico. E c'è un'ironia che chiude un cerchio delle stagioni passate. Abbiamo dedicato quattro stagioni a celebrare quanto ogni database sia speciale e diverso dagli altri: il rigore dell'uno, il pragmatismo dell'altro, la flessibilità dei documenti, la velocità estrema delle colonne larghe. Ecco: un mappatore generico, per darti la portabilità, deve appiattire proprio tutte queste differenze, trattarle come se non esistessero, ridurle a un fondo comune. Ti offre libertà in cambio di specialità. E spesso, la verità è un'altra ancora: quasi nessuno cambia mai davvero database. La portabilità è un'assicurazione per cui paghi un premio, rinunciando ai superpoteri, contro un evento che quasi mai accade.
Voglio darti la lezione generale, perché è un principio prezioso. La lezione è che ogni strato che ti rende indipendente da qualcosa lo fa a un prezzo: ti nasconde ciò che quel qualcosa ha di speciale. L'indipendenza dal dettaglio è comoda, a volte saggia. Ma se il dettaglio era proprio la ragione della tua scelta, rinunciarci per un'indipendenza che forse non userai mai è un cattivo affare. Prima di pagare il prezzo della portabilità, chiediti onestamente: cambierò mai davvero? E se la risposta è no, forse conviene abbracciare fino in fondo il database che hai scelto, superpoteri compresi.
Per oggi ci fermiamo qui. Abbiamo esaminato la promessa della portabilità: cambia database con una riga, dicono. In parte è vera, perché i database relazionali parlano dialetti simili, e per il lavoro semplice il mappatore traduce senza problemi. Ma si incrina sull'altro venti per cento: i superpoteri unici di ogni database, proprio quelli per cui l'hai scelto, non si traducono, e usarli ti rilega a quel database. Come un adattatore da viaggio, ottimo per il telefono, inutile per il macchinario. E c'è l'ironia: per darti portabilità, il mappatore appiattisce tutte le specialità che abbiamo celebrato per stagioni. La lezione: ogni indipendenza si paga nascondendo ciò che è speciale. Nella prossima puntata: magia utile, magia pericolosa, quando usare un mappatore e quando no. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.