Case Study

Druid Segment Bridge

Interroga i segmenti Apache Druid direttamente attraverso DataFusion.

Lavoro in corso Rust Apache Druid DataFusion Arrow Query Engine
Logo del progetto druid-datafusion-bridge

Anatomia del sistema

  1. Input

    • Druid segment files (index.dr)
    • Wikipedia segment fixtures
    • DataFusion SessionContext
    • Test query plans
  2. Core

    • Segment parser layer
    • TableProvider adapter
    • ExecutionPlan adapter
    • Arrow-friendly conversion
  3. Output

    • DataFusion-queryable tables
    • Integration test results
    • Offline segment access
    • Translated dictionaries + metrics
Vincoli
  • No running Druid cluster needed
  • Vectorized where feasible
  • Work-in-progress evaluation
  • Format quirks preserved

Perché esiste

I motori di query diventano più riutilizzabili quando i formati di storage si possono ispezionare direttamente invece che solo attraverso il sistema di serving originale. I segmenti Druid contengono anni di ingegneria analitica utile, ma sono normalmente affrontati attraverso un cluster Druid in esecuzione; questo progetto si chiede cosa diventa possibile quando quei file di segmento si possono leggere direttamente da uno stack di query Rust.

Centro tecnico

La libreria legge le strutture dei segmenti Druid come i dati index.dr e le mappa nelle astrazioni di tabella ed esecuzione di DataFusion, puntando a un'esecuzione vettorializzata e Arrow-friendly dove possibile. La parte difficile è tradurre interni di storage, dizionari, metriche e pattern di accesso bitmap-oriented nelle astrazioni di DataFusion senza fingere che il formato originale sia stato progettato come un semplice file Arrow.

Prove correnti

Anche da lavoro in corso, la superficie di valutazione è già concreta: un layer parser dedicato per i segmenti, adattatori `TableProvider` ed `ExecutionPlan` per DataFusion, fixture su segmenti Wikipedia e test di integrazione sull'accesso offline ai segmenti, invece di affermazioni architetturali vaghe. Il valore corrente è esplorativo ma specifico: ogni parser e adattatore chiarisce quanto del modello di segmento Druid può essere esposto attraverso le interfacce Arrow e DataFusion moderne.