La freschezza dei dati dei paesi viene normalmente riportata come un unico numero: l’ultima volta che il set di dati è stato aggiornato. Quel numero è quasi sempre fuorviante, perché un set di dati non viene aggiornato con un solo movimento.
Una tipica tabella di paesi è assemblata da diverse fonti, recuperate in momenti diversi, che coprono ambiti diversi. Una voce può essere stata corretta il mese scorso mentre una voce vicina è rimasta intatta per anni, e un’unica data in cima al file non può esprimere quella differenza.
Cosa fa invecchiare i dati dei paesi?
Tre forze, e operano su orologi diversi.
La prima è il mondo che cambia. I nomi cambiano, le valute cambiano, le divisioni amministrative vengono riorganizzate, e i codici vengono aggiunti, deprecati o riservati. Nessuno di questi eventi si annuncia a un sistema che non lo sta osservando.
La seconda è la fonte che cambia sotto di te. Anche una fonte che rimane accurata può rivedere la propria presentazione, ritirare un campo o iniziare a includere entità che prima ometteva, quindi un aggiornamento può importare un cambiamento che nessuno ha richiesto.
La terza è la deriva dell’ambito. Una regola scritta per le entità che un set di dati conteneva al momento diventa silenziosamente sbagliata quando quell’insieme cresce, e l’errore appare come eccezione invece che come guasto.
Solo la seconda delle tre è visibile in un registro di aggiornamento. Le altre due sono il motivo per cui un set di dati può essere aggiornato puntualmente e comunque essere sbagliato.
Registrare la fonte, la data di recupero e l’ambito separatamente
Tre attributi spiegano la provenienza di un valore, e ridurli a un unico timestamp distrugge la capacità di ragionarci.
| Attributo | La domanda a cui risponde | Perché non può essere dedotto |
|---|---|---|
| Fonte | Da dove viene questo valore | Due fonti possono divergere, e la divergenza è informazione |
| Data di recupero | Quando è stato recuperato questo valore | Il recupero non è la stessa cosa della data in cui la fonte stessa è cambiata |
| Ambito | Quali entità e campi copre questo valore | Una fonte può essere autorevole per i nomi ma muta sulle suddivisioni |
L’attributo dell’ambito è quello più spesso mancante e il più costoso da ricostruire. Senza di esso, un campo vuoto è ambiguo: la fonte ha detto che non c’era nulla, oppure alla fonte non è stato mai chiesto di questo campo.
Memorizzare i tre insieme rende anche leggibili i conflitti. Quando due fonti divergono su un nome, un lettore può vedere quale valore provenga da dove e quando, e la risoluzione diventa una decisione con prove invece che un lancio di moneta.
Tre strategie di aggiornamento e quanto costa ciascuna
Esistono in linea di massima tre modi per mantenere attuali i dati dei paesi, e scambiano sforzo con sorpresa in modo prevedibile.
Il prelievo a scadenza è il più semplice: aggiorna tutto periodicamente, indipendentemente dal fatto che qualcosa sia cambiato. È facile da ragionare e facile da dimenticare, perché un lavoro pianificato che fallisce silenziosamente non produce alcun sintomo visibile finché i dati non sono sbagliati.
Il prelievo su segnale è più efficiente: osserva gli avvisi di cambiamento degli organismi che pubblicano codici e nomi, e aggiorna quando qualcosa viene effettivamente annunciato. Reagisce rapidamente e dipende da qualcuno che legga gli avvisi, il che significa che fallisce proprio nei periodi in cui nessuno guarda.
L’aggiornamento su richiesta è il meno appariscente e spesso il più affidabile per un piccolo set di dati: aggiorna una voce specifica quando sorge una domanda su di essa, e registra chi l’ha chiesta e perché. Mantiene i dati onesti riguardo alle proprie lacune, al costo di non coprire le voci che nessuno ha ancora messo in dubbio.
La maggior parte dei sistemi reali finisce per combinare tutte e tre, con una scadenza lenta come base, i segnali per le parti in rapido movimento e correzioni mirate per singole segnalazioni. Ciò che conta è che la combinazione sia deliberata e che il risultato sia registrato per voce invece che per release.
Cosa dovrebbe preservare un’istantanea storica?
Un’istantanea è utile solo se può rispondere a una domanda su un momento passato, quindi deve preservare più dei valori.
Preserva i valori come erano, la data che descrivevano e lo stato della fonte che li ha prodotti. Un’istantanea che conserva solo i valori non può spiegare perché il nome di un paese è cambiato tra due release, e un’istantanea che conserva solo la data non può riprodurre nulla.
C’è un limite che vale la pena fissare deliberatamente. Conservare ogni campo per sempre è costoso e raramente consultato; conservare i valori cambiati, con attribuzione, di solito basta a rispondere alle domande che vengono davvero poste: quale nome era in vigore per un dato periodo e quando un codice ha smesso di essere usato.
Il test più prezioso per un’istantanea è quello che ricostruisce un record a una data passata e lo confronta con ciò che il sistema ha prodotto a quel tempo. Se i due divergono, l’istantanea è un diario più che un record.
Per gli sviluppatori: tenere la provenienza sul valore, non sulla release
Memorizza la fonte, la data di recupero e l’ambito accanto a ogni valore, o accanto a ogni gruppo di valori che li condivide. Allora ogni domanda sull’affidabilità diventa una query invece che un esercizio di memoria.
Quando un valore non ha una fonte registrata, trattalo come uno stato che vale la pena far emergere invece che un valore predefinito che vale la pena presumere. La guida alla checklist di copertura dei dati dei paesi illustra i tre stati che un campo può occupare e perché uno sconosciuto dovrebbe restare visibile; la freschezza è semplicemente la quarta dimensione applicata alla stessa tabella.
Per i codici stessi, gli avvisi di cambiamento pubblicati sono i trigger autorevoli, e la guida ai codici ISO di paese e suddivisione copre come i sistemi di codici si relazionano tra loro. Mantieni la directory dei paesi e delle regioni come il luogo neutrale verso cui indirizzare i lettori che vogliono vedere come nomi e codici sono presentati insieme invece che leggere di manutenzione.
I nomi delle fonti, le date di recupero e le etichette di versione usati come esempi sopra sono solo notazione illustrativa. Non sono riferimenti al contenuto, al calendario o alla copertura di alcun set di dati particolare, e non descrivono alcun processo di aggiornamento reale appartenente a un’organizzazione.
Passi successivi
Scegli una voce di paese e prova ad annotare a memoria la sua fonte, la sua data di recupero e il suo ambito. Dove non ci riesci, l’informazione non è memorizzata, e il prossimo disaccordo su quella voce sarà risolto con un’opinione. La guida a scalare i dati di test tra i paesi mostra come un insieme di voci con provenienza disomogenea possa comunque essere usato per generare una popolazione di test coerente.