Tri kolone zaostale iz Stats4U 2
U ovom članku
Glavna tabela brojača ovde ima 166.436 redova i niz kolona koje izgledaju kao da su važne. Tri od njih su lastdomain, firstdomain i userdomain. Sadrže podatke:
lastdomain | nije prazno u 15.525 redova |
firstdomain | nije prazno u 15.457 redova |
userdomain | nije prazno u 2.982 reda |
Ništa ih ne upisuje. Nijedan iskaz nigde u kodu ne postavlja nijednu od te tri. Vrednosti potiču iz prethodne generacije ove usluge, zamrznute na onome što su bile kada je prestala da radi, a svaki red napravljen od tada je prazan.
Zašto napola popunjena kolona zbunjuje više od prazne
Potpuno prazna kolona je očigledno mrtva. Niko na njoj ne gradi, niko iz nje ne izveštava, niko ne troši popodne pitajući se šta znači.
Kolona popunjena kod 9% redova je zamka. Izgleda kao polje koje se ponekad popunjava, a ponekad ne — što je potpuno obična stvar za kolonu. Svako ko je nađe razumno zaključuje da postoji pravilo koje odlučuje kada se postavlja i počinje da ga traži. Pravila nema.
A zastarele vrednosti nisu sklonjene u uspavane redove gde ne bi mogle da naškode. Od redova koji nose lastdomain, 1.613 pripada brojačima koji su ažurirani još ove godine. Živ brojač sa domenom zabeleženim pre deset godina izgleda potpuno isto kao živ brojač sa aktuelnim.
Još gore, podaci su verodostojni. To su domeni, liče na domene brojača, a upit koji se njima spaja vraća redove. Odgovarao bi na pitanje o vebu koji je otišao dalje.
Kako brzo proveriti
Tražite upise, a ne ime. Ime kolone pojavljuje se u SELECT listama, u dumpovima šeme, u starim migracijama, u komentarima — što ništa ne dokazuje. Odlučuje to da li je pominje bilo koji INSERT ili UPDATE . Ta pretraga traje minut i neosporna je na način na koji čitanje oko koda nije.
Druga provera su sami podaci: ako je najnoviji red sa vrednošću star godinama, kolona je fosil bez obzira na ono što kod naizgled kaže.
Zašto su još tu
Brisanje kolone je jeftino, ali nije besplatno. Svaki od tih redova pripada nečijem brojaču, neki rade neprekidno od 2006, a bezbedan korak pre promene šeme na ovakvoj tabeli jeste dump koji je zaista jednom vraćen, a ne samo napravljen. Ta vežba je od tada obavljena. Dok brisanje nije vredno samo po sebi, tri neupotrebljene kolone ne koštaju ništa osim trenutka zbunjenosti, a beleška opisana ispod uklanja i to.
Zato su umesto toga dokumentovane. Nema očiglednog mesta za tu belešku — šema ove baze postoji samo u bazi koja radi, a ne u nijednoj datoteci u repozitorijumu — pa je otišla tamo gde bi neko zaista naleteo na nju: u klasu koja čita red brojača, tačno tamo gde kolone prolaze. Beleška u datoteci koju niko ne otvara nije dokumentacija. Zamku pretvara u fusnotu samo ako stoji na putu.