Saltar al contenido principal
Fetcher es el servicio de extracción de datos de Lerian. Da a la plataforma — y a tus propias aplicaciones — una interfaz única y segura para conectarse a bases de datos externas, descubrir sus esquemas y extraer datos de ellas: PostgreSQL, MySQL, Oracle, SQL Server y MongoDB, todo a través de una sola API. Fetcher es bajo la Elastic License 2.0. El código fuente está disponible públicamente en GitHub.

Fetcher en la plataforma Lerian


Los productos Lerian necesitan con frecuencia datos que viven fuera de la plataforma — extractos de transacciones en la base de datos operativa de un banco, movimientos en el MySQL de un socio, registros de clientes en un MongoDB. Antes de Fetcher, cada producto implementaba su propia lógica de acceso, con código duplicado y prácticas de seguridad inconsistentes. Fetcher centraliza ese trabajo. Productos como Reporter y Matcher lo usan para traer datos externos a sus flujos — generación de reportes, conciliación — y tus propios servicios pueden usar la misma API para cualquier acceso controlado y auditado a bases de datos externas. Fetcher ofrece cuatro capacidades centrales:
  1. Gestión de conexiones: Almacena, valida y prueba conexiones a bases de datos, con credenciales cifradas en reposo.
  2. Descubrimiento de esquemas: Detección automática de tablas, columnas y tipos de datos en todas las bases soportadas.
  3. Extracción de datos: Una interfaz de consulta unificada con proyección de campos, filtros y soporte multi-tabla, multi-esquema y multi-datasource.
  4. Orquestación de jobs: Procesamiento asíncrono con detección de duplicados, seguimiento de estado y eventos de finalización.

Arquitectura


Fetcher se ejecuta como dos servicios cooperantes sobre un núcleo embebible:
ComponenteRol
ManagerServidor de API HTTP para la gestión de conexiones y jobs. Almacena metadatos en MongoDB y despacha jobs de extracción vía RabbitMQ.
WorkerProcesador asíncrono de jobs. Consume jobs de la cola, extrae datos de las bases configuradas, cifra los resultados en object storage (SeaweedFS o cualquier servicio compatible con S3) y publica eventos job.completed / job.failed.
EngineEl núcleo de extracción (pkg/engine) sobre el que corren ambos servicios — ciclo de vida de conexiones, descubrimiento de esquemas, planificación de consultas, ejecución, límites y aislamiento de tenant.
El Engine también puede importarse por sí solo: se distribuye como un módulo Go independiente, con cero dependencias de terceros, de modo que una aplicación anfitriona puede embeber las capacidades de extracción de Fetcher en su propio proceso — sin servicio, cola ni stack de almacenamiento separados. Los productos Lerian lo embeben exactamente así; el Manager y el Worker standalone son, ellos mismos, hosts que corren sobre el mismo Engine.

Bases de datos soportadas

Base de datosVersionesDestacados
PostgreSQL12+Soporte multi-schema, parsing automático de JSONB, pooling de conexiones
MySQL8.0+Parsing automático de campos JSON, extracción multi-tabla, pooling de conexiones
Oracle19c+Namespaces de owner/schema, extracción multi-tabla, pooling de conexiones
SQL Server2019+Soporte multi-schema, coincidencia de filtros de tabla, pooling de conexiones
MongoDB7.0+Inferencia de esquema, muestreo estadístico, pipelines de agregación

Postura de seguridad


Fetcher está construido para tocar bases de datos ajenas con seguridad:
  • Una clave maestra, tres claves derivadas. Un único secreto APP_ENC_KEY deriva — vía HKDF — claves independientes para el cifrado de credenciales (AES-256-GCM), la firma de mensajes internos entre Manager y Worker (HMAC-SHA256) y la firma de los documentos extraídos, para que los consumidores puedan verificar su autenticidad.
  • Protección contra SSRF. En despliegues multi-tenant, los hosts de las conexiones se validan contra rangos de direcciones privadas y de metadatos de nube antes de que Fetcher se conecte.
  • Transporte fail-closed. Las conexiones inseguras (sin TLS) con la infraestructura se rechazan por defecto fuera del desarrollo local.
  • Aislamiento multi-tenant. Cuando está habilitado, cada tenant recibe bases de metadatos, namespaces de caché y rutas de object storage aisladas, resueltas a partir del contexto de tenant basado en JWT — con costo cero cuando está deshabilitado.

Próximos pasos


Primeros pasos

Ejecuta Fetcher localmente y corre tu primer job de extracción.

Conceptos centrales

Conexiones, descubrimiento de esquemas, jobs de extracción y resultados.