Voir le résumé
Les graphes sont fréquemment utilisés pour modéliser les interactions du monde réel comme une collection de nœuds et de relations. Il y a eu un développement substantiel dans la conception de bases de données orientées graphes qui intègrent des techniques spéciales de stockage et d'évaluation de requêtes optimisées pour les modèles de données de graphes. Compte tenu de leur expressivité, les modèles de graphes ont été utilisés dans de nombreuses applications. Cependant, un grand nombre de ces graphes subissent des changements continus ou sporadiques tel que des informations plus importantes peuvent être extraites de l'analyse de l'historique de ces graphes plutôt qu'un seul état statique. Dans cette thèse, nous nous concentrons principalement sur le cas de Thing'in, une plateforme de recherche initiée par orange, gérant un graphe d'objets, où les nœuds sont des objets (principalement des objets IoT) et les arêtes sont des relations entre eux. Les utilisateurs de Thing'in sont des entreprises et des administrations publiques développant des services autour des villes intelligentes. La majorité des nœuds du graphe Thing'in représentent des appareils IoT (par exemple, des machines, des détecteurs de mouvement ou des caméras). Alors que les autres nœuds sont liés à l'environnement de ces appareils (par exemple, des villes, des bâtiments ou des pièces). Lorsque la plateforme a été initiée en 2017, le graphe de Thing’in contenait 50 milliers d’objets connectés. Ce nombre a régulièrement augmenté pour atteindre 50 millions, un nombre qui continuera à augmenter dans le proche avenir. Le graphe de Thing'in étant non statique, des questions importantes sur les états passés du graphe peuvent être posées ce qui a motivé la gestion de la dimension temporelle dans la plateforme. Pour une usine intelligente, l’historique du graphe de Thing’in permet le suivi des différentes positions d'un produit tout au long du pipeline de fabrication, la détection des causes des retards de fabrication ou des pertes de produit et la reconstitution de l'état du graphe avant une défaillance du système. Raisonner sur le passé et répondre aux requêtes temporelles des cas d’usage de Thign’in possible que si l’historique du graphe est géré. Au début de cette thèse, la plateforme Thing’in n’était pas conçue pour supporter la dimension temporelle et seul le dernier état du graphe était conservé. Ainsi, l’objectif de cette thèse est de concevoir un système de gestion des graphes temporelles et de l’intégrer dans la plateforme Thing’in. Bien que de nombreux systèmes existants soient conçus avec un support temporel, aucun de ces systèmes ne répond complètement à nos exigences. Pour pallier ces limitations, nous avons conçu Clock-G, un système de gestion des graphes temporels. Les principales caractéristiques de Clock-G, ainsi les principales contributions de cette thèse sont : la définition du langage de requête de graphe temporel T-Cypher qui permet d'exprimer des requêtes de pattern matching ou de parcours de graphes temporelles qui ne peuvent pas être exprimé par les langages existants ; la proposition et implémentation d'une stratégie de stockage qui est basée sur les concepts de matérialisation des états du graphe à des instants temporels pour pouvoir y accéder facilement lors du requêtage. La méthode proposée offre un équilibre entre l'espace de stockage et le temps de réponse des requêtes ce qui ne peut pas être atteint avec les méthodes de stockage traditionnelles ; la proposition et implémentation d'un processeur de requêtes T-Cypher qui choisit de façon greedy le meilleur plan d'évaluation d'une requête temporelle en tenant compte de l'intervalle temporel des requêtes.