Skip to content

MatheusGiacomo/NexusData

Repository files navigation

NexusData 🛠️

O NexusData é uma ferramenta para engenharia de dados, focada em ingestão, transformação e orquestração em uma arquitetura de Lakehouse moderna. O projeto automatiza a extração de dados da API da Steam, garantindo a integridade via contratos de qualidade e armazenamento otimizado.

🏗️ Arquitetura e Stack

O projeto utiliza uma estrutura de medalhão integrada com o que há de mais moderno no "Modern Data Stack":

  • Ingestão (EL): dlt (data load tool) com suporte a auto-migration para garantir a evolução do schema.
  • Orquestração: Dagster gerenciando a linhagem de assets e políticas de retry.
  • Qualidade: Soda para validação de contratos e integridade dos dados na camada Bronze.
  • Armazenamento: Apache Iceberg no MinIO para a camada Silver, permitindo viagens no tempo (time travel) e evolução de schema.
  • Transformação: dbt (data build tool) para modelagem analítica na camada Gold.
  • Infraestrutura: Terraform para provisionamento de recursos de storage e banco de dados.

🚀 Como Executar

1. Requisitos

  • Python 3.10+
  • Docker & Docker Compose
  • Terraform

2. Configuração do Ambiente

Clone o repositório e configure as variáveis de ambiente:

    cp .env.example .env
    # Preencha as credenciais no .env

Instale as dependências

    python -m venv .venv
    source .venv/bin/activate  # ou .venv\Scripts\activate no Windows
    pip install -r requirements.txt

Subir a Infraestrutura

    docker-compose up -d

MinIo, PostgreSQL e PGadmin

Provisione os Recursos com o Terraform

    cd infrastructure
    terraform init
    terraform apply

Rodar o pipeline

    $env:DAGSTER_HOME = "$(Get-Location)\.dagster" 
    dagster dev

📊 Pipeline de Dados

  • Bronze (Raw): Ingestão via dlt direto da API da Steam para o Postgres.
  • Data Quality: O Dagster dispara um Soda Scan para validar se os dados brutos possuem campos nulos ou tipos inválidos.
  • Silver (Trusted): Processamento via PyIceberg para desduplicação e conversão para formato tabular Iceberg no MinIO.
  • Gold (Analytics): Transformações dbt para métricas de negócio (ex: Top Games).

🔍 Observabilidade e Infraestrutura

🪣 Bucket MinIO (S3-Compatible)

A camada Silver armazena os dados no formato Apache Iceberg, garantindo consistência ACID e permitindo viagens no tempo (time travel) diretamente no storage local. Texto alternativo da imagem

🌐 Overview do Pipeline

O painel principal do Dagster fornece o status em tempo real de cada asset, indicando se a última materialização foi bem-sucedida ou se há alertas de qualidade pendentes. Texto alternativo da imagem

🔗 Linhagem de Dados (Lineage)

A linhagem completa mapeia o fluxo desde a extração bruta (DLT) até as métricas finais (dbt), permitindo o rastreamento de impacto e depuração rápida de falhas. Texto alternativo da imagem

📖 Catálogo de Assets (Catalog)

O catálogo centraliza metadados, definições de colunas e o histórico de materialização, servindo como uma única fonte de verdade para a documentação técnica dos dados. Texto alternativo da imagem

About

NexusData is a high-performance Data Lakehouse ecosystem designed for seamless ingestion, automated quality assurance, and scalable data transformation. It extracts real-time metrics from the Steam API, orchestrating the journey from raw data to analytical insights using a robust Medallion Architecture.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors