Saada: Un Générateur Automatique de Bases de Données Astronomiques
description
Transcript of Saada: Un Générateur Automatique de Bases de Données Astronomiques
11
Saada: Un Générateur Automatique de Bases de Données Astronomiques
Ngoc Hoan NGUYENNgoc Hoan NGUYENLaurent MICHELLaurent MICHELChristian MOTCHChristian MOTCH
Observatoire Astronomique de Strasbourg
22
Plan de la présentationPlan de la présentation IntroductionIntroduction
Conception et DéveloppementConception et Développement
ConclusionsConclusions
QuestionsQuestions
33
Introduction (1)Introduction (1) Contexte Contexte
• Données personnellesDonnées personnelles Observation (espace, sol), SimulationObservation (espace, sol), Simulation Fichier FITS (entêtes et tableaux), non organisé, non Fichier FITS (entêtes et tableaux), non organisé, non
recherchable par le contenurecherchable par le contenu Données hétérogènesDonnées hétérogènes
• Formats variésFormats variés Formats des fichiers (FITS, VOTable/XML)Formats des fichiers (FITS, VOTable/XML) Structures des fichiers (colonnes)Structures des fichiers (colonnes)
• Catégories variées (images, spectres, tables/sources ..)Catégories variées (images, spectres, tables/sources ..)• Gestion et Partage des données personnelles avec la Gestion et Partage des données personnelles avec la
communauté communauté Internet, réseaux locaux ou Observatoire Virtuel (OV)Internet, réseaux locaux ou Observatoire Virtuel (OV)
• Edition et Traitement rapide des requêtes complexesEdition et Traitement rapide des requêtes complexes “ “ Trouver des images contenant des sources soit IR soit Trouver des images contenant des sources soit IR soit
radio et dotées d'une vitesse radiale > 100 km/sec ”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 une base et d’extraire facilement les contenus scientifiques
44
Introduction (2)Introduction (2) Notre Solution SaadaNotre Solution Saada
Saada est un outil de transformation rapide des fichiers non recherchables en données recherchables et interconnectées
Saada n’est pas une base de données. C’est un paquetage Java pour 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ènesla génération des bases de données hétérogènes
Définition d’une Saada-DBDéfinition d’une Saada-DB• Générée par SaadaGénérée par Saada• Une base locale, opérationnelleUne base locale, opérationnelle• Un système auto-configurableUn système auto-configurable
apdatation du modèle de donnéesapdatation du modèle de données description des données à archiverdescription des données à archiver archivage automatique sans codagearchivage automatique sans codage
• Un système Objet-RelationelUn système Objet-Relationel Java/J2ee, TomcatJava/J2ee, Tomcat Postgresql ou SybasePostgresql ou Sybase
55
Introduction (3)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
77
Cycle de vie d’un produit Cycle de vie d’un produit
Une Image FITS
Web, WS,
API, OV
par Moteur de requêtes; et Couche d’Objet dans une collection
Couche commun (image)
Couche produit Attributs communs (ex. position)Attributs originaux (classe de produits)
Classe Javarepository
SGDBR
entrée sortie
Saada-DB
Couche d’Objet(Modèle de données,
Mapping OR, ..)
par les règles d’ Auto-configuration
Le Générateur Saada est conçu par trois idées:
Modèle de données flexible, Auto-Configuration, Moteur de requêtes Générique
88
Modèle de données (1)Modèle de données (1) Organisation des donnéesOrganisation des données
Image
Spectrum
Table
Entry
Collection Radio
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
Base DEMO_DB
Radio Theorie
Classe de produits
FITS
Classe de produits
Classe de produits
Classe de produits
Unité principale,nommée par l’opérateur
On peut ranger les produits par catégories en fonction de thèmes sémantiques (Collections)
99
Modèle de données (2)Modèle de données (2) Relation Permanente Relation Permanente
• Stockage des liens corrélés et des qualificateurs ( distance, Stockage des liens corrélés et des qualificateurs ( distance, probabilité...)probabilité...)
• Définie par l'opérateur 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
Source
SourcePosition Identification
Probability
Pixel values
1010
Auto-Configuration (1)Auto-Configuration (1) Configuration des produits Configuration des produits
• Règles d’identification des produitsRègles d’identification des produits Par répertoirePar répertoire Par nom (expressions régulières) Par nom (expressions régulières) Par mots clés existant dans les produitsPar mots clés existant dans les produits
• Modes de “Modes de “mapping”mapping” des classes de des classes de produitsproduits
• Sélection des attributs particuliersSélection des attributs particuliers Mots clés recopiés dans la collectionMots clés recopiés dans la collection Mots clés ignorésMots clés ignorés
Archiver des données en analysant les règles de Archiver des données en analysant les règles de configuration et les contenus des fichiers de donnéesconfiguration et les contenus des fichiers de données
1111
Auto-Configuration (2) Auto-Configuration (2) Configuration des produits (image)Configuration des produits (image)
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
<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>
1212
Auto-Configuration (3)Auto-Configuration (3) Trois modes de classificationTrois modes de classification
• Mode “mapping” FusionMode “mapping” Fusion Une seule classe pour tous les produits Une seule classe pour tous les produits
correspondant à une même configurationcorrespondant à une même configuration Intérêt: Requêtes sur tous les produits en Intérêt: Requêtes sur tous les produits en
utilisant tous les mots clés utilisant tous les mots clés • Mode Mapping-1-1Mode Mapping-1-1
Une classe différente pour chaque Une classe différente pour chaque produitproduit
Chargement d’un petit nombre de Chargement d’un petit nombre de grosses tables très différentes entre ellesgrosses tables très différentes entre elles
• Mode Auto-ClassificationMode Auto-Classification Classification automatique des structures Classification automatique des structures
de produitde produit Les produits de mêmes structures sont Les produits de mêmes structures sont
automatiquement mis dans une même automatiquement mis dans une même classeclasse
IntérêtIntérêt : :On a pas besoin de connaître à On a pas besoin de connaître à priori la structure des produits priori la structure des produits
Configuration
Classe _Fusion
Fichier 1
Fichier …
Fichier N
Configuration
Classs_Fichier_1
Fichier 1
Class_Fichier_2
Fichier 2Configuration
Class_1
Fichier 1
Class_2Fichier 21
Fichier 2
Fichier 22
Fichier N
Class NFichier N1
1313
Moteur de requête (1) Moteur de requête (1) ObjectifObjectif
• Requête sur des données hétérogènes retournant Requête sur des données hétérogènes retournant des résultats hétérogènesdes résultats hétérogènes
• Langage de requêtes de haut niveau: SaadaQLLangage de requêtes de haut niveau: SaadaQL Adaptation au modèle de donnéesAdaptation au modèle de données Requête par des Requête par des motifs de corrélationsmotifs de corrélations (pré-définis) (pré-définis)
• Génération automatique des requêtes SQL sur Génération automatique des requêtes SQL sur n’importe quelle Saada-DBn’importe quelle Saada-DB
Traitement rapide des requêtes sans connaître à Traitement rapide des requêtes sans connaître à priori les produits d’une Saada-DBpriori les produits d’une Saada-DB
1414
Moteur de requête (2)Moteur de requête (2) Structure de requête SaadaQLStructure de requête SaadaQL
Select [DataType] From [Class]In [Collection]
WherePosition {IsInBox(), IsInCircle(),…}WhereAttributeSaada{»expression »}WhereAttributeClass {«expression » }
WhereRelation { matchPattern{“nom relation_permanente”,
Cardinality(“operator”,v1,v2), Qualifier(“qualificateur”,“operator”,v1,v2) AssObjClass(“class1”,”class2”,….”classn”), AssObjAttClass(“ expression ”), AssObjAttSaada(“ expression ”), }matchPattern{…}
… }
Modèle de données
Motifs de corrélations: contraintes sur la correlation et sur les objets associés par la relation
Requête sur toute la base par les attributs communs et par la position
IMAGE2D
SPECTRUM
ENTRY
TABLE
Le résultat d'une requête est une liste des OIDs (Object Identifier)
1515
ExampleExample Génération d’une base DEMODBGénération d’une base DEMODB
Partage rapide des données personnelles avec la communauté
1616
ConclusionsConclusions Système Opérationnel répondant aux Système Opérationnel répondant aux
besoins réelsbesoins réels• Création rapide d’une base de données Création rapide d’une base de données
hétérogèneshétérogènes• Organisation libre les données Organisation libre les données • Mise en valeur du contenu scientifiqueMise en valeur du contenu scientifique• Reconnaissance des motifs de corrélationReconnaissance des motifs de corrélation• Exploitation des données XMM-NEWTON Exploitation des données XMM-NEWTON • Evaluation par VOTech/ESOEvaluation par VOTech/ESO
Ouverture et FlexibilitéOuverture et Flexibilité Version 1.3 Version 1.3
http://amwdb.u-strasbg.fr/saadahttp://amwdb.u-strasbg.fr/saada
1717
Merci de votre attentionMerci de votre attention
Soutiens:Le CNESLa Région AlsaceObservatoire Astronomique de Strasbourg
1818
Perspective (1)Perspective (1) Motif de corrélation imbriquéMotif de corrélation imbriquéRequête :Requête : Sélectionner les entrées d’ARCHIVE corrélées avec une 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 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.sur le pixel (23, 456) du CCD et associée à au moins un spectre.
SaadaQL Imbriqué: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”} } } }
1919
Perspective (2)Perspective (2) Requête par UCDs (~ Ontology)Requête par UCDs (~ Ontology)
• Sans connaître à priori les noms d'attributs et Sans connaître à priori les noms d'attributs et des classesdes classes
• Données hétérogènesDonnées hétérogènes
2020
Classe FusionnéeClasse Fusionnée
Long Int Float Double String Char BooleanLong Long Long Float Double String Non LongInt Long Int Float Double String Non Int
Float Float Float Float Double String Non NonDouble Double Double Double Double String Non NonString String String String String String String StringChar Non Non Non Non Non Char Char
Boolean Long Int Non Non String Char Boolean
2121
Moteur de requête (4)Moteur de requête (4) Traitement des requêtes SaadaQLTraitement des requêtes SaadaQL
Requête SaadaQL
Analyse et Décompose
- Exécution des sous requêtes- Fusion des OIDs ( résultat)
SQL niveau collection
SQL niveau classe
index du motifs de corrélation+
SQL
Le résultat d'une requête est une liste des OIDs (Object Identifier)
2222
Moteur de requête (5)Moteur de requête (5) Méthode d’indexation des motifs de corrélationsMéthode d’indexation des motifs de corrélations
• Objectif: Eviter les requêtes sur plusieurs tables(jointures)Objectif: Eviter les requêtes sur plusieurs tables(jointures)• Principe: Utilisation d'index pré-calculésPrincipe: Utilisation d'index pré-calculés
Ces index sont calculés automatiquementCes index sont calculés automatiquement Mis dans des fichiers, chargés en mémoire par Cache IndexMis dans des fichiers, chargés en mémoire par Cache Index Exemple de l’index de cardinalitéExemple de l’index de cardinalité
OIDM,OIDNOIDM,OIDN77OIDK, OIDJ,OIDLOIDK, OIDJ,OIDL22OID1,OID3,OID6OID1,OID3,OID611OID PrimaireOID Primaire CardinalitéCardinalité
MatchPattern{ “nom relation”, Cardinality(..), Qualifier(“qualificateur”,..), AssObjClass(“class1”,….”classn”)}
Index de cardinalité Index des qualificateurs Index de classe contrepartie
2323
Moteur de requête (6)Moteur de requête (6) Evaluation SaadaQL / jointures SQLEvaluation SaadaQL / jointures SQL
•Requête par cardinalitéRequête par cardinalité
•Requête par classe de contrepartiesRequête par classe de contreparties
La comparaison entre Jointure SQL et Index de cardinalité
0
1000
2000
3000
0 500000 1000000 1500000
nombre de corrélation
ms
SQL Jointure
Index memoire
SaadaQL: Select ENTRY From * In EPIC WhereRelation { matchPattern {“CORR_EPIC_ARCHIVE”, Cardinality (“=”,V1, 0) }}
SQL:Select distinct OIDsaada From EPIC_EntrySaada as E Where (select count(*) from EPIC_ARCHI_15 as EA where E.oidsaada=EA.oidprimary)) =V1
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 )
La comparaison entre SQL et Index de classe associé
0
10000
20000
30000
40000
0 500000 1000000 1500000
nombre de corrélation
ms
SQL
Index en mémoire sanscaché
Index en mémoire aveccaché
2424
Solution Saada (9)Solution Saada (9) Comment générer une Saada-DB?Comment générer une Saada-DB?
• Création d’une Saada-DB vide par SaadaCréation d’une Saada-DB vide par Saada• Configuration des produits à chargerConfiguration des produits à charger• Chargement des données selon les Chargement des données selon les
configurations définies à l’étape précédente.configurations définies à l’étape précédente.• Génération et déploiement de l’interface et du Génération et déploiement de l’interface et du
serveur Web serveur Web A ce niveau, on a une base de données A ce niveau, on a une base de données
exploitable dont on peut enrichir le contenu exploitable dont on peut enrichir le contenu scientifiquescientifique
• Définition des corrélations permanentes (opt.)Définition des corrélations permanentes (opt.)• Publication des données dans l’OV (opt.)Publication des données dans l’OV (opt.)
2525
IntroductionIntroduction Définition d’une Saada-DBDéfinition d’une Saada-DB
• Base de donnée générée par SaadaBase de donnée générée par Saada
• Une base locale, opérationnelle, et Une base locale, opérationnelle, et indépendante de l’outil Saadaindépendante de l’outil Saada
• Un système auto-configurableUn système auto-configurable apdatation du modèle de donnéesapdatation du modèle de données description des données à archiverdescription des données à archiver archivage automatique sans codagearchivage automatique sans codage
L'Opérateur : personne qui crée la base Saada-DBL'Utilisateur: personne qui exploite la base Saada-DB
2626
Solution Saada (5)Solution Saada (5) Quel contenu peut être archivé?Quel contenu peut être archivé?
•Base relationnelle : stockage Base relationnelle : stockage des entêtes des entêtes et des tableset des tables des fichiers (FITS) des fichiers (FITS)
requêtes, calculsrequêtes, calculs
•RepositoryRepository accessible : stockage des accessible : stockage des fichiers originauxfichiers originaux
sauvegarde, téléchargementsauvegarde, téléchargement
2727
Solution Saada (7)Solution Saada (7) Application (2)Application (2)
• Intégration d’une base de données dans Intégration d’une base de données dans une boucle de simulations ou dans un une boucle de simulations ou dans un pipelinepipeline
Paramètres d’entrée
Recepteur des données de Saada-DB
Noyau de Simulation
Validation?
Saada-DB ouSaada-DB/GRID
Résultats
OUI
Boucle
Non
API Saada
SaadaQL
FITSboucle
Données de référence
Par l'Auto-ConfigurationArchivage desdonnées simulées
2828
Auto-Configuration (1) Auto-Configuration (1) Objectif Objectif
• Paramétrage du modèle de donnéesParamétrage du modèle de données• Configuration des produits à chargerConfiguration des produits à charger
Identification automatique des produits à charger Identification automatique des produits à charger selon des règles définiesselon des règles définies
• Reconnaissance automatique des nouvelles Reconnaissance automatique des nouvelles structures de produits structures de produits
Mise à jour des données Mise à jour des données Ajout de nouveaux produits à une classe de Ajout de nouveaux produits à une classe de
produits existanteproduits existante Adaptation automatique des classes existantes aux Adaptation automatique des classes existantes aux
nouveaux produitsnouveaux produits
Archivage automatique de données sans codage
2929
Moteur de requêtes SaadaQL(3)Moteur de requêtes SaadaQL(3)
SaadaQLSaadaQL•Facilité d’implémentation des modulesFacilité d’implémentation des modules
Interface personnalisée Interface personnalisée
3030
Modèle de données (1)Modèle de données (1) Comment Organiser les données?Comment Organiser les données?
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
Spectre Plot Image Table/source
Généré dynamiquement
FITS
FITS
FITS
FITS
Un tiroir (Une collection de données hétérogènes)
3131
Modèle de données Modèle de données Objet /RelationelleObjet /Relationelle
Table NameColl_SpectraTable NameColl_Image2DTable NameColl_EntryTable NameColl_Table
Mapping to
SUPER CLASS SAADA
OIDSaada int8NameSaada Char(32)Name_product Char(32)….
Class NameColl_Table
OIDSaada int8NameSaada Char(32)Pos_ra_csa (double)Pos_dec_csa (double)OID_Table int8
…
OIDSaada int8NameSaada Char(32)Name_product (char 32)Pos_ra_csa (double)Pos_dec_csa (double)Alpha …
OIDSaada int8NameSaada Char(32)Name_product Char(32)…
Class NameColl_Entry Class NameColl_Image2D Class NameColl_Spectra
3232
Démonstration (1)Démonstration (1) Génération d’une base DEMODBGénération d’une base DEMODB
• Une collection (données du satellite Une collection (données du satellite Chandra)Chandra)
X
Images: Chandra CatalogueSources: Chandra Catalogue
Spectra Images Sources
collection Chandra_Data
DE
MO
DB
3333
DémonstrationDémonstration Base DEMODB complexeBase DEMODB complexe
•Deux collections avec relations Deux collections avec relations permanantespermanantesX
Spectra: XMM-Newton SSC Galactic Plane SurveyCourtesy of P. Guillout et Al.
Images: XMM-Newton CatalogueSources: XMM-Newton Catalogue
Gal
actP
lane
Surv
ey
Spectra Images SourceSpectra Images Source
XM
M_D
AT
A
TH
ESE
_DB
2
Relationship ImgToSpectra
Relationship ImgToSrc
3535
Attributs communsAttributs communsAttributscommuns
Rôle IMAGE2D SPECTRUM TABLE ENTRY
oidsaada Identificateur uniquede l’objet X X X X
namesaada Nom d’instance X X X X
date_load Date de chargementen seconds X X X X
pos_ra_csa
Ascension droite endegré (coordonnéessystème définies à lacréation de la Saada-DB)
X X X
pos_dec_csa Déclinaison endegrés X X X
error_ra_csaErreur surl’ascension (endegrés)
X
error_dec_csa Erreur de déclinaison(en degré) X
oid_tableIdentificateur uniquede la table possédantl’objet
X
Nb_rows_csa Nombre de lignes Xname_class_entry_csa
Nom de la classeSaada des entrées X
Sky_pixel_csa Index HTM X X X
Pos_x/y/z_csa Coordonnéescartésiennes X X X
product_url_csa Nom du fichierinitial 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
3636
Intégration dans l’OV Intégration dans l’OV Interopérabilité avec Aladin, SpecviewInteropérabilité avec Aladin, Specview
•Corrélation permanente et VOTableCorrélation permanente et VOTable
(1) Link to the selected image(1) Link to the selected image
(2) Link to the correlated sourceswith an anchor on Saada for each of them
(2) Link to the correlated sourceswith an anchor on Saada for each of them
(4) Link to a Specview view of the correlated spectra(4) Link to a Specview view of the correlated spectra
(3) Link to a Saada view of the correlated spectra(3) Link to a Saada view of the correlated spectra
Focus Demos à ADASS XV
3737
Auto-Configuration (4)Auto-Configuration (4) Mode de Mapping des classes Mode de Mapping des classes
Mapping Classification:Classe contenant plusieurs produits ayant la même structure
Mapping 1_1Classe contenant un seul produit
La collection Epic et ses catégories de produits (Image2D, Entry, Table, Spectre)
3838
Moteur de requête SaadaQL(5)Moteur de requête SaadaQL(5) Méthode d’index des motifs de corrélationsMéthode d’index des motifs de corrélations
• Objectif: éviter des jointures SQL lourdesObjectif: é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 (…)
3939
DémonstrationDémonstration Con,figurationCon,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>
4040
Approche Saada (1)Approche Saada (1) Comment construire Saada?Comment construire Saada?
Modèle de
donnéesflexible
Auto-Configurati
on
Moteur de requête
générique
Modèle Objet-
Relationnel
Solution
SAADA,
UnGénérateur
de bases
de donné
es,
Système
GénériqueEt
Flexible
Interface OV
4141
Solution Saada (3)Solution Saada (3) Architecture d’une Saada-DBArchitecture d’une Saada-DB
•Système objet-relationnelSystème objet-relationnel Couche objet pour une présentation Couche objet pour une présentation
scientifiquement pertinente des donnéesscientifiquement pertinente des données Couche relationnelle pour la persistanceCouche relationnelle pour la persistance
Postgresql/Sysbase
SQLSQL
Cache ObjetCouche d’Objet pour l’accès aux données Relationnelles
Moteur Requête SaadaQL
Service Persistence, JDBC
Auto ConfigurationChargementMise à Jour
Web, WS/OV, Module Clients