Guía de producto · Datos masivos
Seleccionar tres millones de filas es fácil. Operar un producto de datos fiable no.
Exportar una tabla es fácil en una base de desarrollo. Exportar una instantánea de millones de empresas desde un servicio que debe seguir respondiendo tráfico normal es otro trabajo.
El rol ordinario de BORMEAPI aplica un tiempo máximo breve a las consultas. El volcado completo necesita más tiempo porque lee una vista mantenida de empresa, derivada previamente del histórico BORME-A procesado, une los mapeos de NIF disponibles, ordena, codifica CSV y comprime el flujo. Debilitar todas las peticiones para acomodar esa carga convertiría una función de producto en un riesgo de fiabilidad.
La excepción debe ser más estrecha que la protección
Una ruta masiva segura usa su propia sesión desechable, una consulta conocida y un timeout finito. No ocupa una conexión del pool de baja latencia y su permiso ampliado desaparece al cerrar la sesión. Si el cliente se desconecta, el trabajo de base de datos también debe terminar.
El timeout exacto no es el producto. El producto es la frontera completa: qué consulta puede durar más, quién puede iniciarla, con qué frecuencia, en qué conexión, con qué limpieza y qué ocurre al superar el fusible.
El streaming limita memoria, no el coste total
La base formatea las filas como CSV y el servicio comprime fragmentos al recibirlos. Así no se construyen millones de objetos ni se guarda el fichero entero en memoria. Cerrar correctamente gzip escribe el final que permite al consumidor detectar un archivo truncado.
La memoria acotada no vuelve barata la consulta. Cada exportación aceptada sigue leyendo, uniendo, ordenando y transfiriendo una instantánea grande. El endpoint está restringido a planes elegibles y limitado por clave. Si la concurrencia compite con la ingesta diaria o las lecturas normales, el siguiente control debe ser admisión global, una réplica o un objeto publicado, no un timeout mayor.
La entrega necesita evidencia en ambos extremos
Un 200 solo demuestra que la respuesta empezó. No prueba que el cliente
recibiera un gzip completo. Un servicio de producción debe observar inicios,
duración, bytes, cancelaciones y concurrencia. El consumidor debe descargar con nombre temporal,
validar gzip, revisar cambios bruscos de filas y solo entonces promover la nueva
instantánea fechada.
Por eso «añadir una ruta CSV» no es una comparación justa. La integración del consumidor debe fallar de forma visible, conservar la última instantánea válida y registrar nombre fechado, filas observadas y hora de descarga del conjunto de datos.
Por qué pagar en vez de ejecutar COPY
El SQL no es escaso. La entrada mantenida y el contrato operativo sí:
- adquisición y reprocesamiento de BORME-A antes de construir la instantánea;
- análisis histórico, agrupación por empresa y estado derivado;
- mapeos de NIF con fuente/confianza cuando existen;
- ejecución masiva aislada sin relajar la API ordinaria;
- streaming acotado, límites, cancelación e integridad;
- esquema estable y salida fechada para importación.
Si un equipo ya opera todo el histórico y sus controles de exportación, puede tener sentido construirlo. La mayoría necesita el conjunto de datos actual, no otro proceso de datos que mantener. La API alojada convierte esa carga en una descarga autenticada.