A requisição
Um job carrega duas partes:
dataRequest e metadata.
mappedFields é o coração da requisição. Ele mapeia o nome de configuração de cada fonte de dados para as tabelas que você quer, e cada tabela para os campos que você quer.
metadata.source é obrigatório. Ele nomeia o produto dono do job. O Manager rejeita uma requisição sem esse campo. O Manager também rejeita a requisição quando uma conexão referenciada pertence a outro produto, ou não pertence a produto algum. Fontes de dados internas não carregam produto, então essa verificação não se aplica a elas.
Projeção de campos
Nomeie os campos que você quer, ou peça todos eles:
- Uma lista de nomes de campos extrai exatamente esses campos.
- A entrada única
["*"]extrai todas as colunas da tabela. O curinga precisa ser a única entrada da lista.
Múltiplas fontes de dados, tabelas e esquemas
Um job pode ler de várias fontes de dados ao mesmo tempo. Cada fonte de dados pode contribuir com várias tabelas. Cada tabela pode estar em um esquema diferente. Escreva o nome de uma tabela em uma de duas formas:
- Sem qualificação —
accounts. O Fetcher a lê no esquema padrão do motor:publicno PostgreSQL,dbono SQL Server. - Qualificada pelo esquema —
accounting.invoices. O prefixo antes do ponto é o esquema. No Oracle, é o owner.
mappedFields e descobre apenas esses namespaces. Se algum nome de tabela vier sem qualificação, a descoberta acrescenta também o esquema padrão do motor: public no PostgreSQL, dbo no SQL Server.
Dois motores não recebem lista de esquemas. O MySQL trata o banco de dados conectado como o namespace. O MongoDB tem coleções em vez de esquemas, então um nome de coleção nunca leva qualificação.
Limites
O motor de extração limita todo job. Estes são os valores padrão:
O Manager rejeita um job com mais de 10 fontes de dados antes que ele chegue à fila. Um resultado acima do limite de tamanho faz o job falhar. O Fetcher nunca retorna nem armazena um resultado truncado.
ENGINE_MAX_RESULT_BYTES baixa o teto de tamanho no Worker. Uma requisição pode reduzir um limite, mas nunca elevá-lo acima do padrão do motor.
Jobs duplicados
O Manager calcula um hash SHA-256 sobre a requisição inteira —
dataRequest e metadata juntos. Em seguida, procura um job com o mesmo hash criado nos últimos 5 minutos.
- Uma correspondência retorna o job existente com HTTP 200. Nenhuma segunda extração roda.
- Sem correspondência, o Manager cria um novo job e retorna HTTP 202.
- Uma correspondência que já falhou não bloqueia uma nova tentativa. O Manager cria um novo job.
Ciclo de vida do job
Antes de criar o job, o Manager resolve cada nome de fonte de dados para uma conexão e abre uma conexão real com cada uma. Uma fonte de dados que falha nesse teste rejeita a requisição inteira. Fontes de dados internas configuradas por variáveis de ambiente não passam por esse teste.
Um Worker assume um job apenas enquanto ele ainda está
pending. Depois, move o job para processing e inicia a extração. As fontes de dados rodam em paralelo até o limite de concorrência. A execução é fail-fast: a primeira fonte de dados que falha encerra o job, e o Fetcher não armazena resultado parcial.
Em caso de sucesso, o Worker escreve o resultado no object storage e registra dois valores no job: o caminho do resultado e a assinatura HMAC do resultado. Em seguida, publica o evento terminal.
Próximos passos
Filtros
Os dez operadores de filtro e o formato de valor que cada um aceita.
Fontes de dados
O que se comporta de forma diferente em cada um dos cinco motores de banco de dados.

