In the modern world, human activities generate vast amounts of data. In response, a wide range of data-processing platforms have been developed, based on different programming paradigms, offering unique features and specialized interfaces. First were relational databases and the SQL model, then data-warehousing solutions for Analytical processing. Later, dataflow engines were introduced, simplifying parallel, distributed computation, with their functional-inspired API. In the meantime, the Python ecosystem gained popularity, offering increased expressiveness for local data analysis. While having this many tools at our disposal is beneficial, it also introduces complexity. Choosing a data-processing platform often means committing to a specific interface and feature set, making it hard to switch between systems, while professional figures need to learn multiple paradigms to access and transform data. Ibis is a Python library that abstracts the underlying data-processing engine, providing a unified API to interact with different backends. It proposes a new model for data workflows, where the same code-base can be used for different systems, and shared among different professional figures and environments, from local development to production deployment. In this work, we aim to validate the effectiveness of Ibis as a common language for all data processing purposes. To do so, we propose scenarios representing real-world data-processing use-cases. We use Ibis to express these scenarios with different backends, evaluating its performance an usability. Additionally, we build a connector for our academic department's data-processing engine, Renoir, enabling it as an Ibis backend. We then evaluate its performance and the usability advantages introduced by the Ibis frontend. Our findings show that Ibis is a promising tool, but its current capabilities only partially fulfil its ambitions of common frontend for all data systems. Its API flattens the learning curve for experimenting with new data systems, but often requires resorting to backend-specific implementations. The Ibis connector for Renoir has a feature-rich and easy-to-extend interface, but some improvements could reduce the performance penalty introduced by the translation layer.
Nel mondo moderno, le attività umane generano un'enorme quantità di dati. In risposta a ciò, sono state sviluppate numerose piattaforme di elaborazione dati, basate su diversi paradigmi di programmazione, caratterizzate da funzionalità uniche e interfacce specializzate. Inizialmente sono nati i database relazionali e il modello SQL, seguiti dal data warehousing per l'elaborazione analitica. Successivamente, i motori di dataflow hanno semplificato il calcolo parallelo e distribuito grazie a interfacce ispirate al paradigma funzionale. Nel frattempo, l'ecosistema Python ha guadagnato popolarità, offrendo una maggiore espressività per l'analisi dei dati in locale. Sebbene la disponibilità di molti strumenti sia vantaggiosa, introduce anche complessità. La scelta di una piattaforma di elaborazione dati spesso implica un vincolo verso una specifica interfaccia e un set di funzionalità, rendendo difficile il passaggio tra sistemi diversi, mentre le figure professionali devono apprendere più paradigmi per accedere e trasformare i dati. Ibis è una libreria Python che astrae il motore di elaborazione dati sottostante, fornendo un'API unificata per interagire con diversi backend. Propone un nuovo modello lavorare con i dati, in cui lo stesso codice può essere utilizzato per diversi sistemi e condiviso tra diverse figure professionali e ambienti, dallo sviluppo locale alla messa in produzione. In questo lavoro, ci proponiamo di validare l'efficacia di Ibis come linguaggio comune per tutte le esigenze di elaborazione dati. A tal fine, proponiamo scenari rappresentativi di casi d'uso reali di elaborazione dati. Utilizziamo Ibis per esprimere questi scenari con diversi backend, valutandone le prestazioni e l'usabilità. Inoltre, sviluppiamo un connettore per il motore di elaborazione dati del nostro dipartimento accademico, Renoir, abilitandolo come backend di Ibis. Successivamente, ne valutiamo le prestazioni e i vantaggi di usabilità introdotti dall'interfaccia Ibis. I nostri risultati mostrano che Ibis è uno strumento promettente, ma le sue capacità attuali soddisfano solo parzialmente le sue ambizioni di frontend comune per tutti i sistemi di elaborazione di dati. La sua API semplifica inizialmente l'apprendimento nello sperimentare con nuovi sistemi, ma spesso richiede di ricorrere implementazioni specifiche del backend. Il connettore Ibis per Renoir presenta un'interfaccia ricca di funzionalità e facilmente estendibile, ma alcuni miglioramenti potrebbero ridurre la penalizzazione delle prestazioni introdotta dallo strato di traduzione.
Ibis as a Unified Data Processing Language: Integration, Comparison and Benchmarking of Heterogeneous Backends
Ronconi, Carlo
2023/2024
Abstract
In the modern world, human activities generate vast amounts of data. In response, a wide range of data-processing platforms have been developed, based on different programming paradigms, offering unique features and specialized interfaces. First were relational databases and the SQL model, then data-warehousing solutions for Analytical processing. Later, dataflow engines were introduced, simplifying parallel, distributed computation, with their functional-inspired API. In the meantime, the Python ecosystem gained popularity, offering increased expressiveness for local data analysis. While having this many tools at our disposal is beneficial, it also introduces complexity. Choosing a data-processing platform often means committing to a specific interface and feature set, making it hard to switch between systems, while professional figures need to learn multiple paradigms to access and transform data. Ibis is a Python library that abstracts the underlying data-processing engine, providing a unified API to interact with different backends. It proposes a new model for data workflows, where the same code-base can be used for different systems, and shared among different professional figures and environments, from local development to production deployment. In this work, we aim to validate the effectiveness of Ibis as a common language for all data processing purposes. To do so, we propose scenarios representing real-world data-processing use-cases. We use Ibis to express these scenarios with different backends, evaluating its performance an usability. Additionally, we build a connector for our academic department's data-processing engine, Renoir, enabling it as an Ibis backend. We then evaluate its performance and the usability advantages introduced by the Ibis frontend. Our findings show that Ibis is a promising tool, but its current capabilities only partially fulfil its ambitions of common frontend for all data systems. Its API flattens the learning curve for experimenting with new data systems, but often requires resorting to backend-specific implementations. The Ibis connector for Renoir has a feature-rich and easy-to-extend interface, but some improvements could reduce the performance penalty introduced by the translation layer.File | Dimensione | Formato | |
---|---|---|---|
Thesis_Carlo_Ronconi_Final.pdf
accessibile in internet per tutti
Descrizione: Thesis
Dimensione
6.32 MB
Formato
Adobe PDF
|
6.32 MB | Adobe PDF | Visualizza/Apri |
Executive_Summary_Carlo_Ronconi_Final.pdf
accessibile in internet per tutti
Descrizione: Executive Summary
Dimensione
1.99 MB
Formato
Adobe PDF
|
1.99 MB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/226795