Tre colonne rimaste da Stats4U 2
Informazioni sui contenuti e sulla loro verifica
In questo articolo
La tabella principale dei contatori ha qui 166.436 righe e alcune colonne che sembrano contare. Tre di esse sono lastdomain, firstdomain e userdomain. Contengono dati:
lastdomain | non vuota in 15.525 righe |
firstdomain | non vuota in 15.457 righe |
userdomain | non vuota in 2.982 righe |
Nulla le scrive. Nessuna istruzione in tutto il codice imposta una delle tre. I valori vengono dalla generazione precedente di questo servizio, congelati a com'erano quando ha smesso di girare, e ogni riga creata da allora è vuota.
Perché una colonna riempita a metà si legge peggio di una vuota
Una colonna del tutto vuota è ovviamente morta. Nessuno ci costruisce sopra, nessuno ne ricava rapporti, nessuno passa un pomeriggio a chiedersi cosa significhi.
Una colonna popolata per il 9 % delle righe è una trappola. Sembra un campo che a volte è riempito e a volte no — cosa del tutto ordinaria per una colonna. Chi la trova conclude ragionevolmente che esista una regola che decide quando viene impostata, e si mette a cercare la regola. Non c'è.
E i valori superati non stanno in disparte su righe dormienti, dove non potrebbero fare danno. Fra le righe che portano un lastdomain, 1.613 appartengono a contatori ancora aggiornati quest'anno. Un contatore vivo con un dominio annotato dieci anni fa è identico a un contatore vivo con uno attuale.
Peggio, i dati sono plausibili. Sono domini, sembrano domini di contatori, e un'interrogazione che ci si collega restituisce righe. Risponderebbe a una domanda su un web che è andato avanti.
Come accertarlo in fretta
Cercare le scritture, non il nome. Il nome di una colonna compare in elenchi SELECT, in esportazioni di schema, in vecchie migrazioni, nei commenti — e nulla di ciò dimostra alcunché. A dirimere è se un qualsiasi INSERT o UPDATE la nomina. Quella ricerca dura un minuto ed è conclusiva in un modo in cui leggiucchiare attorno al codice non lo è.
La seconda verifica sono i dati stessi: se la riga più recente con un valore ha anni, la colonna è un fossile, qualunque cosa sembri dire il codice.
Perché sono ancora lì
Rimuovere una colonna costa poco e non è gratis. Ognuna di queste righe appartiene al contatore di qualcuno, alcuni in funzione ininterrotta dal 2006, e il passo sicuro prima di un cambio di schema su una tabella così è una copia che sia stata davvero ripristinata una volta, non una soltanto prodotta. Quella prova è stata poi fatta. Finché rimuoverle non ne vale la pena di per sé, tre colonne inutilizzate non costano altro che un momento di confusione, e la nota descritta più sotto toglie anche quello.
Sono quindi documentate. Non c'è un posto ovvio per quella nota — lo schema di questo database esiste solo nel database in funzione, in nessun file del repository — così è finita dove qualcuno ci inciamperà davvero: nella classe che legge una riga di contatore, proprio dove quelle colonne passano. Una nota in un file che nessuno apre non è documentazione. Trasforma una trappola in una nota a piè di pagina solo se sta sul percorso.