Utilisation de spécifications formelle pour implémenter un backend de base de données
Auteur / Autrice : | Saalik Hatia |
Direction : | Marc Shapiro |
Type : | Thèse de doctorat |
Discipline(s) : | Sciences et technologies de l'information et de la communication |
Date : | Soutenance le 01/06/2023 |
Etablissement(s) : | Sorbonne université |
Ecole(s) doctorale(s) : | École doctorale Informatique, télécommunications et électronique de Paris (1992-...) |
Partenaire(s) de recherche : | Laboratoire : LIP6 (1997-....) |
Jury : | Président / Présidente : Antoine Miné |
Examinateurs / Examinatrices : Carla Ferreira, Serdar Taşıran, Patrick Valduriez | |
Rapporteur / Rapporteuse : Emmanuelle Anceaume, Gaël Thomas |
Mots clés
Mots clés contrôlés
Mots clés libres
Résumé
Conceptuellement, un système de stockage de base de données n'est qu'une correspondance entre des clés et des valeurs. Cependant, pour offrir des performances élevées et une fiabilité, une base de donnée moderne est un système complexe et concurrent, rendant le système prône aux erreurs. Cette thèse relate notre parcours, allant de la spécification formelle d'une base de données à son implémentation. La spécification est courte et non ambigüe, et aide à raisonner sur la justesse. La lecture du pseudocode de la spécification fournit une base rigoureuse pour une implémentation. La spécification décrit la couche de stockage comme une mémoire partagée transactionnelle simple, avec deux variantes (au comportement équivalent), basées sur une map et un journal. Nous implémentons ces deux variantes en restant fidèles à notre spécification. Nous spécifions les fonctionnalités d'une base de données moderne, ayant un système de journalisation avec des snapshots et de la troncature, comme une composition des deux variants. La spécification de cette dernière est particulièrement simple. Finalement, nous présentons une évaluation expérimentale avec des performances qui sont acceptables pour une implémentation qui est correcte.