Trys iš Stats4U 2 likę stulpeliai
Šiame straipsnyje
Pagrindinėje skaitiklių lentelėje čia yra 166 436 eilutės ir nemažai svarbiai atrodančių stulpelių. Trys iš jų – lastdomain, firstdomain ir userdomain. Juose yra duomenų:
lastdomain | netuščias 15 525 eilutėse |
firstdomain | netuščias 15 457 eilutėse |
userdomain | netuščias 2 982 eilutėse |
Niekas į juos nerašo. Nė vienas sakinys visame kode nenustato nė vieno iš šių trijų. Reikšmės likusios iš ankstesnės šios paslaugos kartos, sustingusios ties tuo, kokios buvo jai nustojus veikti, o kiekviena nuo to laiko sukurta eilutė yra tuščia.
Kodėl pusiau užpildytą stulpelį skaityti sunkiau nei tuščią
Visiškai tuščias stulpelis akivaizdžiai miręs. Niekas juo nesiremia, iš jo nekuria ataskaitų ir neleidžia popietės svarstydamas, ką jis reiškia.
Stulpelis, užpildytas 9 % eilučių, yra spąstai. Jis atrodo kaip laukas, kuris kartais užpildomas, o kartais ne — tai visai įprasta stulpeliui. Jį radęs žmogus pagrįstai nusprendžia, kad yra taisyklė, kada jį nustatyti, ir pradeda jos ieškoti. Jos nėra.
O pasenusios reikšmės nėra paslėptos neveikliose eilutėse, kur negalėtų pakenkti. Iš eilučių, turinčių lastdomain, 1 613 priklauso skaitikliams, kurie dar atnaujinti šiemet. Veikiantis skaitiklis su prieš dešimtmetį įrašytu domenu atrodo lygiai taip pat kaip veikiantis skaitiklis su dabartiniu.
Dar blogiau, duomenys įtikimi. Tai domenai, jie atrodo kaip skaitiklių domenai, o pagal juos sujungianti užklausa grąžina eilutes. Ji atsakytų į klausimą apie jau pasikeitusį žiniatinklį.
Kaip greitai nustatyti
Ieškokite įrašymo operacijų su grep, o ne pavadinimo. Stulpelio pavadinimas pasitaiko SELECT sąrašuose, schemų išklotinėse, senose migracijose, komentaruose — visa tai nieko neįrodo. Lemiamas dalykas – ar jį mini kuris nors INSERT arba UPDATE sakinys. Tokia paieška trunka minutę ir pateikia galutinį atsakymą, kurio negaunama vien skaitinėjant aplinkinį kodą.
Antra patikra – patys duomenys: jei naujausia reikšmę turinti eilutė yra daugelio metų senumo, stulpelis yra fosilija, kad ir ką, regis, sakytų kodas.
Kodėl jie tebėra
Pašalinti stulpelį pigu, bet ne nemokama. Kiekviena šių eilučių priklauso kieno nors skaitikliui, kai kurie jų be pertraukos veikia nuo 2006 m., o saugus žingsnis prieš keičiant tokios lentelės schemą – išklotinė, kuri bent kartą iš tiesų atkurta, o ne tik pagaminta. Nuo to laiko toks bandymas jau atliktas. Kol jų šalinimas nėra vertas atskiro darbo, trys nenaudojami stulpeliai nekainuoja nieko, išskyrus akimirką painiavos, o toliau aprašyta pastaba pašalina net ją.
Todėl vietoj to jie dokumentuoti. Akivaizdžios vietos pastabai nėra — šios duomenų bazės schema egzistuoja tik veikiančioje duomenų bazėje, o ne kokiame nors saugyklos faile, — todėl ji atsidūrė ten, kur kas nors iš tiesų užklius: klasėje, skaitančioje skaitiklio eilutę, ties vieta, pro kurią eina stulpeliai. Pastaba faile, kurio niekas neatveria, nėra dokumentacija. Ji paverčia spąstus išnaša tik tada, jei yra kelyje.