Rapport de stage : Extension d un moteur de requête au traitement de sources de données hétérogènes Auteur : Catherine PINTO DOS SANTOS ALMEIDA Tuteurs : Mr Nel TAURSISSON (Tuteur SKINsoft) Mr Jacques JULLIAND (Tuteur Université) Département informatique Université de Franche-Comté Année 2011-2012
Remerciements En premier lieu, je tiens à remercier Monsieur Geoffroy RIGOULOT, directeur de SKINsoft, de m avoir accueilli en tant que stagiaire au sein de son entreprise. J adresse plus particulièrement mes remerciements vers mon encadrant en entreprise, Nel TAURISSON de m avoir fait profiter de ses connaissances et savoir-faire, ainsi que pour son aide et son soutien pendant toute la durée du stage. Je remercie également Solaine DURPOIX pour sa bonne humeur qui rendait le travail agréable. Je me tourne pareillement vers Monsieur Jacques JULLIAND, encadrant de l université, qui a veillé au bon déroulement des évènements. Je n oublie pas l équipe enseignante grâce à laquelle nous avons pu acquérir les bases nécessaires afin de pouvoir évoluer en milieu professionnel. Finalement, je remercie mes relecteurs, Maria Sofia AMORIM DE OLIVEIRA, José PINTO DOS SANTOS ALMEIDA, et Matthieu QUEHEN pour leur patience et leur gentillesse.
Table des matières 1 Introduction 1 2 Présentation du document 2 2.1 But du document................................ 2 2.2 Cadre du document.............................. 2 2.3 Structure du document............................. 2 3 Présentation de l entreprise 3 3.1 Historique.................................... 3 3.2 Secteur géographique.............................. 3 3.3 Secteur d activité................................ 3 3.4 Marchés..................................... 3 3.5 Personnel.................................... 4 4 Présentation du sujet 5 5 Préliminaires 6 5.1 Nuxeo...................................... 6 5.2 Elasticsearch.................................. 6 5.3 SableCC..................................... 7 5.4 Eclipse...................................... 7 5.5 Subversive.................................... 7 5.6 Maven...................................... 7 5.7 JUnit...................................... 8
6 Travaux Réalisés 9 6.1 Contexte..................................... 9 6.1.1 Un document.............................. 9 6.1.2 Un schéma............................... 9 6.1.3 Un type................................. 9 6.2 Définition d un modèle d indexation..................... 9 6.2.1 Analyse d un moteur d indexation.................. 9 6.2.2 Migration................................ 9 6.2.3 Indexation............................... 9 6.3 Extention d un langage de requêtage..................... 9 6.3.1 La grammaire.............................. 9 6.3.2 Les différents types de requêtes.................... 9 6.3.3 Le moteur de requête......................... 9 6.4 Problèmes rencontrés.............................. 9 7 Conclusion et perspectives 10 Bibliographie 11 Annexes 12
1 Introduction 1
2 Présentation du document 2.1 But du document Le but de ce document est de rendre compte des travaux réalisés au sein de l entreprise SKINsoft, située à Besançon dans le département de la Franche-Comté en France. 2.2 Cadre du document Ce document intervient dans le cadre du stage de la deuxième année de Master Informatique (spécialité Sécurité et Sûreté des Logiciels). Ce stage a commencé le 6 Février 2012 et prend fin le 6 Août 2012. 2.3 Structure du document Se référer à la table des matières. 2
3 Présentation de l entreprise 3.1 Historique L entreprise SKINsoft a été fondée en 2008 par Geoffroy RIGOULOT. 3.2 Secteur géographique SKINsoft a ses installations au 5 Rue du Chateau Rose à Besançon en Franche- Comté. SKINsoft partage ses locaux avec une autre entreprise, L Agence Privée. 3.3 Secteur d activité SKINsoft est une entreprise de recherche et développement en informatique spécialisée dans le développement de solutions de gestion de collections au sens large (collections d art, collections de sciences naturelles, gestion de bibliothèques, gestion d archives, gestion de patrimoine, gestion de médiathèques, etc). Ses principales sources de revenu proviennent principalement de subventions que l état alloue à la recherche informatique, et des contrats de la clientèle pour avoir accès aux différentes solutions proposées (SKINweb, SKINmuseum, SKINlibris, SKINmedia, SKINheritage et SKINshop). 3.4 Marchés Les produits de la société SKINsoft concernent essentiellement des organisations gérant le patrimoine français. L intégration du multi-linguisme dans la suite applicative SKINsoft permet à celle-ci de s ouvrir au marché anglo-saxon. Ses clients sont exculsivement des organismes issus du milieu culturel. On peut retrouver entre autres : Le Louvre d Abu Dabbi, 3
Personnel Présentation de l entreprise le Musée d Orsay, le Musée Grevin, le Musée d Auxerre, l Opéra National, la Comédie Française, la Comédie Nationale de France, les Hospices de Beaune, le Centre National du Costume de Scène, les Arts Décoratifs, le Pôle Archéologique Interdépartemental Rhénan, etc. 3.5 Personnel SKINsoft compte cinq membres dont : Geoffroy RIGOULOT, directeur, Ciprian MELIAN, co-gérant et responsable produit, Nel TAURISSON, responsable Recherche et Développement, Solaine DURPOIX, ingénieure en développement, Bénédicte DROUHARD, documentaliste. 4
4 Présentation du sujet La plateforme sur laquelle repose les applications SKINsoft est d une grande richesse et stocke des données de nature et de sources très différentes (par exemple, des relations sont stockées sous forme RDF 1, des propriétés définies par les utilisateurs dans une base de donnée secondaire). Historiquement, les données étaient, en partie, réindexées dans un moteur d indexation asynchrone Solr [1] qui permettait de faire des requêtes sur l ensemble de ces données. Aujourd hui, SKINsoft a fait évoluer son moteur de stockage de données d une solution SQL 2, vers une solution NoSQL 3 intégrant au plus profond un moteur d indexation (ElasticSearch). L objectif de ce stage est de pouvoir indexer l ensemble des données dans ce même moteur et de développer un langage d interrogation unifié embrassant l ensemble des problématiques. Ainsi, le stagiaire devra : définir et implémenter un modèle d indexation pour les sources externes étendre le langage de requêtage pour intégrer les nouvelle potentialités de recherche : écriture d une grammaire pour le language de requête mise en place du moteur de requêtage pour ce language assurer la compatibilité ascendante en implémentant un traducteur de requête entre les requêtes Solr et le nouveau moteur : écriture de la grammaire du language Solr implémentation de la traduction de l arbre syntaxique Solr vers l arbre syntaxique défini 1. Resource Description Framework 2. Structured Query Language 3. Not Only SQL : désigne une catégorie de système de gestion de base de données destinés à manipuler des bases de données géantes 5
5 Préliminaires 5.1 Nuxeo Nuxeo est un éditeur de logiciel à portée mondiale, qui répond aux besoins d ECM 1. Nuxeo Platform est le socle de la famille de produits Nuxeo. C est une infrastructure de contenu basée sur Java et conçue pour être utilisée comme environnement de développement pour les applications orientées gestion de contenu et de dossiers. Nuxeo Platform est un ensemble extensible et configurable de services de gestion de contenu et de plugins modulaires, qui permet à une organisation de développer des applications horizontales ou verticales. Nuxeoe édite une plateforme open source de gestion de contenu (basée sur Nuxeo Plateform) qui permet aux architectes et développeurs de facilement concevoir, déployer et exploiter des applications métier. 5.2 Elasticsearch Elasticsearch est un moteur de recherche open source qui a été développé par Shay Banon. C est un moteur à la fois puissant et distribué basé sur Lucène 2. La première version est apparue en Février 2010. Il est distribué sous licence Apache. Ce moteur de recherche est composé d un moteur d indexation de documents ainsi que d un moteur de recherche sur les index. Il permet ainsi d effectuer des recherches en temps réel sur de très grands volumes de données. Tout le contenu indexé est lu et écrit en format JSON via les API 3 REST 4 ou Java. 1. Enterprise Content Management 2. Lucene est un moteur de recherche libre écrit en Java qui permet d indexer et de rechercher du texte. C est un projet open source de la fondation Apache mis à disposition sous licence Apache. 3. Application Programming Interface 4. Representational State Transfer : architecture originale du Web 6
SableCC Préliminaires 5.3 SableCC SableCC est un générateur de compilateur open source en Java. Ce framework se base uniquement sur la définition lexicale et grammaticale du langage compilé. Ses quatres principales caractéritiques sont les suivantes : le parser construit automatiquement l AST 5, les noeuds de l AST sont strictement typés, chaque noeud est parcouru un visiteur, le parcours du visiteur est séparé des noeuds. 5.4 Eclipse Eclipse est un projet de la Fondation Eclipse visant à développer tout un environnement de développement libre, extensible, universel et polyvalent. Son objectif est de produire et fournir divers outils gravitant autour de la réalisation de logiciel, englobant les activités de codage logiciel proprement dites (avec notamment un environnement de développement intégré) mais aussi de modélisation, de conception, de test, de reporting, etc. Le projet Eclipse a été créé à l origine par IBM en Novembre 2001 et soutenu par un consortium de fournisseurs de logiciels. La Fondation Eclipse a été créé en Janvier 2004 en tant que société indépendante sans but lucratif dont le but est d agir en tant que responsable de la communauté Eclipse. 5.5 Subversive Subversive est un gestionnaire de versions. Il permet de gérer un projet à partir d un dépot SVN 6. Le but de Subversive est de permettre l intégration de SVN dans Eclipse. La similarité avec le plugin CVS 7 est l un des principes les plus importants. CVS est un système de gestion de versions concurrentes. Il peut aussi bien fonctionner en mode ligne de commande qu à travers une interface graphique. Il se compose de modules clients et d un ou plusieurs modules serveur pour les zones d échanges. Le modèle de CVS est un modèle centralisé, où un serveur central regroupe toutes les sources. 5.6 Maven Apache Maven est un outil open source pour la gestion et l automatisation de production de projets logiciels Java et en particulier Java EE. Il est géré par l organisation 5. Abstract Syntax Tree 6. Subversion 7. Concurrent Versions System 7
JUnit Préliminaires Apache Software Foundation. Maven utilise un paradigme connu sous le nom de POM 8 afin de décrire un projet logiciel, à savoir les dépendances vers d autres projets, les bibliothèques nécessaires à la compilation ainsi que l ordre à suivre pour sa production. Maven impose une arborescence et un nommage des fichiers du projet selon le concept de Convention plutôt que configuration. Ceci permet de réduire la configuration des projets. Maven dispose d un cycle de vie permettant de vérifier avant l éxecution d un but, que tous les buts amonts se sont éxécutés avec succès. 5.7 JUnit JUnit est une bibliothèque des tests unitaires pour le langage de programmation Java. Il a été créé par Kent Beck et Erich Gamma. Le principal intérêt est de s assurer que le code répond toujours au besoin même après d éventuelles modifications. Le but est d automatiser les tests. Ceux ci sont exprimés dans des classes sous la forme de cas de tests avec leurs résultats attendus. JUnit exécute ces tests et les comparent avec ces résultats. 8. Project Object Model 8
6 Travaux Réalisés 6.1 Contexte 6.1.1 Un document 6.1.2 Un schéma 6.1.3 Un type 6.2 Définition d un modèle d indexation 6.2.1 Analyse d un moteur d indexation 6.2.2 Migration 6.2.3 Indexation 6.3 Extention d un langage de requêtage 6.3.1 La grammaire 6.3.2 Les différents types de requêtes 6.3.3 Le moteur de requête 6.4 Problèmes rencontrés 9
7 Conclusion et perspectives 10
Bibliographie [1] Site de Solr. http://lucene.apache.org/solr/. 11
Annexes 12