Звернутися до підтримки

Відповідаємо електронною поштою, зазвичай протягом двох днів.

Google reCAPTCHA перевіряє це звернення на зловживання; дані передаються до Google. Скрипт завантажується лише тоді, коли ви відкриваєте цю форму.

← Усі записи

Стовпці, до яких ніхто не пише

Головна таблиця лічильників має тут 166 436 рядків і кілька стовпців, які виглядають важливими. Три з них — lastdomain, firstdomain і userdomain. У них є дані:

lastdomainнепорожній у 15 525 рядках
firstdomainнепорожній у 15 457 рядках
userdomainнепорожній у 2 982 рядках

Ніхто до них не пише. Жодна вказівка в усьому дереві коду не задає жоден із трьох. Значення родом із попереднього покоління цієї служби, заморожені на тому, чим були, коли воно перестало працювати, і кожен створений відтоді рядок порожній.

Чому це гірше за порожній стовпець

Цілком порожній стовпець очевидно мертвий. На ньому ніхто не будує, з нього ніхто не звітує, ніхто не витрачає вечір на здогади, що він означає.

Стовпець, заповнений у 9 % рядків, — пастка. Він виглядає як поле, яке інколи заповнюється, а інколи ні, що для стовпця цілком звичайно. Хто його знайде, розумно виснує, що є правило, яке вирішує, коли воно ставиться, і піде шукати правило. Його немає.

І застарілі значення лежать не осторонь, на сплячих рядках, де не могли б зашкодити. З рядків із lastdomain 1 613 належать лічильникам, які оновлювалися цього року. Живий лічильник із доменом, записаним десятиліття тому, виглядає точно як живий лічильник із нинішнім.

Гірше того, дані правдоподібні. Це домени, вони виглядають як домени лічильників, і запит, що з’єднує за ними, повертає рядки. Він відповів би на питання про веб, який пішов далі.

Як з’ясувати швидко

Шукайте записи, а не ім’я. Ім’я стовпця трапляється в списках SELECT, у вивантаженнях схеми, у старих міграціях, у коментарях — і все це не доводить нічого. Вирішує те, чи згадує його хоч один INSERT або UPDATE. Такий пошук триває хвилину й остаточний так, як читання довкола коду бути не може.

Друга перевірка — самі дані: якщо найсвіжіший рядок зі значенням давністю в роки, стовпець — скам’янілість, хай би що код видавався казати.

Чому вони все ще там

Прибрати стовпець дешево й не безкоштовно. Кожен із цих рядків належить чиємусь лічильнику, частина працює безперервно з 2006 року, а безпечна дія перед зміною схеми такої таблиці — резервна копія, яку ви справді одного разу відновили, а не просто зробили. Поки це не окупається саме собою, три невживані стовпці не коштують нічого, крім плутанини.

Тому їх натомість задокументували. Очевидного місця для такої примітки немає — схема цієї бази існує лише в працюючій базі, у жодному файлі репозиторію — тож вона потрапила туди, де об неї справді спіткнуться: у клас, що читає рядок лічильника, саме там, де ці стовпці проходять повз. Примітка у файлі, якого ніхто не відкриває, — не документація. Вона перетворює пастку на виноску, лише якщо лежить на шляху.

Реклама