Ciao, e benvenuto nella quinta puntata della cinquantacinquesima stagione. Finora abbiamo visto come Mongo conserva i dati. Oggi guardiamo l'altra metà: come glieli chiedi. E scopriamo che il modo di interrogare Mongo, quando le domande si fanno complesse, ha una forma tutta sua, diversa e affascinante. Oggi capiamo come si fanno domande ai documenti, con la pipeline di aggregazione.
Partiamo dal facile, perché parte semplice. Le domande semplici, in Mongo, sono semplici. Dammi il documento con questo identificatore. Dammi tutti gli ordini di questo cliente. Dammi i prodotti sotto un certo prezzo. Cose così sono immediate: descrivi cosa cerchi, e Mongo te lo dà. Fin qui, niente di strano, ogni base di dati sa fare questo. Ma le vere domande interessanti sono altre: quanto ho venduto per ogni categoria, questo mese? Chi sono i miei dieci clienti migliori? Qui serve qualcosa di più.
Voglio darti l'idea centrale, perché è elegante. Per le domande complesse, Mongo usa un'idea che chiama pipeline di aggregazione. Immaginala così: i tuoi dati entrano da un'estremità e attraversano una catena di stazioni, una dopo l'altra. Ogni stazione fa una sola cosa e passa il risultato alla successiva. La prima stazione, per esempio, tiene solo gli ordini di questo mese. La seconda li raggruppa per categoria. La terza somma gli importi di ogni gruppo. La quarta ordina dal più alto al più basso. Alla fine della catena esce la risposta. Non una singola operazione mostruosa, ma una sequenza di passi semplici, ciascuno chiaro.
Voglio darti l'immagine che rende chiara questa idea, perché è vivida. Pensa a una catena di montaggio, o meglio, a una serie di setacci e imbuti in fila. In cima versi tutti i tuoi dati grezzi. Il primo setaccio lascia passare solo ciò che ti interessa e trattiene il resto. Quello che passa cade nel secondo, che lo raggruppa in mucchietti. I mucchietti scendono nel terzo, che li pesa. E così via, di stazione in stazione, finché in fondo raccogli esattamente il risultato pulito che volevi. Ogni stazione è semplice; è la loro sequenza a fare il lavoro complicato. Dividi un problema difficile in tanti passi facili, in fila. È lo stesso trucco che usiamo per affrontare qualsiasi cosa complicata nella vita: non risolverla tutta in un colpo, ma spezzarla in pezzetti gestibili, e affrontarli uno alla volta, nell'ordine giusto.
Voglio dirti perché questo modo è bello, perché ha pregi veri. Il pregio di questa catena è la chiarezza. Ogni passo è isolato, comprensibile, e fa una cosa sola. Puoi costruire la tua domanda un pezzo alla volta, aggiungendo stazioni e guardando come cambia il risultato a ogni aggiunta. È come ragionare a voce alta, passo dopo passo, invece di dover formulare tutta la domanda in un colpo solo e perfetta. Per molte persone, pensare i dati come un flusso che attraversa trasformazioni successive è naturale, quasi liberatorio.
Voglio essere onesto sul costo, perché c'è. Ma va detta anche l'altra faccia. Questo modo di interrogare è diverso da quello del mondo relazionale, il linguaggio delle tabelle. Chi arriva da lì deve imparare una nuova mentalità: la conoscenza non si trasferisce così com'è, va reimparata. E per domande davvero contorte, la catena può diventare lunga e non facilissima da seguire. Non è né più facile né più difficile in assoluto del modo relazionale: è un altro modo, con i suoi pregi e la sua curva di apprendimento. Chi ti dice che è banale, o che è impossibile, sta esagerando in una delle due direzioni.
Voglio collegarlo a un tema di sempre, perché torna sotto nuova forma. Ti ricordi, per il mondo relazionale, l'idea di descrivere cosa vuoi invece di come ottenerlo? Anche qui c'è quello spirito, ma vestito diverso. Nel relazionale descrivi il risultato tutto insieme, in una frase. In Mongo lo descrivi come un percorso, passo dopo passo, dove tu però decidi la sequenza delle trasformazioni. È un po' più vicino al come, un po' più esplicito nel percorso. Due sapori diversi della stessa idea: dire alla macchina cosa vuoi ottenere, lasciando a lei il lavoro pesante di ottenerlo. E vedere la stessa idea profonda vestirsi in modi diversi, a seconda del mondo in cui nasce, è una delle cose più istruttive che si possano osservare in questo mestiere: le buone idee non appartengono a nessuno strumento, li attraversano tutti.
Per oggi ci fermiamo qui. Abbiamo visto come si interroga Mongo. Le domande semplici sono semplici: descrivi cosa cerchi e lo ottieni. Per quelle complesse, Mongo usa la pipeline di aggregazione: i dati attraversano una catena di stazioni, ognuna fa una cosa sola e passa il risultato alla successiva, filtra, raggruppa, somma, ordina, e in fondo esce la risposta. Come una serie di setacci e imbuti in fila: ogni passo semplice, la sequenza fa il lavoro difficile. Il pregio è la chiarezza, costruire la domanda un pezzo alla volta. Con l'onestà del costo: è una mentalità diversa da quella relazionale, da reimparare, con la sua curva. È un altro sapore del descrivere cosa vuoi. Nella prossima puntata: distribuire il carico, repliche e scala. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.