VoltarBack
Proposta Técnica · On-Premise · Stack Open Source Technical Proposal · On-Premise · Open Source Stack

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.

On-Premise Oracle → MinIO → Pinot Apache Airflow Apache Spark MinIO S3 Apache Pinot Apache Superset R$ 0 em licenças
3
servidores físicosphysical servers
6+
ferramentas open sourceopen source tools
<100ms
latência de query PinotPinot query latency
13w
roadmap de implantaçãodeployment roadmap
01

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.

Diagrama — End-to-End · On-Premise Diagram — End-to-End · On-Premise
FONTE ORQUESTRAÇÃO ARMAZENAMENTO ANALYTICS CONSUMO 🗄️ Oracle DB Transacional · JDBC SQL ⚙️ Airflow Orquestração de DAGs 🔥 Spark Transformações 🥉 Bronze Raw · JSON 🥈 Silver Limpo · Parquet 🥇 Gold Agregado · Parquet MinIO — Data Lake Segment Load Apache Pinot Controller · Broker Server · Segments OLAP <100ms Deep → MinIO SQL · REST API SQL 📊 Superset Dashboards · BI Alertas · Reports 👥 Analistas
Premissa de design: Todo o stack é on-premise — três servidores físicos dentro da sua infraestrutura. Nenhuma dependência de cloud pública. Pinot usa MinIO como deep storage, mantendo os segmentos no mesmo datacenter. The entire stack is on-premise — three physical servers within your own infrastructure. No public cloud dependency. Pinot uses MinIO as deep storage, keeping all segments in the same datacenter.
02

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.

01 / FonteSource

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.

JDBC Incremental CDC
02 / OrquestraçãoOrchestration

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.

DAGs Celery Backfill
03 / ProcessamentoProcessing

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.

PySpark Parquet SQL
04 / ArmazenamentoStorage

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.

S3 API ZFS IAM
05 / Analytics

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.

StarTree SQL <100ms
06 / BI

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.

Dashboards SQL Lab Alertas
03

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.

DAG de ingestão diária — Oracle → MinIO → Pinot Daily ingestion DAG — Oracle → MinIO → Pinot
check_oracle _conn extract_tables OracleToMinIO validate_bronze GreatExpectations log_metadata PythonOperator spark_transform SparkSubmitOp write_gold MinIOOperator trigger_pinot HTTP Sensor schedule: @daily · retries: 3 · alertas: e-mail + Slack
ExtraçãoExtract

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_at column
  • 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
TransformaçãoTransform

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
CargaLoad

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-deep bucket
  • 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
04

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.

🥉
Bronze
Dados brutosRaw data
bronze/
  └─ oracle/
      ├─ clientes/
      │   └─ 2026/05/01/
      │       extract.json.gz
      ├─ pedidos/
      └─ estoque/
JSON / CSV Comprimido Retenção: 2 anosRetention: 2yr
🥈
Silver
Dados limposClean data
silver/
  └─ clientes/
      └─ year=2026/
          └─ month=05/
               part-000.parquet
Parquet Snappy ParticionadoPartitioned
🥇
Gold
Dados prontosBusiness-ready
gold/
  ├─ vendas_diarias/
  ├─ clientes_ativos/
  ├─ estoque_critico/
  └─ faturamento_mensal/
Parquet Pinot-ready Por domínioBy domain
05

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.

🗄️ Oracle DB Existente JDBC SRV-01 · ETL ⚙️ Apache Airflow 2.9 Webserver · Scheduler · Celery 🔥 Apache Spark 3.5 Master · Workers locais 🐘 PostgreSQL Airflow meta 🚀 Redis Celery broker 10.0.0.11 S3 API SRV-02 · Storage 🪣 MinIO API :9000 · Console :9001 📂 bronze · silver · gold · pinot-deep Buckets + IAM Policies 💾 ZFS · RAID-Z2 12× 10TB HDD + 4× 2TB NVMe cache 10.0.0.12 S3 API SRV-03 · Analytics ⚡ Apache Pinot 1.2 Controller · Broker · Server 📊 Apache Superset BI · Dashboards · Alertas 🐘 ZooKeeper Pinot coord. 🔐 Nginx TLS + proxy 10.0.0.13 👥 Analistas VLAN 10.0.0.0/24 · Switch 10GbE
01
Servidor ETL ETL Server
Airflow + Spark · 10.0.0.11
CPU 2× Xeon Silver 4314
32 cores / 64 threads
RAM 128 GB DDR4 ECC
(expansível a 256 GB) (expandable to 256 GB)
OS Disk 2× 500 GB NVMe RAID-1
Disco tempTemp disk 4× 2 TB NVMe
(Spark shuffle) (Spark shuffle)
Rede 2× 10GbE bonding
Airflow 2.9 Spark 3.5 PostgreSQL 16 Redis 7 Java 17 Python 3.12 Docker
02
Servidor Storage Storage Server
MinIO · 10.0.0.12
CPU 1× Xeon Silver 4310
12 cores / 24 threads
RAM 64 GB DDR4 ECC
(MinIO é I/O-bound) (MinIO is I/O-bound)
OS Disk 2× 500 GB SSD RAID-1
Data Lake 12× 10 TB HDD
120 TB bruto · RAID-Z2
Cache 4× 2 TB NVMe
ZFS L2ARC
Rede 2× 10GbE + 1GbE gestão
MinIO AGPL ZFS on Linux Ubuntu 24.04 Prometheus
03
Servidor Analytics Analytics Server
Pinot + Superset · 10.0.0.13
CPU 2× Xeon Gold 6338
64 cores / 128 threads
RAM 256 GB DDR4 ECC
(Pinot é memory-intensive) (Pinot is memory-intensive)
OS Disk 2× 500 GB NVMe RAID-1
SegmentosSegments 8× 4 TB NVMe
32 TB · acesso sub-ms
Rede 2× 10GbE + 1GbE gestão
Pinot 1.2 Superset 4.x ZooKeeper 3.9 Nginx Java 21 Docker

Portas & rede Ports & network

ServiçoService ServidorServer PortaPort AcessoAccess
Airflow UISRV-018080LAN internaInternal LAN
Spark UISRV-014040Equipe dadosData team
MinIO APISRV-029000SRV-01 e SRV-03SRV-01 and SRV-03
MinIO ConsoleSRV-029001AdminsAdmins
Pinot ControllerSRV-039000SRV-01 (Airflow)SRV-01 (Airflow)
Pinot Broker SQLSRV-038099Superset + devsSuperset + devs
Apache SupersetSRV-03443 (Nginx)Todos usuários · HTTPSAll users · HTTPS
ZooKeeperSRV-032181Interno SRV-03SRV-03 internal
06

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.

Fase 1 · Semanas 1–3 Phase 1 · Weeks 1–3

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.

Fase 2 · Semanas 4–7 Phase 2 · Weeks 4–7

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.

Fase 3 · Semanas 8–10 Phase 3 · Weeks 8–10

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.

Fase 4 · Semanas 11–13 Phase 4 · Weeks 11–13

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.

Custo de licença: R$ 0. License cost: R$ 0. Airflow, Spark, MinIO, Pinot e Superset são 100% open source. O único custo é o hardware on-premise (~USD 58.500 para médio porte) e o time de implantação. Airflow, Spark, MinIO, Pinot, and Superset are 100% open source. The only cost is on-premise hardware (~USD 58,500 for mid-size) and the deployment team.
Próximos passos Next steps

Vamos
conversar.
Let's
talk.