Intégration ActiveXML - Xyleme Dan Vodislav Xyleme
Plan Contexte et objectifs Architectures possibles Réalisation Conclusions et perspectives Dan VODISLAV --- Intégration ActiveXML - Xyleme
Xyleme Entrepôt de données XML à très large échelle Architecture Très efficace pour la gestion de gros volumes de données API de programmation XyDK Architecture Documents XML Requêtes XyQL XyLoader XyQuery XyIndex XyStore Dan VODISLAV --- Intégration ActiveXML - Xyleme
ActiveXML Modèle de documents XML dynamiques XML + appels de services + modèle d'évaluation Plate-forme pour applications distribuées Communication par services web XOQL processor AXML engine query WSDL service descriptions read update consults SOAP wrapper AXML peer service SOAP client service call service result AXML store AXML XML <info> <ville>Paris</ville> <axml:sc service=“Temperature” mode=“append” frequence=“every day” > <axml:param name=“ville”> <axml:xpath>../ville/text()</ axml:xpath> </axml:param> </axml:sc> </info> Dan VODISLAV --- Intégration ActiveXML - Xyleme
Objectifs Rôles dans e.dot Xyleme: stockage et interrogation de données XML ActiveXML: distribution de l'application, communication, workflow Objectif: intégrer les rôles de stockage et de communication Intérêt pour ActiveXML Créer une plate-forme plus puissante, utilisant une vraie base de données Système actuel: documents en mémoire Étudier différentes architectures de couplage avec une base de données Intérêt pour Xyleme Modèle ActiveXML intéressant pour Xyleme Données dynamiques compatibles avec le stockage XML Intégration transparente de données et services web Ouverture vers de nouveaux types d'applications, architectures distribuées, services web Dan VODISLAV --- Intégration ActiveXML - Xyleme
Architecture ActiveXML Pair ActiveXML Stockage de documents ActiveXML: mémoire (DOM) + fichiers Mise-à-jour dynamique des documents: appels de services Interrogation: langage XOQL Wrapper SOAP XOQL processor AXML engine query WSDL service descriptions read update consults SOAP wrapper AXML peer service SOAP client service call service result AXML store AXML XML Moteur AXML interrogation XOQL mise-à-jour DOM Mémoire Fichiers XML Dan VODISLAV --- Intégration ActiveXML - Xyleme
Intégration de stockage Remplacer le système de fichiers par XyStore Avantage: les documents ActiveXML sont interrogeables par des applications Xyleme (exemple: Miel++) XOQL processor AXML engine query WSDL service descriptions read update consults SOAP wrapper AXML peer service SOAP client service call service result XyStore AXML XML Wrapper SOAP Moteur AXML interrogation XOQL mise-à-jour DOM Mémoire XyStore Dan VODISLAV --- Intégration ActiveXML - Xyleme
Stockage et interrogation Utilisation du moteur d'interrogation XyQL de Xyleme Avantages: Pas besoin de charger les documents en mémoire pour les interroger Utilisation de l'index et de la puissance d'interrogation Xyleme Problème: les mises-à-jour ont besoin de la mémoire cache Problèmes de synchronisation cache - XyStore Wrapper SOAP XyQL processor AXML engine query WSDL service descriptions read update consults SOAP wrapper AXML peer XyStore/XyIndex AXML cache Xyleme Moteur AXML mise-à-jour interrogation Cache DOM XyQL XyStore Dan VODISLAV --- Intégration ActiveXML - Xyleme
Stockage, interrogation et mise-à-jour Mises-à-jour directement dans Xyleme Module XyUpdate (janvier 2005) Pas besoin de maintenir un cache, de le synchroniser avec XyStore Séparation architecturale "propre" ActiveXML – base de données Difficultés pratiques: Optimisation de l'accès disque pour les mises-à-jour Modification du modèle de document XS QL processor AXML engine query WSDL service descriptions read update consults SOAP wrapper AXML peer XyStore/XyIndex XyUpdate Xyleme Wrapper SOAP Moteur AXML mise-à-jour interrogation XyUpdate XyQL XyStore Dan VODISLAV --- Intégration ActiveXML - Xyleme
Réalisation Intégration de stockage, interrogation et mise-à-jour Stage d'ingénieur CNAM d'Eric Darondeau (depuis sept. 2005) Étude approfondie du code Java ActiveXML Intégration au niveau des principales fonctionnalités ActiveXML Conception d'une solution plus générique Séparation des fonctionnalités ActiveXML "pur" de celles liées à la base de données Classes clé à spécialiser / remplacer: ActiveXMLDocument ActiveXMLServiceCall DocumentRepository Rendre possible le couplage avec d'autres bases de données Dan VODISLAV --- Intégration ActiveXML - Xyleme
Résultat Pair ActiveXML + Xyleme Fonctionnalités serveur Code utilisable pour lancer, au choix, un pair ActiveXML classique ou un pair ActiveXML+Xyleme Réalisation des fonctionnalités ActiveXML de base Fonctionnalités serveur Stockage et indexation de documents ActiveXML dans Xyleme Offre de services web réalisées par des requêtes XyQL paramétrées Fonctionnalités client Détection d'appels de service dans les documents ActiveXML du pair Planification et exécution d'appels de service avec paramètres Mise-à-jour des documents ActiveXML avec le résultat des appels Dan VODISLAV --- Intégration ActiveXML - Xyleme
Exemple: un service web Xyleme <?xml version=“1.0” encoding=“UTF-8”?> <serviceDefinition type=“XZSQuery”> <parameters> <param name=“citizenship”> </parameters> <definition> <XZSQuery> <![CDATA select element(“players” v_player/name) from ATPRace in atpStore, v_player in ATPRace//player where v_player/citizenship contains “$citizenship$”; ]]> </XZSQuery > </definition> </serviceDefinition> Dan VODISLAV --- Intégration ActiveXML - Xyleme
Difficultés rencontrées Complexité du code ActiveXML Langage XyQL Axes XPath "parent" et "frère" non supportées Découverte, enregistrement, mise-à-jour services web moins efficaces Langage XyUpdate Insertion/suppression au niveau des "frères" non supportée Opération de base à l'exécution de services web Optimisation des performances Chaque mise-à-jour se fait par une requête XyUpdate séparée Dan VODISLAV --- Intégration ActiveXML - Xyleme
Enseignements et perspectives Intégration qui profite aux deux systèmes Puissance et passage à l'échelle pour ActiveXML avec Xyleme Ouverture vers des applications distribuées pour Xyleme avec ActiveXML Améliorations suggérées pour Xyleme: langage de requêtes, fonctionnalités XyUpdate, cache DOM, etc. Perspectives Extension de l'intégration à d'autres fonctionnalités ActiveXML, amélioration de la généricité Intégration de fonctionnalités ActiveXML dans Xyleme Validation par des applications ActiveXML – Xyleme à grand volume de données, à large distribution, etc. Dan VODISLAV --- Intégration ActiveXML - Xyleme
Exemple: mise-à-jour Un appel de service insère son résultat dans le document Traitement générique de la mise-à-jour, en utilisant l'API XyUpdate static private String insertSc = "SELECT TAG2URL(parentSc) " + "FROM xyDoc IN AtpStore, parentSc IN xyDoc//NAMEPARENTSC " + "WHERE parentSc/axml:sc/id CONTAINS \"IDSC\";"; String queryInsertSc = replaceWithConcreteService(insertSc, serviceName, serviceId); UpdateIterator itGroup = queryMgr.openUpdateQuery(new QueryInfo(queryInsertSc)); while (itGroup.hasNext()) { UpdatePlan plan = new UpdatePlan(); Iterator itResult = (Iterator)itGroup.next(); while (itResult.hasNext()) { String parentSc = (String)itResult.next(); plan.add(UpdateKind.INSERTCHILD, 0, tuple, parentSc); } docMgr.updateDocument(plan, null); Dan VODISLAV --- Intégration ActiveXML - Xyleme