Au-delà des frontières entre langages de programmation et bases de données / Julien Lopez ; sous la direction de Véronique Benzaken

Date :

Type : Livre / Book

Type : Thèse / Thesis

Langue / Language : anglais / English

Bases de données -- Interrogation

Langages de programmation

Compilation (informatique)

Benzaken, Véronique (19..-....) (Directeur de thèse / thesis advisor)

Cohen-Boulakia, Sarah (1980-.... ; chercheuse en informatique) (Président du jury de soutenance / praeses)

Chailloux, Emmanuel (1959-....) (Rapporteur de la thèse / thesis reporter)

Cheney, James (Rapporteur de la thèse / thesis reporter)

Schmitt, Alan (Membre du jury / opponent)

Nguyen, Kim (1981-....) (Membre du jury / opponent)

Siméon, Jérôme (Membre du jury / opponent)

Université Paris-Saclay (2015-2019) (Organisme de soutenance / degree-grantor)

École doctorale Sciences et technologies de l'information et de la communication (Orsay, Essonne ; 2015-....) (Ecole doctorale associée à la thèse / doctoral school)

Laboratoire de recherche en informatique (Orsay, Essonne ; 1998-2020) (Laboratoire associé à la thèse / thesis associated laboratory)

Université Paris-Sud (1970-2019) (Autre partenaire associé à la thèse / thesis associated third party)

Résumé / Abstract : Plusieurs classes de solutions permettent d'exprimer des requêtes dans des langages de programmation: les interfaces spécifiques telles que JDBC, les mappings objet-relationnel ou object-relational mapping en anglais (ORMs) comme Hibernate, et les frameworks de requêtes intégrées au langage comme le framework LINQ de Microsoft. Cependant, la plupart de ces solutions ne permet de requêtes visant plusieurs bases de données en même temps, et aucune ne permet l'utilisation de logique d'application complexe dans des requêtes aux bases de données. Dans cette thèse, nous détaillons la création d'un framework de requêtes intégrées au langage nommé BOLDR qui permet d'évaluer dans les bases de données des requêtes écrites dans des langages de programmation généralistes qui contiennent de la logique d'application, et qui ciblent différentes bases de données potentiellement basées sur des modèles de données différents. Dans ce framework, les requêtes d'une application sont traduites vers une représentation intermédiaire de requêtes, puis réécrites pour éviter le phénomène "d'avalanche de requêtes" et pour profiter au maximum des capacités d'optimisation des bases de données, et enfin envoyées pour évaluation vers les bases de données ciblées et les résultats obtenus sont convertis dans le langage de programmation de l'application. Nos expériences montrent que les techniques implémentées dans ce framework sont applicables pour de véritables applications centrées données, et permettent de gérer efficacement un vaste champ de requêtes intégrées à des langages de programmation généralistes.

Résumé / 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. In this thesis, we create a language-integrated query framework called BOLDR that, in particular, allows the evaluation in databases of queries written in general-purpose programming languages that contain application logic, and that target different databases of possibly different data models. In this framework, application queries are translated to an intermediate representation, then rewritten in order to avoid query avalanches and make the most out of database optimizations, and finally 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.