Cuando cambia un producto, también puede cambiar la forma en que representa sus datos: se renombra un campo, se divide una entidad o se introduce una nueva regla de negocio. La decisión no es solo técnica. Hay que elegir entre actualizar los registros existentes, adaptar los datos cada vez que se consultan o mantener ambos formatos durante una transición.
La pregunta útil es cuándo migrar datos y cuándo transformar en tiempo de lectura. La respuesta depende de quién consume la información, qué nivel de consistencia necesita el producto y cuánto costará mantener la solución. Ninguno de los enfoques es universalmente mejor: el objetivo es hacer explícitos sus compromisos y definir cómo se comprobará que funcionan.
Qué cambia con cada enfoque

Una migración persistente modifica los datos almacenados para que cumplan el nuevo modelo. Puede ejecutarse en una operación controlada o por lotes, según el volumen, la infraestructura y los requisitos de disponibilidad. Después, las consultas trabajan con la representación nueva, aunque durante la transición quizá deban reconocer registros antiguos.
La transformación en tiempo de lectura conserva los datos originales y los adapta al devolverlos. Una capa de acceso, un servicio o una consulta puede convertir el formato antiguo en la estructura que espera el consumidor actual. Es una forma de compatibilidad que evita una modificación masiva inmediata, pero añade trabajo a las lecturas y lógica que alguien tendrá que mantener.
También existe una opción intermedia: mantener temporalmente ambos formatos y migrar de manera gradual. Por ejemplo, la aplicación puede leer el formato nuevo y, si no existe, convertir el antiguo; las escrituras nuevas guardan ya el formato actualizado. Esta estrategia requiere reglas claras para evitar que cada consumidor implemente su propia variante.
Criterios para elegir
Antes de decidir, describa el cambio como una necesidad observable: qué datos cambian, quién los usa y qué comportamiento debe mantenerse. Después, evalúe estos criterios:
- Consistencia: si todos los consumidores deben ver el mismo valor y las mismas reglas, una representación persistente común puede reducir discrepancias. Si la conversión es específica de una interfaz o de un consumidor, una capa de lectura puede ser más apropiada.
- Frecuencia y coste de lectura: una transformación repetida en una ruta muy utilizada puede aumentar latencia y consumo de recursos. Si las lecturas son poco frecuentes o el conjunto de datos es pequeño, ese coste quizá sea aceptable; mídalo en el contexto real.
- Volumen y operación: una migración completa puede exigir tiempo, control de errores y capacidad para procesar registros sin interrumpir el servicio. Para grandes volúmenes, considere lotes y seguimiento del progreso, en lugar de asumir que una única operación será segura.
- Número de consumidores: con varios servicios, aplicaciones, informes o integraciones, cambiar el almacenamiento puede tener efectos en cadena. Identifique quién depende del esquema y si todos pueden actualizarse coordinadamente.
- Reversibilidad: transformar al leer conserva los datos fuente, lo que puede facilitar volver al comportamiento anterior. Una migración destructiva requiere una copia de seguridad o un mecanismo de recuperación probado, además de un plan para los cambios posteriores.
- Reglas de negocio: si la conversión depende de decisiones que pueden cambiar, mantener los datos originales permite reevaluarla. Si la nueva forma representa un hecho estable y necesario para todos, persistirla puede simplificar el sistema.
No compare solo el coste de ejecutar la migración con el de escribir un adaptador. Incluya el coste recurrente: consultas más complejas, observabilidad, pruebas, soporte a versiones antiguas y retirada futura de la compatibilidad.
Señales de que conviene migrar
Una migración persistente suele ganar atractivo cuando el nuevo modelo será la representación principal durante un periodo largo, muchos consumidores requieren la misma transformación o el trabajo de adaptación afecta de forma medible a la latencia. También puede ser preferible cuando la lógica de lectura se ha extendido a varios lugares y ya no existe una única definición confiable.
En cambio, una transformación en lectura puede ser razonable si el cambio es temporal, el formato antiguo debe conservarse, hay pocos consumidores controlados o todavía se están validando las reglas del nuevo modelo. También ayuda cuando el coste o el riesgo de escribir masivamente en producción supera el beneficio inmediato, siempre que el rendimiento sea aceptable y la compatibilidad esté acotada.
Hay señales de que la solución temporal se está convirtiendo en deuda: condiciones para cada versión histórica, consultas que mezclan formatos sin una regla común, errores distintos entre consumidores y pruebas que no cubren todas las variantes. Si aparecen, no basta con añadir otro caso. Hay que decidir qué formato será canónico y establecer una fecha o condición verificable para retirar los anteriores.
Cómo hacer una transición gradual
Una migración gradual reduce el riesgo al separar el despliegue de la aplicación del procesamiento de todos los registros. Un plan práctico puede seguir estos pasos:
- Inventariar dependencias. Localice productores, consumidores, trabajos programados, informes y contratos de integración que usan el modelo afectado. Aclare quién es responsable de cada uno.
- Definir compatibilidad. Documente qué formatos se aceptan, cuál es la fuente de verdad y qué debe ocurrir cuando falte un campo o aparezca un valor inesperado. Evite inferencias silenciosas que oculten datos inválidos.
- Desplegar lectores compatibles. Asegúrese de que la aplicación pueda manejar los datos antiguos y nuevos antes de empezar a escribir el formato nuevo. Así se evita que una versión anterior falle al encontrar registros actualizados.
- Cambiar las escrituras. Haga que las nuevas operaciones produzcan el formato objetivo. Si durante un periodo se escriben dos representaciones, defina cuál prevalece y cómo se detectan discrepancias.
- Procesar lo existente. Ejecute la migración de forma controlada, registrando avance y errores. Use lotes adecuados al sistema y diseñe la operación para que pueda reanudarse sin duplicar efectos.
- Retirar compatibilidad. Elimine la lectura antigua solo cuando las métricas y verificaciones indiquen que ya no quedan consumidores ni registros que dependan de ella.
La secuencia concreta puede variar. En sistemas con disponibilidad exigente, los pasos de lectura y escritura suelen desplegarse de forma compatible antes de modificar los datos. La decisión debe considerar el comportamiento de versiones antiguas que puedan seguir activas durante un despliegue.
Validar resultados y preparar la reversión
Antes de migrar todo, pruebe la conversión con datos representativos y compare resultados. Compruebe recuentos, campos obligatorios, valores límite, relaciones entre entidades y reglas de negocio. Un recuento igual no demuestra por sí solo que la transformación sea correcta: contraste también valores y comportamiento para casos relevantes.
Si es posible, ejecute primero una comparación sin cambiar el resultado que recibe el usuario. Registre diferencias entre la representación antigua y la nueva, clasifique las discrepancias y establezca umbrales de aceptación antes de ampliar el proceso. Vigile errores, latencia y carga durante la operación, y tenga claro quién decide pausarla.
La reversión debe contemplar las escrituras realizadas después del cambio. Restaurar una copia anterior puede eliminar actualizaciones válidas; por eso, determine si se puede volver al lector antiguo sin revertir los datos, o si hace falta una estrategia para reconciliar cambios. Pruebe ese camino antes de depender de él.
Lista de comprobación para decidir

- ¿Está identificado el formato canónico y la fuente de verdad?
- ¿Cuántos consumidores dependen del esquema y quién controla cada uno?
- ¿Se ha medido el impacto de la transformación en lectura sobre latencia y recursos?
- ¿La lógica temporal está centralizada, probada y tiene condiciones de retirada?
- ¿La migración puede pausarse, reanudarse y detectar registros fallidos?
- ¿Se han definido comparaciones, umbrales de aceptación y responsables de validar resultados?
- ¿Existe una reversión segura que contemple las nuevas escrituras?
Elija transformación en lectura cuando la compatibilidad sea acotada, reversible y operativamente asumible. Elija migración cuando el nuevo modelo deba ser común, persistente y más sencillo de consumir, y exista un plan seguro para actualizar los datos. Si todavía hay incertidumbre, use una transición temporal con métricas, propietario y criterio de salida: posponer una migración puede ser una decisión válida; posponerla sin fecha ni control convierte la compatibilidad en permanente.
