![Page 1: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/1.jpg)
Diffusion dedonnées depuisune base XML -Projet OiDBRetour d’expérience
Patrick Bernaud (JMMC)
![Page 2: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/2.jpg)
Plan
eXist-db - base de données XML❧
OiDB - présentation❧
![Page 3: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/3.jpg)
eXist-db - Introduction
Base de données orientée documentdéveloppée depuis 2001 sous LGPL 2.1(http://www.exist-db.org/).
Version 2.2 sortie la semaine dernière.
amélioration performances❧
mise à jour modèle de sécurité❧
nouveau indexes❧
![Page 4: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/4.jpg)
eXist-db - Caractéristiquesgénérales
Écrit en Java.
Jeu de servlets nécessitant un conteneur(Jetty).
Stocke des documents XML ou binairesorganisés en collections dans un filesystem virtuel.
![Page 5: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/5.jpg)
eXist-db - Caractéristiquesgénérales (2)
solution NoSQL / sans schéma❧
XML❧
rapid prototyping❧
application web “embarquée” enXQuery
❧
![Page 6: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/6.jpg)
eXist-db - Interfaces
WebDAV❧
XML-RPC❧
XML:DB❧
SOAP❧
REST❧
![Page 7: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/7.jpg)
eXist-db - Index
Une recherche du genre //foo[bar="xyz"]nécessite scan complet de la collection →définition d’indexes adaptés àl’application.
Plusieurs types d’index : Range, Full Text,Spatial, xml:id, Structural...
Configuration par des documents XMLdans chaque collection.
![Page 8: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/8.jpg)
eXist-db - Index (example)<collection xmlns="http://exist-db.org/collection-config/1.0"> <index> <lucene> <text qname="SPEECH"> <ignore qname="SPEAKER"/> </text> <text qname="TITLE"/> </lucene> <range> <create qname="title" type="xs:string"/> <create qname="author" type="xs:string"/> <create qname="year" type="xs:integer"/> </range> </index></collection>
![Page 9: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/9.jpg)
eXist-db - XQuery
Langage programmation fonctionnelleorienté recherche/transformation/créationdocuments structurés ou non structurés(extensions).
Recommandation W3C depuis 2007,version 3.0 - Avril 2014.
Similaire à XSLT sur l’aspecttransformation, en moins verbeux.
Utile pour manipuler de larges collectionde documents.
![Page 10: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/10.jpg)
eXist-db - XQuery (2)
High Order Function❧
Pure function❧
XPath❧
FLWOR expression: FOR, LET, WHERE,ORDER BY, RETURN
❧
![Page 11: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/11.jpg)
eXist-db - XQuery(example)for $book in doc("catalog.xml")/books/booklet $title := $book/title/text()let $price := $book/price/text()where xs:decimal($price) gt 50.00order by $titlereturn <book> <title>{$title}</title> <price>{$price}</price> </book>
![Page 12: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/12.jpg)
eXist-db - Services
XUpdate (non standard)❧
XSLT❧
Security Manager❧
Scheduler❧
templating❧
trigger❧
RESTXQ❧
XForms❧
eXide❧
![Page 13: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/13.jpg)
eXist-db - Security Manager
File system-like, permissions sur lemodèle UNIX.
ACL (Access Control List) pour gestionplus fines des droits.
Authentification par mot de passe, LDAP,OpenID, OAuth.
![Page 14: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/14.jpg)
eXist-db - Scheduler
Permet d’éxécuter du coderégulièrement, en tâche de fond à lamanière d’un cron.
Scripts en XQuery ou en Java, avec droitsadministrateur.
![Page 15: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/15.jpg)
eXist-db - Templating
Module permettant de scripter la vue :insertion, tests simples, substitutiondepuis le modèle.
⊖ Limité, verbeux.
![Page 16: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/16.jpg)
eXist-db - Triggers
Exécution de code déclenchée sur desévenements sur les documents de labase.
Déclaration en XML, script en XQuery ouen Java.
![Page 17: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/17.jpg)
eXist-db - RESTXQ
RESTXQ 1.0: RESTful Annotations forXQuery 3.0.
Jeu d’annotations à ajouter à une fonctionXQuery (resource function).
“Routage” automatique, serializationautomatique.
![Page 18: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/18.jpg)
eXist-db - RESTXQ(example)declare %rest:GET %rest:path("/oidb/keyword") %rest:query-param("q", "{$q}") %output:media-type("application/json") %output:method("json")function kw:list($q as xs:string*) { let $all := collection($kw:keywords-uri)//keyword let $keywords := if (exists($q)) then $all[contains(upper-case(.), upper-case($q))] else $all return <keywords> { for $kw in $keywords return <json:value>{ $kw/text() }</json:value> } </keywords> };
![Page 19: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/19.jpg)
eXist-db - eXide
IDE dans le navigateur.
Fourni avec eXist-db.
Coloration syntaxique (XQuery, HTML,JavaScript), validation, exécution de code.
![Page 20: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/20.jpg)
eXist-db - eXide (2)
![Page 21: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/21.jpg)
eXist-db - Web Applications
Packaging de modules XQuery avecformat prédéfini (MVC).
Serialization en HTML5
![Page 22: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/22.jpg)
eXist-db - XForms
Solution générique d’écriture deformulaires.
Pas de support natif d’XForms dans lesnavigateurs → Betterform (server side) ouXSLForms (client side).
Échange de fragments XML avec eXist.
⊘ Intéressant mais mise en route difficile(eXist-db 2.1). À réévaluer.
![Page 23: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/23.jpg)
OiDB
Portail de diffusion de metadonnéesobservationnelles en interférométrieoptique avec interface ObservatoireVirtuel.
Projet JMMC.
Début: décembre 2013 à partir prototype.
Prochainement version 1.0 en accès libre.
![Page 24: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/24.jpg)
OiDB (2)
extraction de metadonnées /indexation
❧
interface Web de consultation❧
interface Web de soumission❧
interface Web d’administration❧
interopérabilité VO❧
![Page 25: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/25.jpg)
OiDB - Data Model
ObsCore DM: modèle de données adaptéaux observations en astronomie.
Ajout de colonnes spécifiques au domaine(extensions).
Définition d’une granule: une target, uninstrument, une nuit.
![Page 26: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/26.jpg)
OiDB - Interopérabilité
ObsCore DM❧
TAP = Table Access Protocol. StandardIVOA.
❧
Langage de requête (ADQL) proche duSQL.
❧
SAMP.❧
Registry: TODO.❧
![Page 27: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/27.jpg)
OiDB - Extraction
Formats multiples: OIFITS, observationlogs.
Sources multiples: fichiers locaux, fichiersdistants, base de données externes...
Pour les OIFITS, utilisation outils existantsJMMC : écriture module interface/wrapperJava → XQuery.
![Page 28: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/28.jpg)
OiDB - Data storage
Dual storage:
SQL pour la table dérivée ObsCore❧
XML pour les données textuelles.❧
Seules les données SQL sont requêtablesen TAP.
![Page 29: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/29.jpg)
OiDB - Authentification
En attendant LDAP, écriture moduleinterface avec la base utilisateur JMMCexistante.
Utilisation du Security Manager intégré →Persistent login pour l’interface Web,HTTP Basic Auth pour le REST headless.
![Page 30: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/30.jpg)
OiDB - Tools
RESTXQ❧
Bootstrap❧
jQuery❧
![Page 31: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/31.jpg)
OiDb - Screenshots
![Page 32: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/32.jpg)
OiDb - Screenshots (2)
![Page 33: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/33.jpg)
OiDb - Screenshots (3)
![Page 34: Diffusion de données depuis une base XML - Projet OiDB...eXist-db - Templating Module permettant de scripter la vue : insertion, tests simples, substitution depuis le modèle. ⊖](https://reader034.vdocuments.mx/reader034/viewer/2022042309/5ed5da56e5cfb841bf32322e/html5/thumbnails/34.jpg)
Questions?