Français Anglais
Accueil Annuaire Plan du site
Home > Research results > Dissertations & habilitations
Research results
Ph.D de

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-Sud
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

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.