Contactar con soporte

Respondemos por correo, normalmente en dos días.

Google reCAPTCHA revisa este envío frente a abusos; se transmiten datos a Google. El script se carga solo al abrir el formulario.

← Todas las entradas

Las columnas que nadie escribe

La tabla principal de contadores tiene aquí 166.436 filas y varias columnas que parecen importar. Tres de ellas son lastdomain, firstdomain y userdomain. Contienen datos:

lastdomainno vacía en 15.525 filas
firstdomainno vacía en 15.457 filas
userdomainno vacía en 2.982 filas

Nada las escribe. Ninguna sentencia en todo el código fija ninguna de las tres. Los valores vienen de la generación anterior de este servicio, congelados en lo que fueran cuando dejó de funcionar, y toda fila creada desde entonces está vacía.

Por qué esto es peor que una columna vacía

Una columna completamente vacía está obviamente muerta. Nadie construye sobre ella, nadie informa desde ella, nadie pasa una tarde preguntándose qué significa.

Una columna rellena en el 9 % de las filas es una trampa. Parece un campo que a veces se rellena y a veces no — que es algo completamente normal en una columna. Quien la encuentra concluye razonablemente que existe una regla que decide cuándo se fija, y se pone a buscar la regla. No la hay.

Y los valores caducados no están apartados en filas dormidas donde no pudieran hacer daño. De las filas que llevan un lastdomain, 1.613 pertenecen a contadores que aún se actualizaban este año. Un contador vivo con un dominio anotado hace una década tiene exactamente el mismo aspecto que uno vivo con el dominio actual.

Peor aún: los datos son verosímiles. Son dominios, parecen dominios de contadores, y una consulta que enlace por ellos devuelve filas. Respondería a una pregunta sobre una web que ya siguió adelante.

Cómo saberlo rápido

Busca escrituras, no el nombre. El nombre de una columna aparece en listas SELECT, en volcados de esquema, en migraciones antiguas, en comentarios — y nada de eso demuestra nada. Lo que zanja la cuestión es si algún INSERT o UPDATE la menciona. Esa búsqueda tarda un minuto y es concluyente de una manera en que leer el código alrededor no lo es.

La segunda comprobación son los datos mismos: si la fila más reciente con un valor tiene años, la columna es un fósil, diga lo que diga el código aparentemente.

Por qué siguen ahí

Eliminar una columna es barato y no es gratis. Cada una de estas filas pertenece al contador de alguien, algunos funcionando de forma continua desde 2006, y la operación segura antes de un cambio de esquema en una tabla así es una copia que hayas restaurado de verdad una vez, no una que simplemente hayas producido. Hasta que eso valga la pena por sí mismo, tres columnas sin uso no cuestan más que confusión.

Así que se documentan en su lugar. No hay un sitio evidente para esa nota — el esquema de esta base de datos existe solo en la base de datos en funcionamiento, en ningún archivo del repositorio — así que fue a donde alguien tropezaría de verdad con ella: en la clase que lee una fila de contador, justo donde pasan esas columnas. Una nota en un archivo que nadie abre no es documentación. Convierte una trampa en nota al pie solo si está en el camino.

Publicidad