Saada: Un Générateur Automatique de Bases de Données Astronomiques Ngoc Hoan NGUYEN Laurent MICHEL Christian MOTCH Observatoire Astronomique de Strasbourg 1 Plan de la présentation Introduction Conception et Développement Conclusions Questions 2 Introduction (1) Contexte • Données personnelles Observation (espace, sol), Simulation Fichier FITS (entêtes et tableaux), non organisé, non recherchable par le contenu Données hétérogènes • Formats variés Formats des fichiers (FITS, VOTable/XML) Structures des fichiers (colonnes) • Catégories variées (images, spectres, tables/sources ..) • Gestion et Partage des données personnelles avec la communauté Internet, réseaux locaux ou Observatoire Virtuel (OV) • Edition et Traitement rapide des requêtes complexes “ Trouver des images contenant des sources soit IR soit radio et dotées d'une vitesse radiale > 100 km/sec ” Il n’existe pas d’outil générique permettant de créer facilement 3une base et d’extraire facilement les contenus scientifiques Introduction (2) Notre Solution Saada Définition d’une Saada-DB • Générée par Saada • Une base locale, opérationnelle • Un système auto-configurable apdatation du modèle de données description des données à archiver archivage automatique sans codage • Un système Objet-Relationel Java/J2ee, Tomcat Postgresql ou Sybase Saada n’est pas une base de données. C’est un paquetage Java pour la génération des bases de données hétérogènes Saada est un outil de transformation rapide des fichiers non recherchables en données recherchables et interconnectées 4 Introduction (3) Applications du Saada • Gestion des données personnelles • Recherche d’objets rares “outliers” Création d'une base avec des données d'origines diverses concernant la région étudiée Etablissement de liens qualifiés (ex. Distance, pixel ou probabilité, ..) de corrélations entre ces données Utilisation des motifs de corrélations pour effectuer des recherches d'objets très spécifiques • Intégration dans une chaîne d’archivage ou des boucles de simulation 5 Conception et Développement de Saada 6 Cycle de vie d’un produit dans une collection Une Image FITS Saada-DB Couche d’Objet entrée par les règles d’ Auto-configuration (Modèle de données, Mapping OR, ..) par Moteur de requêtes; et Couche d’Objet sortie Web, WS, API, OV SGDBR Couche commun (image) Couche produit repository Attributs communs (ex. position) Attributs originaux (classe de produits) Classe Java Le Générateur Saada est conçu par trois idées: 7 Modèle de données flexible, Auto-Configuration, Moteur de requêtes Générique Modèle de données (1) Organisation des données Unité principale, nommée par l’opérateur Image FITS Classe de produits Classe de produits Collection Radio Spectrum Classe de produits Table Classe de produits Entry Radio Theorie Base DEMO_DB Couche des attributs communs (ex. position) Requête sur toute la base Couche des attributs de produits (classe) Requête sur les attributs originaux d'une classe On peut ranger les produits par catégories en fonction de thèmes sémantiques (Collections) 8 Modèle de données (2) Relation Permanente Position Pixel values Source Identification Probability Source • Stockage des liens corrélés et des qualificateurs ( distance, probabilité...) • Définie par l'opérateur Les structures de collections, de classes et de relations permanentes sont générées par l'Auto-configuration 9 Auto-Configuration (1) Configuration des produits • Règles d’identification des produits Par répertoire Par nom (expressions régulières) Par mots clés existant dans les produits • Modes de “mapping” des classes de produits • Sélection des attributs particuliers Mots clés recopiés dans la collection Mots clés ignorés Archiver des données en analysant les règles de configuration et les contenus des fichiers de données10 Auto-Configuration (2) Configuration des produits (image) <product> <image2D name="EPIC_EXPOSURE_MAP"> <identification> <content> <attribute>TELESCOP</attribute> <value> EPIC </value> </content> </identification> <class_mapping>EXPOSURE_MAP</class_mapping> <coord_system> <system>FK5</system> <equinox>2000</equinox> </coord_system> <collection>EPIC</collection> <mapping> <instance_name>OBJECT</instance_name> <ignored_att>COMMENT,HISTORY</ignored_att> <attributs extend….> </mapping> </image2D> </product> Identification des produits Identification/Adaptation ou Création de la classe fusionnée Chargement des produits dans la classe fusionnée, Copie des attributs communs 11 Auto-Configuration (3) Trois modes de classification • Mode “mapping” Fusion • Une classe différente pour chaque produit Chargement d’un petit nombre de grosses tables très différentes entre elles Mode Auto-Classification Classe _Fusion Une seule classe pour tous les produits correspondant à une même configuration Intérêt: Requêtes sur tous les produits en utilisant tous les mots clés Mode Mapping-1-1 • Configuration Classification automatique des structures de produit Les produits de mêmes structures sont automatiquement mis dans une même classe Intérêt :On a pas besoin de connaître à priori la structure des produits Fichier 1 Fichier … Fichier N Configuration Classs_Fichier_1 Fichier 1 Class_Fichier_2 Fichier 2 Configuration Class_1 Fichier 1 Fichier 2 Fichier N Class_2 Fichier 21 Fichier 22 12 Class N Fichier N1 Moteur de requête (1) Objectif • Requête sur des données hétérogènes retournant des résultats hétérogènes • Langage de requêtes de haut niveau: SaadaQL Adaptation au modèle de données Requête par des motifs de corrélations (pré-définis) • Génération automatique des requêtes SQL sur n’importe quelle Saada-DB Traitement rapide des requêtes sans connaître à priori les produits d’une Saada-DB 13 Moteur de requête (2) Structure de requête SaadaQL Modèle de données Select [DataType] From [Class]In [Collection] IMAGE2D SPECTRUM ENTRY WherePosition {IsInBox(), IsInCircle(),…} WhereAttributeSaada{»expression »} WhereAttributeClass {«expression » } TABLE Requête sur toute la base par les attributs communs et par la position WhereRelation { matchPattern{“nom relation_permanente”, Cardinality(“operator”,v1,v2), Qualifier(“qualificateur”,“operator”,v1,v2) AssObjClass(“class1”,”class2”,….”classn”), AssObjAttClass(“ expression ”), AssObjAttSaada(“ expression ”), } matchPattern{…} … } Motifs de corrélations: contraintes sur la correlation et sur les objets associés par la relation Le résultat d'une requête est une liste des OIDs (Object Identifier) 14 Example Génération d’une base DEMODB 15 Partage rapide des données personnelles avec la communauté Conclusions Système Opérationnel répondant aux besoins réels • Création rapide d’une base de données hétérogènes • Organisation libre les données • Mise en valeur du contenu scientifique • Reconnaissance des motifs de corrélation • Exploitation des données XMM-NEWTON • Evaluation par VOTech/ESO Ouverture et Flexibilité Version 1.3 http://amwdb.u-strasbg.fr/saada 16 Merci de votre attention Soutiens: Le CNES La Région Alsace Observatoire Astronomique de Strasbourg 17 Perspective (1) Motif de corrélation imbriqué Requête : Sélectionner les entrées d’ARCHIVE corrélées avec une source IR située à moins de 2’’ et elle-même détectée ailleurs que sur le pixel (23, 456) du CCD et associée à au moins un spectre. SaadaQL Imbriqué: Select ENTRY From * In ARCHIVE WhereRelation { matchPattern{“ABCH_IR”, Qualifier(“distance”, « < », 2, 0), CorrelationSecondary{ matchPattern{“IR_CAMERA”, Qualifier(“pixel_x”, « != », 23, 0), Qualifier(“pixel_y”, « != », 456, 0) } matchPattern{“IR_SPECTRUM”} } } } 18 Perspective (2) Requête par UCDs (~ Ontology) • Sans connaître à priori les noms d'attributs et des classes • Données hétérogènes 19 Classe Fusionnée Long Int Float Double String Char Boolean Long Long Long Float Double String Non Long Int Long Int Float Double String Non Int Float Float Float Float Double String Non Non Double Double Double Double Double String Non Non String String String String String String Non String Char Non Non Non Non String Char Char Boolean Long Int Non Non String Char Boolean 20 Moteur de requête (4) Traitement des requêtes SaadaQL SQL niveau collection Requête SaadaQL Analyse et Décompose SQL niveau classe - Exécution des sous requêtes - Fusion des OIDs ( résultat) index du motifs de corrélation+ SQL Le résultat d'une requête est une liste des OIDs (Object Identifier) 21 Moteur de requête (5) Méthode d’indexation des motifs de corrélation • Objectif: Eviter les requêtes sur plusieurs tables(jointures) • Principe: Utilisation d'index pré-calculés MatchPattern{ “nom relation”, Cardinality(..), Qualifier(“qualificateur”,..), AssObjClass(“class1”,….”classn”) } Index de cardinalité Index des qualificateurs Index de classe contrepartie Ces index sont calculés automatiquement Mis dans des fichiers, chargés en mémoire par Cache In Exemple de l’index de cardinalité Cardinalité OID Primaire 1 OID1,OID3,OID6 2 OIDK, OIDJ,OIDL 7 OIDM,OIDN 22 Moteur de requête (6) Evaluation SaadaQL / jointures SQL • Requête par cardinalité La comparaison entre Jointure SQL et Index de cardinalité SaadaQL: 3000 ms Select ENTRY From * In EPIC WhereRelation { matchPattern {“CORR_EPIC_ARCHIVE”, Cardinality (“=”,V1, 0) }} SQL Jointure 2000 Index memoire 1000 SQL: 0 Select distinct OIDsaada From EPIC_EntrySaada as E Where (select count(*) from EPIC_ARCHI_15 as EA where E.oidsaada=EA.oidprimary)) =V1 0 500000 1000000 1500000 nom bre de corrélation • Requête par classe de contreparties La comparaison entre SQL et Index de classe associé SaadaQL: Select ENTRY From * In EPIC WhereRelation { matchPattern {“EPIC_ARCHIVE”, AssObjAttSaada (“pos_dec_csa>10”) }} SQL : jointure par deux tables Select distinct EA.OIDprimary From EPIC_ARCHIVE as EA, ARCHIVE_EntrySaada as A Where (EA.oidsecondary=A.oidSaada and A.pos_dec_csa>10 ) 40000 SQL 30000 ms Index en mémoire sans caché 20000 10000 Index en mémoire avec caché 0 0 500000 1000000 1500000 nombre de corrélation 23 Solution Saada (9) Comment générer une Saada-DB? • Création d’une Saada-DB vide par Saada • Configuration des produits à charger • Chargement des données selon les configurations définies à l’étape précédente. • Génération et déploiement de l’interface et du serveur Web A ce niveau, on a une base de données exploitable dont on peut enrichir le contenu scientifique • Définition des corrélations permanentes (opt.) • Publication des données dans l’OV (opt.) 24 Introduction Définition d’une Saada-DB • Base de donnée générée par Saada • Une base locale, opérationnelle, et indépendante de l’outil Saada • Un système auto-configurable apdatation du modèle de données description des données à archiver archivage automatique sans codage L'Opérateur : personne qui crée la base Saada-DB L'Utilisateur: personne qui exploite la base Saada-DB 25 Solution Saada (5) Quel contenu peut être archivé? • Base relationnelle : stockage des entêtes et des tables des fichiers (FITS) requêtes, calculs • Repository accessible : stockage des fichiers originaux sauvegarde, téléchargement 26 Solution Saada (7) Application (2) • Intégration d’une base de données dans une boucle de simulations ou dans un pipeline FITS Paramètres d’entrée boucle Recepteur des données de Saada-DB API Saada Données de référence Boucle Saada-DB ou Saada-DB/GRID SaadaQL Noyau de Simulation Non Archivage des données simulées Par l'Auto-Configuration Validation? OUI Résultats 27 Auto-Configuration (1) Objectif • Paramétrage du modèle de données • Configuration des produits à charger Identification automatique des produits à charger selon des règles définies • Reconnaissance automatique des nouvelles structures de produits Mise à jour des données Ajout de nouveaux produits à une classe de produits existante Adaptation automatique des classes existantes aux nouveaux produits Archivage automatique de données sans codage 28 Moteur de requêtes SaadaQL(3) SaadaQL • Facilité d’implémentation des modules Interface personnalisée 29 Modèle de données (1) Comment Organiser les données? FITS Généré dynamiquement FITS FITS FITS Spectre Plot Image Table/source Un tiroir (Une collection de données hétérogènes) Saada-DB est comme un meuble contenant des tiroirs séparés dans lesquels on peut ranger les produits par catégories en fonction de thèmes sémantiques 30 Modèle de données Objet /Relationelle SUPER CLASS SAADA Class NameColl_Table Class NameColl_Entry Class NameColl_Image2D Class NameColl_Spectra Mappin g to OIDSaada int8 NameSaada Char(32) Name_product Char(32) …. Table NameColl_Table OIDSaada int8 NameSaada Char(32) Pos_ra_csa (double) Pos_dec_csa (double) OID_Table int8 … Table NameColl_Entry OIDSaada int8 NameSaada Char(32) Name_product (char 32) Pos_ra_csa (double) Pos_dec_csa (double) Alpha … OIDSaada int8 NameSaada Char(32) Name_product Char(32) … Table NameColl_Image2D Table NameColl_Spectra 31 Démonstration (1) Génération d’une base DEMODB • Une collection (données du satellite Chandra) Xcollection Chandra_Data DEMODB Spectra Images Sources Images: Chandra Catalogue Sources: Chandra Catalogue 32 Démonstration Base DEMODB complexe • Deux collections avec relations permanantes X Relationship ImgToSpectra XMM_DATA GalactPlaneSurvey Relationship ImgToSrc THESE_DB2 Spectra Images Source Spectra: XMM-Newton SSC Galactic Plane Survey Courtesy of P. Guillout et Al. Spectra Images Source Images: XMM-Newton Catalogue Sources: XMM-Newton Catalogue 33 Modèle de données Objets (UML) 34 Attributs communs Attributs communs oidsaada namesaada date_load pos_ra_csa pos_dec_csa error_ra_csa error_dec_csa oid_table Nb_rows_csa name_class_entry_cs a Sky_pixel_csa Pos_x/y/z_csa product_url_csa Rôle Identificateur unique de l’objet Nom d’instance Date de chargement en seconds Ascension droite en degré (coordonnées système définies à la création de la SaadaDB) Déclinaison en degrés Erreur sur l’ascension (en degrés) Erreur de déclinaison (en degré) Identificateur unique de la table possédant l’objet Nombre de lignes Nom de la classe Saada des entrées Index HTM Coordonnées cartésiennes Nom du fichier initial IMAGE2D SPECTRUM TABLE ENTRY X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X MD5 (Message Digest version 5) est une fonction de hachage cryptographique qui permet d'obtenir pour chaque message une empreinte numérique 35 Intégration dans l’OV Interopérabilité avec Aladin, Specview • Corrélation permanente et VOTable (1) Link to the selected image (1) Link to the selected image (3) Link to a Saada view of the correlated spectra (3) Link to a Saada view of the correlated spectra (2) Link to the correlated sources (2) Link to the correlated sources with an anchor on Saada with an anchor on Saada for each of them for each of them (4) Link to a Specview view of the correlated spectra (4) Link to a Specview view of the correlated spectra Focus Demos à ADASS XV 36 Auto-Configuration (4) Mode de Mapping des classes La collection Epic et ses catégories de produits (Image2D, Entry, Table, Spectre) Mapping Classification: Classe contenant plusieurs produits ayant la même structure Mapping 1_1 Classe contenant un seul produit 37 Moteur de requête SaadaQL(5) Méthode d’index des motifs de corrélations • Objectif: éviter des jointures SQL lourdes Forme générale d’une requête JOINTURE SQL: Select * From A , B, A_B Where A.ID=A_B.IDa and A_B.IDb=B.IDb and (…) 38 Démonstration Con,figuration <product> <image2D name="EPIC_EXPOSURE_MAP"> // nom d’une configuration <identification> <content> <attribute>CONTENT</attribute> <value> EPIC EXPOSURE MAP</value> </content> </identification> <class_mapping>EXPOSURE_MAP</class_mapping> <coord_system> <system>FK5</system> <equinox>2000</equinox> </coord_system> <collection>EPIC</collection> <mapping> <instance_name>OBJECT</instance_name> <ignored_att>COMMENT,HISTORY</ignored_att> <attributs extend….> </mapping> </image2D> </product> 39 Approche Saada (1) Comment construire Saada? AutoConfigurati on Modèle de données flexible Interfac e OV Modèle ObjetRelationnel Moteur de requête générique Solutio n SAADA , Un Génér ateur de bases de donné es, Systè me Généri 40 que Solution Saada (3) Architecture d’une Saada-DB • Système objet-relationnel Couche objet pour une présentation scientifiquement pertinente des données Couche relationnelle pour la persistance Web, WS/OV, Module Clients Couche d’Objet pour l’accès aux données Relationnelles Moteur Requête SaadaQL Cache Objet Auto Configuration Chargement Mise à Jour Service Persistence, JDBC SQL Postgresql/Sysbase SQL 41