Ph.D
Group : Verification of Algorithms, Languages and Systems
Breaking boundaries between programming language and database runtimes
Starts on 01/10/2015
Advisor : BENZAKEN, Véronique
Funding : Contrat doctoral uniquement recherche
Affiliation : Université Paris-Saclay
Laboratory : LRI - VALS
Defended on 13/09/2019, committee :
Directrice de thèse :
- Mme. Véronique Benzaken - Professeur, Université Paris-Sud
Co-encadrant de thèse :
- M. Kim Nguyen - Maître de conférences, Université Paris-Sud
Rapporteurs :
- M. James Cheney - Reader, Université d'Édimbourg
- M. Emmanuel Chailloux - Professeur, Sorbonne Université
Examinateurs :
- M. Alan Schmitt - Directeur de recherche, INRIA Rennes
- M. Jérôme Siméon - Chief scientist, Clause Inc.
- Mme. Sarah Cohen Boulakia - Professeur, Université Paris-Sud
Invité :
- M. Giuseppe Castagna - Directeur de recherche, CNRS et Université de
Paris
Research activities :
Abstract :
Several classes of solutions allow programming languages to express
queries: specific APIs such as JDBC, Object-Relational Mappings (ORMs)
such as Hibernate, and language-integrated query frameworks such as
Microsoft's LINQ. However, most of these solutions do not allow for
efficient cross-databases queries, and none allow the use of complex
application logic from the programming language in queries.
This thesis studies the design of a new language-integrated query
framework called BOLDR that allows the evaluation in databases of
queries written in general-purpose programming languages containing
application logic, and targeting several databases following different
data models. In this framework, application queries are translated to
an intermediate representation. Then, they are typed with a type
system extensible by databases in order to detect which database
language each subexpression should be translated to. This type system
also allows us to detect a class of errors before execution. Next,
they are rewritten in order to avoid query avalanches and make the
most out of database optimizations. Finally, queries are sent for
evaluation to the corresponding databases and the results are
converted back to the application. Our experiments show that the
techniques we implemented are applicable to real-world database
applications, successfully handling a variety of language-integrated
queries with good performances.