Query compilation for modern data processing environments
Creators: name: Grulich, Philipp Marian
Publisher: name: Technische Universität Berlin
Year: 2023
Subjects: subject: 000 Informatik, Informationswissenschaft, allgemeine Werke::000 Informatik, Wissen, Systeme::004 Datenverarbeitung; Informatik
subject: stream processing
subject: data management
subject: query compilation
subject: user-defined function
subject: modern hardware

description: Over the last decades, the data processing environment significantly changed. Nowadays, data-centric applications process ever-growing volumes of data with increasing velocity. At the same time, data processing pipelines became more complex and diverse. These workloads exceed traditional analytical queries and involve stream processing, machine learning, and user-defined functions (UDFs). A wide range of general-purpose data processing systems have been proposed to address these requirements. Additionally, the data management community has dedicated significant efforts toward improving the efficiency and performance of these systems. However, recent research has shown that many state-of-the-art data processing systems deliver suboptimal performance. These systems are hardware-oblivious and have not yet adopted techniques for efficient query processing from relational data management systems, e.g., query compilation or vectorization. Instead, they use managed runtimes to hide hardware details and focus on horizontal scalability. This decreases hardware utilization and increases deployment complexity and cost. In this thesis, we revisit the architecture of current data processing systems and propose building blocks to address their performance limitations. We leverage query compilation as a fundamental concept for efficient data processing and expand its application to a wider set of workloads. In particular, we make the following three contributions: First, we adapt query compilation to the unique characteristics of stream processing workloads. We propose an adaptive query compilation approach that monitors data characteristics of streams, detects changes, and re-optimizes queries at runtime. Furthermore, we introduce parallelization-aware stateful operators that fully utilize modern multi-core processors to handle high-velocity streams. Second, we extend query compilation for the efficient execution of polyglot queries that involve UDFs in high-level programming languages like Java, Java-Script, and Python. Our approach combines relational operators and UDFs in one unified intermediate representation. This enables holistic optimization across operator boundaries and the generation of highly efficient code fragments. Third, we introduce a novel framework for the development of query execution engines to benefit from the advantages of query compilation without sacrificing productivity. Our framework provides an imperative implementation interface and leverages trace-based just-in-time compilation to generate efficient code from data processing queries. Furthermore, it provides multiple compilation backends to optimize the query execution for specific workloads, e.g., short-running queries, stream processing, or UDFs. In summary, this dissertation provides building blocks for a hardware-conscious architecture of modern data processing systems that mitigate current system bottlenecks, enhance hardware utilization, and improve performance in diverse data processing environments. To this end, we leverage query compilation and adapt it to a wide range of workloads. Finally, our contributions form the basis for new data processing systems like NebulaStream. They improve the query execution performance and reduce the system complexity at the same time.
description: In den letzten Jahren haben sich Datenverarbeitungsanwendungen erheblich verändert. Heutzutage verarbeiten datenintensive Anwendungen ständig wachsende Datenmengen in immer höherer Geschwindigkeit. Gleichzeitig hat die Komplexität und Vielfalt an Anwendungsfällen zugenommen. Diese kombinieren relationalen Operatoren, Stream Processing, Maschinelles Lernen und benutzerdefinierte Funktionen (UDFs). Um diesen Anforderungen gerecht zu werden, wurde eine Vielzahl von Datenverarbeitungssystemen entwickelt. Darüber hinaus hat die Forschungsgemeinschaft erhebliche Anstrengungen unternommen, um die Effizienz und Leistung dieser Systeme zu verbessern. Jüngste Arbeiten zeigen jedoch, dass viele moderne Datenverarbeitungssysteme eine suboptimale Leistung erbringen. Insbesondere haben diese Systeme Techniken zur effizienten Verarbeitung nicht übernommen, z. B. Querykompilierung oder Vektorisierung. Stattdessen konzentrieren sie sich auf horizontale Skalierbarkeit, um die Leistung zu steigern, was jedoch die Komplexität und die Kosten im Betrieb erhöht. In dieser Dissertation verbessern wir die Architektur aktueller Datenverarbeitungssysteme und beheben deren Leistungseinschränkungen. Zu diesem Zweck nutzen wir Querykompilierung als grundlegendes Konzept für eine effiziente Datenverarbeitung. Im Einzelnen leisten wir die folgenden drei Beiträge. Im ersten Schritt passen wir den Querykompilierungsansatz an die Eigenschaften von Stream Processing Workloads an. Unser neuartiger Querykompilierungansatz überwacht Datencharakteristika, erkennt Änderungen und optimiert Queries adaptiv zur Laufzeit. Darüber hinaus präsentieren wir parallelisierungsfähige Operatoren, die moderne Multi-Core-Hardware vollständig ausnutzen können. Darauf aufbauend ermöglichen wir Querykompilierung für die effiziente Ausführung von polyglotten Abfragen, die UDFs in Sprachen wie Java, Java-Script und Python beinhalten. Unser Ansatz kombiniert relationale Operatoren und UDFs in einer einheitlichen Zwischendarstellung, ermöglicht eine ganzheitliche Optimierung über Operatorgrenzen hinweg und übersetzt polyglotte Abfragen in effiziente Codefragmente. Abschließend präsentieren wir ein neuartiges Framework für die Entwicklung von Query Execution Engines, welches die Vorteile von Querykompilierung nutzt, ohne die Produktivität von Entwicklern zu beeinträchtigen. Unser Framework bietet eine imperatives Programmierinterface und nutzt trace-basierte Just-in-Time-Kompilierung, um effizienten Code zu erzeugen. Darüber hinaus bietet es mehrere Kompilierungs-Backends zur Optimierung von bestimmten Anwendungen, z. B. für OLAP Abfragen, Stream Processing oder UDFs. Zusammenfassend, präsentiert diese Dissertation mehrere grundlegende Bausteine für den Einsatz von Querykompilierung in modernen Datenverarbeitungssystemen. Hierdurch werden Systemengpässe reduziert, die Hardwareauslastung verbessert und die Leistung in verschiedenen Datenverarbeitungsumgebungen erhöht.