La solicitud
Un job lleva dos partes:
dataRequest y metadata.
mappedFields es el corazón de la solicitud. Mapea el nombre de configuración de cada datasource a las tablas que quieres, y cada tabla a los campos que quieres.
metadata.source es obligatorio. Nombra el producto dueño del job. El Manager rechaza una solicitud que no lo trae. El Manager también rechaza la solicitud cuando una conexión referenciada pertenece a otro producto, o no pertenece a ningún producto. Los datasources internos no llevan producto, así que esta comprobación no aplica a ellos.
Proyección de campos
Nombra los campos que quieres, o pide todos:
- Una lista de nombres de campos extrae exactamente esos campos.
- La entrada única
["*"]extrae todas las columnas de la tabla. El comodín debe ser la única entrada de la lista.
Varios datasources, tablas y schemas
Un mismo job puede leer de varios datasources a la vez. Cada datasource puede aportar varias tablas. Cada tabla puede estar en un schema distinto. Escribe el nombre de una tabla en una de dos formas:
- Sin calificar —
accounts. Fetcher la lee del schema por defecto del motor:publicen PostgreSQL,dboen SQL Server. - Calificada con schema —
accounting.invoices. El prefijo antes del punto es el schema. En Oracle es el owner.
mappedFields y descubre solo esos namespaces. Si algún nombre de tabla va sin calificar, el descubrimiento añade además el schema por defecto del motor: public en PostgreSQL, dbo en SQL Server.
Dos motores no aceptan una lista de schemas. MySQL trata la base de datos conectada como el namespace. MongoDB tiene colecciones en lugar de schemas, así que el nombre de una colección siempre va sin calificar.
Límites
El motor de extracción acota cada job. Estos son los valores por defecto:
El Manager rechaza un job con más de 10 datasources antes de que llegue a la cola. Un resultado que supera el límite de tamaño hace fallar el job. Fetcher nunca devuelve ni almacena un resultado truncado.
ENGINE_MAX_RESULT_BYTES baja el techo de tamaño en el Worker. Una solicitud puede bajar un límite, pero nunca puede subirlo por encima del valor por defecto del motor.
Jobs duplicados
El Manager calcula un hash SHA-256 sobre la solicitud completa —
dataRequest y metadata juntos. Luego busca un job con el mismo hash creado en los últimos 5 minutos.
- Una coincidencia devuelve el job existente con HTTP 200. No corre una segunda extracción.
- Sin coincidencia, crea un job nuevo y devuelve HTTP 202.
- Una coincidencia que ya falló no bloquea un reintento. El Manager crea un job nuevo.
Ciclo de vida del job
Antes de crear el job, el Manager resuelve cada nombre de datasource a una conexión y abre una conexión real con cada una. Un datasource que falla esta prueba rechaza toda la solicitud. Los datasources internos configurados por variables de entorno no pasan por la prueba.
Un Worker toma un job solo mientras el job sigue en
pending. Luego lo mueve a processing y arranca la extracción. Los datasources corren en paralelo hasta el límite de concurrencia. La ejecución es fail-fast: el primer datasource que falla termina el job, y Fetcher no almacena ningún resultado parcial.
Si todo sale bien, el Worker escribe el resultado en el object storage y registra dos valores en el job: la ruta del resultado y la firma HMAC del resultado. Después publica el evento terminal.
Próximos pasos
Filtros
Los diez operadores de filtro y la forma de valor que toma cada uno.
Fuentes de datos
Qué se comporta distinto en cada uno de los cinco motores de base de datos.

