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
A arquitetura extrai dados do Oracle e os entrega até o analista consultando dados em milissegundos no Superset. The architecture extracts data from Oracle and delivers it all the way to analysts querying in milliseconds on Superset.
A stack The stack
Oracle como fonte, Airflow orquestrando cada passo, Spark transformando em escala, MinIO armazenando em três camadas, Pinot respondendo em menos de 100ms, Superset entregando ao analista. Do dado bruto ao dashboard — sem dependência de cloud pública. Oracle as source, Airflow orchestrating each step, Spark transforming at scale, MinIO storing across three layers, Pinot responding in under 100ms, Superset delivering to the analyst. From raw data to dashboard — no public cloud dependency.
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-mssub-ms access
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
Infraestrutura na semana 3. ETL rodando e engenheiros com acesso ao MinIO na semana 7. Pinot com queries abaixo de 100ms na semana 10. Superset, monitoramento e handoff na semana 13. Infrastructure by week 3. ETL running and engineers with MinIO access by week 7. Pinot with sub-100ms queries by week 10. Superset, monitoring, and handoff by week 13.
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.