Pular para o conteúdo principal
O Fetcher é o serviço de extração de dados da Lerian. Ele dá à plataforma — e às suas próprias aplicações — uma interface única e segura para conectar a bancos de dados externos, descobrir seus esquemas e extrair dados deles: PostgreSQL, MySQL, Oracle, SQL Server e MongoDB, tudo por uma única API. O Fetcher é sob a Elastic License 2.0. O código-fonte está disponível publicamente no GitHub.

O Fetcher na plataforma Lerian


Os produtos Lerian frequentemente precisam de dados que vivem fora da plataforma — extratos de transações no banco de dados operacional de um banco, movimentações no MySQL de um parceiro, registros de clientes em um MongoDB. Antes do Fetcher, cada produto implementava sua própria lógica de acesso, com código duplicado e práticas de segurança inconsistentes. O Fetcher centraliza esse trabalho. Produtos como o Reporter e o Matcher o utilizam para trazer dados externos para seus fluxos — geração de relatórios, reconciliação — e os seus próprios serviços podem usar a mesma API para qualquer necessidade de acesso controlado e auditado a bancos de dados externos. O Fetcher oferece quatro capacidades centrais:
  1. Gestão de conexões: Armazene, valide e teste conexões com bancos de dados, com credenciais criptografadas em repouso.
  2. Descoberta de esquemas: Detecção automática de tabelas, colunas e tipos de dados em todos os bancos suportados.
  3. Extração de dados: Uma interface de consulta unificada com projeção de campos, filtros e suporte a múltiplas tabelas, múltiplos esquemas e múltiplos datasources.
  4. Orquestração de jobs: Processamento assíncrono com detecção de duplicatas, acompanhamento de status e eventos de conclusão.

Arquitetura


O Fetcher roda como dois serviços cooperantes sobre um núcleo embarcável:
ComponentePapel
ManagerServidor de API HTTP para gestão de conexões e jobs. Armazena metadados no MongoDB e despacha jobs de extração via RabbitMQ.
WorkerProcessador assíncrono de jobs. Consome jobs da fila, extrai dados dos bancos configurados, criptografa os resultados em object storage (SeaweedFS ou qualquer serviço compatível com S3) e publica eventos job.completed / job.failed.
EngineO núcleo de extração (pkg/engine) sobre o qual os dois serviços rodam — ciclo de vida de conexões, descoberta de esquemas, planejamento de consultas, execução, limites e isolamento de tenant.
O Engine também pode ser importado de forma independente: ele é distribuído como um módulo Go próprio, com zero dependências de terceiros, permitindo que uma aplicação hospedeira embarque as capacidades de extração do Fetcher em seu próprio processo — sem serviço, fila ou stack de armazenamento separados. Os produtos Lerian o embarcam exatamente assim; o Manager e o Worker standalone são, eles mesmos, hosts rodando sobre o mesmo Engine.

Bancos de dados suportados

Banco de dadosVersõesDestaques
PostgreSQL12+Suporte a múltiplos schemas, parsing automático de JSONB, pooling de conexões
MySQL8.0+Parsing automático de campos JSON, extração multi-tabela, pooling de conexões
Oracle19c+Namespaces de owner/schema, extração multi-tabela, pooling de conexões
SQL Server2019+Suporte a múltiplos schemas, correspondência de filtros de tabela, pooling de conexões
MongoDB7.0+Inferência de esquema, amostragem estatística, pipelines de agregação

Postura de segurança


O Fetcher foi construído para tocar bancos de dados de terceiros com segurança:
  • Uma chave-mestra, três chaves derivadas. Um único segredo APP_ENC_KEY deriva — via HKDF — chaves independentes para criptografia de credenciais (AES-256-GCM), assinatura de mensagens internas entre Manager e Worker (HMAC-SHA256) e assinatura dos documentos extraídos, para que consumidores possam verificar sua autenticidade.
  • Proteção contra SSRF. Em implantações multi-tenant, os hosts das conexões são validados contra faixas de endereços privados e de metadados de nuvem antes de qualquer conexão.
  • Transporte fail-closed. Conexões inseguras (sem TLS) com a infraestrutura são rejeitadas por padrão fora do desenvolvimento local.
  • Isolamento multi-tenant. Quando habilitado, cada tenant recebe bancos de metadados, namespaces de cache e caminhos de object storage isolados, resolvidos a partir do contexto de tenant baseado em JWT — com custo zero quando desabilitado.

Próximos passos


Primeiros passos

Rode o Fetcher localmente e execute seu primeiro job de extração.

Conceitos centrais

Conexões, descoberta de esquemas, jobs de extração e resultados.