Data Lake
On-Premise
On-Premise
Data Lake
Arquitetura moderna de dados on-premise baseada em ferramentas 100% open source: do banco Oracle transacional até dashboards interativos em tempo real — passando por Airflow, Spark, MinIO e Apache Pinot. Modern on-premise data architecture built on 100% open source tooling: from Oracle transactional data to real-time interactive dashboards — via Airflow, Spark, MinIO, and Apache Pinot.
Visão da
arquitetura
Architecture
overview
Cinco componentes interligados formam o pipeline completo — da extração no Oracle até o analista consultando dados em millisegundos no Superset. Five interconnected components form the full pipeline — from Oracle extraction to analysts querying data in milliseconds on Superset.
A stack The stack
Seis ferramentas open source, cada uma escolhida para ser a melhor em sua função. Sem sobreposição, sem vendor lock-in. Six open source tools, each chosen to be best-in-class for its role. No overlap, no vendor lock-in.
Oracle Database
Banco de dados transacional existente. A extração é feita via JDBC com queries incrementais por updated_at, minimizando impacto em produção.
Existing transactional database. Extraction via JDBC with incremental queries by updated_at, minimizing production impact.
Apache Airflow
Coração do ETL. Define, agenda e monitora cada passo do pipeline como um DAG. Interface web para gestão, backfill e alertas.
The ETL's heart. Defines, schedules, and monitors each pipeline step as a DAG. Web UI for management, backfill, and alerts.
Apache Spark
Engine de transformações distribuídas. Executa dentro dos DAGs do Airflow para joins, deduplicação e aggregações em larga escala.
Distributed transformation engine. Runs inside Airflow DAGs for large-scale joins, deduplication, and aggregations.
MinIO
Object storage S3-compatible on-premise. Armazena Bronze, Silver e Gold em Parquet. Também funciona como deep storage do Pinot.
On-premise S3-compatible object storage. Stores Bronze, Silver, and Gold in Parquet. Also serves as Pinot's deep storage.
Apache Pinot
OLAP distribuído de ultra-baixa latência. Indexa segmentos da camada Gold e responde queries em menos de 100ms — mesmo com bilhões de linhas.
Ultra-low latency distributed OLAP. Indexes Gold layer segments and answers queries in under 100ms — even with billions of rows.
Apache Superset
Plataforma de BI open source. Conecta-se nativamente ao Pinot via SQL. Dashboards interativos, exploração ad-hoc e alertas automáticos.
Open source BI platform. Connects natively to Pinot via SQL. Interactive dashboards, ad-hoc exploration, and automated alerts.
ETL com
Airflow
ETL with
Airflow
Cada pipeline é um DAG — um grafo de tarefas com dependências, retentativas e alertas configurados. Gestão completa via interface web. Each pipeline is a DAG — a task graph with dependencies, retries, and alerts configured. Full management via web UI.
Oracle → Bronze
- Conexão JDBC com pool gerenciado pelo Airflow
- JDBC connection with Airflow-managed pool
- Query incremental por coluna
updated_at - Incremental query by
updated_atcolumn - Full load semanal para tabelas sem timestamp
- Weekly full load for tables without timestamps
- Escrita em JSON.gz no bucket Bronze do MinIO
- Writes JSON.gz to MinIO Bronze bucket
- Metadados: volume, checksum, timestamp de extração
- Metadata: volume, checksum, extraction timestamp
Bronze → Silver → Gold
- Spark lê Bronze via API S3 do MinIO
- Spark reads Bronze via MinIO S3 API
- Silver: dedup, tipagem, limpeza de nulos
- Silver: dedup, type casting, null cleanup
- Particionamento por
ano/mês/dia - Partitioned by
year/month/day - Gold: joins entre domínios, KPIs de negócio
- Gold: cross-domain joins, business KPIs
- Saída em Parquet com compressão Snappy
- Output in Parquet with Snappy compression
Gold → Pinot
- Airflow chama REST API do Pinot Controller
- Airflow calls Pinot Controller REST API
- Job offline: lê Parquet direto do MinIO
- Offline job: reads Parquet directly from MinIO
- Pinot persiste segmentos no bucket
pinot-deep - Pinot persists segments in
pinot-deepbucket - Dados disponíveis para query em menos de 5 min
- Data available for querying in under 5 minutes
- StarTree Index gerado automaticamente
- StarTree Index generated automatically
Arquitetura
Medallion
Medallion
Architecture
O MinIO organiza os dados em três camadas — cada uma com propósito, formato e nível de qualidade específicos. Os dados nunca são sobrescritos: apenas promovidos. MinIO organizes data into three layers — each with a specific purpose, format, and quality level. Data is never overwritten: only promoted.
└─ oracle/
├─ clientes/
│ └─ 2026/05/01/
│ extract.json.gz
├─ pedidos/
└─ estoque/
└─ clientes/
└─ year=2026/
└─ month=05/
part-000.parquet
├─ vendas_diarias/
├─ clientes_ativos/
├─ estoque_critico/
└─ faturamento_mensal/
Os três
servidores
The three
servers
Cada servidor tem uma responsabilidade única. O isolamento facilita escalonamento independente e aumenta resiliência do conjunto. Each server has a unique responsibility. Isolation enables independent scaling and increases overall resilience.
32 cores / 64 threads
(expansível a 256 GB) (expandable to 256 GB)
(Spark shuffle) (Spark shuffle)
12 cores / 24 threads
(MinIO é I/O-bound) (MinIO is I/O-bound)
120 TB bruto · RAID-Z2
ZFS L2ARC
64 cores / 128 threads
(Pinot é memory-intensive) (Pinot is memory-intensive)
32 TB · acesso sub-ms
Portas & rede Ports & network
| ServiçoService | ServidorServer | PortaPort | AcessoAccess |
|---|---|---|---|
| Airflow UI | SRV-01 | 8080 | LAN internaInternal LAN |
| Spark UI | SRV-01 | 4040 | Equipe dadosData team |
| MinIO API | SRV-02 | 9000 | SRV-01 e SRV-03SRV-01 and SRV-03 |
| MinIO Console | SRV-02 | 9001 | AdminsAdmins |
| Pinot Controller | SRV-03 | 9000 | SRV-01 (Airflow)SRV-01 (Airflow) |
| Pinot Broker SQL | SRV-03 | 8099 | Superset + devsSuperset + devs |
| Apache Superset | SRV-03 | 443 (Nginx) | Todos usuários · HTTPSAll users · HTTPS |
| ZooKeeper | SRV-03 | 2181 | Interno SRV-03SRV-03 internal |
Roadmap de implantação
Deployment
roadmap
Quatro fases em 13 semanas, cada uma entregando valor incremental. Fase 2 já pode ser usada por engenheiros antes do Pinot estar pronto. Four phases over 13 weeks, each delivering incremental value. Phase 2 can already be used by engineers before Pinot is ready.
Infraestrutura base Base infrastructure
Provisionamento dos 3 servidores, instalação do SO, configuração de rede/VLAN, instalação do MinIO com ZFS. Definição de políticas IAM e criação dos buckets Bronze, Silver, Gold e pinot-deep.
Provision 3 servers, OS installation, network/VLAN config, MinIO with ZFS. Define IAM policies and create Bronze, Silver, Gold, and pinot-deep buckets.
ETL Oracle → MinIO Bronze/Silver ETL Oracle → MinIO Bronze/Silver
Instalação do Airflow e Spark, configuração das conexões Oracle, desenvolvimento dos DAGs de extração incremental, transformações Bronze→Silver. Validação de qualidade com Great Expectations.
Install Airflow and Spark, configure Oracle connections, develop incremental extraction DAGs, Bronze→Silver transformations. Quality validation with Great Expectations.
Camada Gold + Apache Pinot Gold layer + Apache Pinot
Modelagem dos dados de negócio (Gold), transformações Spark, instalação do Pinot e ZooKeeper, criação dos schemas Pinot, pipeline de ingestão Gold→Pinot via REST API.
Business data modeling (Gold), Spark transformations, Pinot and ZooKeeper install, Pinot schema creation, Gold→Pinot ingestion pipeline via REST API.
Superset + monitoramento + entrega Superset + monitoring + delivery
Instalação do Superset, conexão com Pinot, primeiros dashboards, configuração de usuários e row-level security, alertas, Prometheus + Grafana para monitoramento dos servidores. Handoff para a equipe.
Superset install, Pinot connection, first dashboards, users and row-level security setup, alerts, Prometheus + Grafana for server monitoring. Team handoff.