Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

A Backend Extension Mechanism for PQL/Java with Free Run-Time Optimisation

Ackermann, Hilmar ; Reichenbach, Christoph LU orcid ; Müller, Christian and Smaragdakis, Yannis (2015) Compiler Construction In Lecture notes in computer science 9031. p.111-130
Abstract
In many data processing tasks, declarative query programming offers substantial benefit over manual data analysis: the query processors found in declarative systems can use powerful algorithms such as query planning to choose high-level execution strategies during compilation. However, the principal downside of such languages is that their primitives must be carefully curated, to allow the query planner to correctly estimate their overhead. In this paper, we examine this challenge in one such system, PQL/Java. PQL/Java adds a powerful declarative query language to Java to enable and automatically parallelise queries over the Java heap. In the past, the language has not provided any support for custom user-designed datatypes, as such... (More)
In many data processing tasks, declarative query programming offers substantial benefit over manual data analysis: the query processors found in declarative systems can use powerful algorithms such as query planning to choose high-level execution strategies during compilation. However, the principal downside of such languages is that their primitives must be carefully curated, to allow the query planner to correctly estimate their overhead. In this paper, we examine this challenge in one such system, PQL/Java. PQL/Java adds a powerful declarative query language to Java to enable and automatically parallelise queries over the Java heap. In the past, the language has not provided any support for custom user-designed datatypes, as such support requires complex interactions with its query planner and backend.

We examine PQL/Java and its intermediate language in detail and describe a new system that simplifies PQL/Java extensions. This system provides a language that permits users to add new primitives with arbitrary Java computations, and new rewriting rules for optimisation. Our system automatically stages compilation and exploits constant information for dead code elimination and type specialisation. We have re-written our PQL/Java backend in our extension language, enabling dynamic and staged compilation.

We demonstrate the effectiveness of our extension language in several case studies, including the efficient integration of SQL queries, and by analysing the run-time performance of our rewritten prototype backend. (Less)
Please use this url to cite or link to this publication:
author
; ; and
publishing date
type
Chapter in Book/Report/Conference proceeding
publication status
published
subject
keywords
PQL/Java, Java, parallel programs, Extensibe compilers
host publication
Compiler Construction : 24th International Conference, CC 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015 - 24th International Conference, CC 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015
series title
Lecture notes in computer science
editor
Franke, Björn
volume
9031
pages
111 - 130
publisher
Springer
conference name
Compiler Construction
conference location
Lond, United Kingdom
conference dates
2015-04-11 - 2015-04-18
external identifiers
  • scopus:84926630706
ISSN
1611-3349
0302-9743
ISBN
978-3-662-46662-9
978-3-662-46663-6
DOI
10.1007/978-3-662-46663-6_6
language
English
LU publication?
no
id
630c60c4-ba76-495a-b4fe-a6f61fe06d4f
date added to LUP
2018-02-15 15:50:35
date last changed
2024-01-14 15:08:39
@inproceedings{630c60c4-ba76-495a-b4fe-a6f61fe06d4f,
  abstract     = {{In many data processing tasks, declarative query programming offers substantial benefit over manual data analysis: the query processors found in declarative systems can use powerful algorithms such as query planning to choose high-level execution strategies during compilation. However, the principal downside of such languages is that their primitives must be carefully curated, to allow the query planner to correctly estimate their overhead. In this paper, we examine this challenge in one such system, PQL/Java. PQL/Java adds a powerful declarative query language to Java to enable and automatically parallelise queries over the Java heap. In the past, the language has not provided any support for custom user-designed datatypes, as such support requires complex interactions with its query planner and backend.<br/><br/>We examine PQL/Java and its intermediate language in detail and describe a new system that simplifies PQL/Java extensions. This system provides a language that permits users to add new primitives with arbitrary Java computations, and new rewriting rules for optimisation. Our system automatically stages compilation and exploits constant information for dead code elimination and type specialisation. We have re-written our PQL/Java backend in our extension language, enabling dynamic and staged compilation.<br/><br/>We demonstrate the effectiveness of our extension language in several case studies, including the efficient integration of SQL queries, and by analysing the run-time performance of our rewritten prototype backend.}},
  author       = {{Ackermann, Hilmar and Reichenbach, Christoph and Müller, Christian and Smaragdakis, Yannis}},
  booktitle    = {{Compiler Construction : 24th International Conference, CC 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015}},
  editor       = {{Franke, Björn}},
  isbn         = {{978-3-662-46662-9}},
  issn         = {{1611-3349}},
  keywords     = {{PQL/Java; Java; parallel programs; Extensibe compilers}},
  language     = {{eng}},
  pages        = {{111--130}},
  publisher    = {{Springer}},
  series       = {{Lecture notes in computer science}},
  title        = {{A Backend Extension Mechanism for PQL/Java with Free Run-Time Optimisation}},
  url          = {{http://dx.doi.org/10.1007/978-3-662-46663-6_6}},
  doi          = {{10.1007/978-3-662-46663-6_6}},
  volume       = {{9031}},
  year         = {{2015}},
}