This thesis focuses on enhancing Noir, a framework developed in Rust and used to elaborate data in a distributed fashion, offering an efficient platform for handling streaming data. However, the need for features like interactive processing and query optimization became evident to accommodate evolving data processing requirements. The implementation of a cache system within Noir addresses the challenge of reusing intermediate stream processing results, enabling more dynamic and efficient data analysis workflows. To enable interactive processing, we introduced a cache system that allows the preservation and reuse of intermediate stream processing results. This system includes new components like the CacheSink and CacheSource operators, which facilitate the caching and retrieval of data within a stream. This capability significantly enhances the framework's flexibility by allowing users to interactively query and manipulate streamed data, reducing computation time and resource usage by avoiding redundant data processing steps. Furthermore, we developed a domain-specific language (DSL) for Noir, aiming to simplify the construction of complex data processing queries. This DSL facilitates the creation of more readable and maintainable code, improving the development experience for users. By providing a structured way to define operations on streaming data, the DSL also creates the groundwork for implementing query optimizations. These optimizations, such as PredicatePushdown and ProjectionPushdown, are crucial for improving the performance and efficiency of data processing tasks. In summary, this thesis contributes to the Noir framework by introducing interactive processing capabilities and a DSL for streamlined query construction. These enhancements not only improve the framework's usability and flexibility but also enable significant optimizations that can lead to better performance.

Questa tesi si concentra sul miglioramento di Noir, un framework sviluppato in Rust e utilizzato per l'elaborazione dati in modo distribuito, offrendo quindi una modalità efficiente per processare informazioni. Tuttavia, è emersa la necessità di funzionalità aggiuntive come l'esecuzione interattiva e la possibilità di ottimizzare le query per soddisfare le crescenti esigenze in ambito analisi dei dati. Inoltre, l'implementazione di un sistema di cache all'interno di Noir è utile a preservare e riutilizzare i risultati intermedi dell'elaborazione dati, consentendo l'analisi dei dati in modo più dinamico ed efficiente. Per abilitare l'esecuzione interattiva, abbiamo introdotto un sistema di cache che consente di conservare e riutilizzare i risultati intermedi dell'elaborazione dei flussi. Questo sistema include nuovi componenti come gli operatori CacheSink e CacheSource, che facilitano la memorizzazione nella cache e il recupero dei dati all'interno di una stream. Questa capacità migliora significativamente la flessibilità del framework consentendo agli utenti di interrogare e manipolare interattivamente i dati riducendo il tempo di calcolo e l'utilizzo delle risorse evitando passaggi ridondanti. Inoltre, abbiamo sviluppato un Domain-Specific-Language (DSL) per Noir, con l'obiettivo di semplificare la costruzione di query complesse per l'elaborazione dei dati. Questo DSL permette di scrivere codice più leggibile e mantenibile, migliorando l'esperienza di sviluppo per gli utenti. Fornendo un modo strutturato per definire le operazioni sui dati in streaming, il DSL pone anche le basi per implementare ottimizzazioni delle query. Queste ottimizzazioni, come il PredicatePushdown e il ProjectionPushdown, sono fondamentali per migliorare le prestazioni e l'efficienza dell'elaborazione dei dati.

Enhancing Noir: implementing interactive processing and query optimization

Chini, Fabio
2022/2023

Abstract

This thesis focuses on enhancing Noir, a framework developed in Rust and used to elaborate data in a distributed fashion, offering an efficient platform for handling streaming data. However, the need for features like interactive processing and query optimization became evident to accommodate evolving data processing requirements. The implementation of a cache system within Noir addresses the challenge of reusing intermediate stream processing results, enabling more dynamic and efficient data analysis workflows. To enable interactive processing, we introduced a cache system that allows the preservation and reuse of intermediate stream processing results. This system includes new components like the CacheSink and CacheSource operators, which facilitate the caching and retrieval of data within a stream. This capability significantly enhances the framework's flexibility by allowing users to interactively query and manipulate streamed data, reducing computation time and resource usage by avoiding redundant data processing steps. Furthermore, we developed a domain-specific language (DSL) for Noir, aiming to simplify the construction of complex data processing queries. This DSL facilitates the creation of more readable and maintainable code, improving the development experience for users. By providing a structured way to define operations on streaming data, the DSL also creates the groundwork for implementing query optimizations. These optimizations, such as PredicatePushdown and ProjectionPushdown, are crucial for improving the performance and efficiency of data processing tasks. In summary, this thesis contributes to the Noir framework by introducing interactive processing capabilities and a DSL for streamlined query construction. These enhancements not only improve the framework's usability and flexibility but also enable significant optimizations that can lead to better performance.
DE MARTINI, LUCA
ING - Scuola di Ingegneria Industriale e dell'Informazione
9-apr-2024
2022/2023
Questa tesi si concentra sul miglioramento di Noir, un framework sviluppato in Rust e utilizzato per l'elaborazione dati in modo distribuito, offrendo quindi una modalità efficiente per processare informazioni. Tuttavia, è emersa la necessità di funzionalità aggiuntive come l'esecuzione interattiva e la possibilità di ottimizzare le query per soddisfare le crescenti esigenze in ambito analisi dei dati. Inoltre, l'implementazione di un sistema di cache all'interno di Noir è utile a preservare e riutilizzare i risultati intermedi dell'elaborazione dati, consentendo l'analisi dei dati in modo più dinamico ed efficiente. Per abilitare l'esecuzione interattiva, abbiamo introdotto un sistema di cache che consente di conservare e riutilizzare i risultati intermedi dell'elaborazione dei flussi. Questo sistema include nuovi componenti come gli operatori CacheSink e CacheSource, che facilitano la memorizzazione nella cache e il recupero dei dati all'interno di una stream. Questa capacità migliora significativamente la flessibilità del framework consentendo agli utenti di interrogare e manipolare interattivamente i dati riducendo il tempo di calcolo e l'utilizzo delle risorse evitando passaggi ridondanti. Inoltre, abbiamo sviluppato un Domain-Specific-Language (DSL) per Noir, con l'obiettivo di semplificare la costruzione di query complesse per l'elaborazione dei dati. Questo DSL permette di scrivere codice più leggibile e mantenibile, migliorando l'esperienza di sviluppo per gli utenti. Fornendo un modo strutturato per definire le operazioni sui dati in streaming, il DSL pone anche le basi per implementare ottimizzazioni delle query. Queste ottimizzazioni, come il PredicatePushdown e il ProjectionPushdown, sono fondamentali per migliorare le prestazioni e l'efficienza dell'elaborazione dei dati.
File allegati
File Dimensione Formato  
Executive_Summary_Fabio_Chini.pdf

non accessibile

Dimensione 543.98 kB
Formato Adobe PDF
543.98 kB Adobe PDF   Visualizza/Apri
Thesis_Fabio_Chini.pdf

non accessibile

Dimensione 1.65 MB
Formato Adobe PDF
1.65 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/219414