OxideETL

Enterprise ETL Pipeline: Oracle → S3 Parquet Data Lake

Migra millones de filas de Oracle a S3 con particionado inteligente, integración con AWS Glue Catalog, y monitoreo en tiempo real vía StreamForge.

27M+
Filas/tabla en producción
100K
Rows/segundo throughput
9x
Compresión Parquet
100%
Rust + Async

Características Principales

Alto Rendimiento

Arquitectura asíncrona con Tokio. Escritura paralela a S3 (4 uploads simultáneos). Procesamiento en streaming NDJSON. Batches de 100K filas optimizados.

AWS Glue Catalog

Registro automático de tablas Parquet en Glue. OxideDB hace REFRESH TABLES en sub-segundo sin escanear S3. Compatible con Athena y Datasphere.

Particionado Inteligente

5 estrategias configurables: none, year_month, year_month_day, full_load_only, mode_based. Optimizado para predicate pushdown en OxideDB.

Multi-tenant Support

Soporte para tenants por tabla con X-Tenant-ID header. Perfecto para arquitecturas multi-tenant. Override global configurable.

Sync Incremental

CDC-like basado en timestamps o primary keys. Checkpoints automáticos. Recuperación ante fallos. Upserts a PostgreSQL en paralelo.

StreamForge Events

Monitoreo real-time con eventos: JobStarted, ProgressUpdate, JobCompleted, JobFailed. Integración nativa con StreamForge cluster.

Checkpoints & Recovery

Guardado automático de progreso cada 50K filas. Recuperación desde último checkpoint. Continúa migraciones interrumpidas sin re-procesar.

Formato Parquet

Columnar storage con compresión SNAPPY. 9x ratio de compresión. Compatible con Arrow, DataFusion, Polars, DuckDB, OxideDB.

Dual Sink

Escribe simultáneamente a S3 (data lake) y PostgreSQL (operational). Dead Letter Queue (DLQ) para filas fallidas. Retry configurable.

vs Competencia

Oxide ETL

  • 100% Rust nativo (sin JVM, sin Python)
  • AWS Glue Catalog integration automática
  • Multi-tenant nativo (X-Tenant-ID)
  • StreamForge events real-time
  • Dual sink: S3 + PostgreSQL
  • Zero dependencies JVM/Python
  • Binario único 50MB (.deb)
  • Optimizado para OxideDB

Apache Spark

  • Procesamiento distribuido
  • Ecosistema maduro
  • Requiere JVM (pesado ~500MB)
  • Configuración compleja
  • Overhead alto para tablas pequeñas
  • Sin multi-tenant nativo
  • Sin Glue auto-registration

AWS Glue ETL

  • Serverless (managed)
  • Glue Catalog integrado
  • Costoso ($0.44/DPU-hora)
  • Vendor lock-in AWS
  • Basado en Spark (lento cold start)
  • Sin soporte Oracle directo
  • Debugging complejo

Arquitectura

Source

Oracle Database

REST API / JDBC Direct

Transform

Oxide ETL

Rust + Tokio + DataFusion

Destination

S3 + Glue Catalog

Parquet + PostgreSQL

Pipeline Flow

  1. 1Lee datos de Oracle en batches de 100K filas (NDJSON streaming)
  2. 2Convierte a formato Parquet columnar con compresión SNAPPY (9x ratio)
  3. 3Sube a S3 con particionado configurable (year/month/day o full_load)
  4. 4Registra metadata en AWS Glue Catalog (primer batch solamente)
  5. 5Opcionalmente hace upsert a PostgreSQL en paralelo (dual sink)
  6. 6OxideDB hace REFRESH TABLES desde Glue (sub-segundo, sin escanear S3)

Casos de Uso

Data Lake Migration

Migra datos históricos de Oracle (millones de filas) a S3 Parquet para análisis con OxideDB, Athena, o Datasphere.

  • Full load con checkpoints automáticos
  • Recuperación ante fallos
  • Progress tracking en StreamForge
  • 27M+ filas/tabla en producción

Real-time CDC Sync

Sincroniza cambios incrementales desde Oracle a S3 en tiempo real con particionado por fecha.

  • CDC-like basado en timestamps
  • Particiones year/month/day
  • Upserts paralelos a PostgreSQL
  • Dead Letter Queue para errores

Instalación

Ubuntu/Debian (.deb)

1. Descargar e instalar paquete .deb:

# Descargar última versión
wget https://releases.oxidedb.com/oxide-etl/latest/oxide-etl_0.4.9_amd64.deb

# Instalar paquete
sudo dpkg -i oxide-etl_0.4.9_amd64.deb

# Verificar instalación
oxide-etl --version

2. Configurar archivo YAML:

# /etc/oxide-etl/etl_config.yaml
source:
  mode: http
  base_url: "https://your-api.com"
  api_key: "your-key"
  tenant: "default"

s3:
  enabled: true
  bucket: "my-data-lake"
  default_partition_strategy: "mode_based"

glue:
  enabled: true
  database: "oxidedb_catalog"
  region: "us-east-2"

tables:
  - oracle_schema: "PROD"
    oracle_table: "CUSTOMERS"
    postgres_schema: "public"
    postgres_table: "customers"
    primary_keys: ["customer_id"]
    enabled: true

3. Crear database en Glue (una sola vez):

aws glue create-database --database-input Name=oxidedb_catalog

4. Ejecutar migración:

# Full load de todas las tablas
oxide-etl full-load --tables all

# Full load de tablas específicas
oxide-etl full-load --tables CUSTOMERS,ORDERS

# Sync incremental
oxide-etl sync --tables all

Nota: El paquete .deb incluye systemd service para ejecución como daemon. Configura en /etc/systemd/system/oxide-etl.service

Integración con OxideDB

Oxide ETL + OxideDB = Stack completo para Data Analytics

Oxide ETL hace:

  • ✅ Migración Oracle → S3 Parquet
  • ✅ Registro automático en Glue Catalog
  • ✅ Particionado optimizado (5 estrategias)
  • ✅ Sync incremental CDC-like
  • ✅ Dual sink: S3 + PostgreSQL
  • ✅ StreamForge events real-time

OxideDB hace:

  • ✅ REFRESH TABLES desde Glue (sub-segundo)
  • ✅ Queries SQL ultra-rápidas (241K rows/s)
  • ✅ RBAC + Encryption + Audit logs
  • ✅ Predicate/Projection pushdown en S3
  • ✅ SIMD vectorization (AVX-512)
  • ✅ Window functions + CTEs + JOINs

Enterprise ETL • Production Ready • Built with Rust 🦀