eXist-db

Fiche logiciel validé
  • Création ou MAJ importante : 09/10/12
  • Correction mineure : 09/10/12
  • Rédacteur de la fiche : Clément Plancq - Laboratoire de Linguistique Formelle (CNRS)
  • Relecteur(s) : Maud Ingarao (Institut d'Histoire de la Pensée Classique - ENS Lyon)
    Pascal Dayre (IRIT)
  • Responsable thématique : Raphaël Tournoy (Centre pour la Communication Scientifique Directe)
Mots-clés

eXist-db : gestionnaire de base de données XML native

Description
Fonctionnalités générales

eXist-db est un système de gestion de base de données XML.
Il offre un stockage indexé de données XML et permet leur interrogation avec XQuery.
eXist-db est un logiciel libre écrit en Java, il a été fondé par Wolfgang Meier en 2000.

eXist-db est principalement utilisé dans le cadre d'applications web. Il peut être utilisé comme un serveur de base de données indépendant, déployé dans une application web ou intégré dans une application Java.

eXist-db supporte de nombreux standards :

  • Standards XML
    • XQuery 1.0
    • XPath 2.0
    • XSLT 1.0 ou XSLT 2.0
    • XUpdate
    • XForms
  • APIs
    • XML:DB
    • XML-RPC
    • REST
    • SOAP

La version stable actuelle est la 1.4.2
La version 2.0 est sur les rails pour devenir la prochaine version stable

Autres fonctionnalités

Un des intérêts d'eXist-db réside dans ses index dont l'implémentation repose sur une architecture modulaire. Cela rend possible l'utilisation d'index existants comme greffons (index n-gram, index d'informations spatiales de type GML) ou le développement de nouveaux types d'index.
Un fichier de configuration permet aussi de créer des index personnalisés pour chacune des collections de documents de la base. Ainsi, en plus des index par défaut, l'utilisateur pourra ajouter un index pour un élément ou un attribut XML fréquemment utilisé dans les interrogations opérées sur la base. Ce type d'index permet des gains de temps d'exécution notables.

eXist offre une bibliothèque de fonctions fournie (voir la page XQuery Function Documentation). Il est assez facile pour l'utilisateur d'y ajouter ses propres fonctions sous la forme de modules écrits soit directement en XQuery soit en Java.

eXist-db offre aussi des mécanismes de sauvegarde/restauration et de vérification de l'intégrité de la base.

Interopérabilité

eXist-db repose sur le format XML, même si des données binaires peuvent être stockées dans une base eXist seules les données au format XML seront indexées et interrogeables.
En sortie, les données XML peuvent être transformées avec XQuery ou XSLT en XML, HTML, JSON, LaTeX, ...

L'implémentation des interfaces REST, SOAP, WebDAV, XMLRPC rend eXist-db interopérable avec un grand nombre de logiciels.

Contexte d'utilisation dans mon laboratoire/service

eXist-db est utilisé dans le cadre d'applications web de publication et d'interrogation de données linguistiques.
Nous utilisons eXist-db en test depuis la version 1.0 et en production depuis la version 1.2.
eXist-db est un logiciel très facile à mettre en œuvre et à utiliser. A ce titre il est souvent utilisé dans un contexte d'enseignement d'XQuery, XPath, ...

Cette facilité fait parfois oublier que son utilisation en production demande des efforts de configuration et d'optimisation. Le choix du mode de déploiement et la configuration des index notamment sont des facteurs importants d'optimisation.
Les changements apportés avec la version 1.4 ont rendu le logiciel beaucoup plus performant, l'intégration de Lucene (cf fiche PLUME) rend la recherche plein texte beaucoup plus efficace.

Limitations, difficultés, fonctionnalités importantes non couvertes

eXist n'implémente pas les fonctions 'import schema' et 'validate' de la spécification XQuery 1.0 (seule entorse à la spécification).

Environnement du logiciel
Plates-formes

eXist-db 1.4 nécessite J2SE 5 pour fonctionner.

Logiciels connexes

oXygen. eXist-db est une des bases de données qui peut être utilisée avec l'éditeur XML oXygen voir http://www.oxygenxml.com/eXist_support.html
Lucene

Autres logiciels aux fonctionnalités équivalentes

BaseX (open source)
Oracle Berkeley DB XML (open source)
MarkLogic Server (propriétaire)

Environnement de développement
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

http://sourceforge.net/mail/?group_id=17691 (anglais) : Liste de diffusion très active

Documentation utilisateur

Commentaires

Liste TEI-eXist

Une liste de diffusion dédiée à l'utilisation de eXist-DB avec des ressources TEI a été créée en août 2011 : https://lists.sourceforge.net/lists/listinfo/exist...

Optimisation et type de BD

Merci pour cette fiche!

Les bases de données XML permettent de gérer des bases de données dites semi-structurées
offrant une plus grande souplesse que les bases de données relationnelles traditionnelles qui ont leur schéma figé.

En ce qui concerne l'optimisation de la base de données, le choix des index est une chose (sur quelles balises XML sera construit l'index) mais la fonction de haschage associée à chaque élément constitutif de l'index l'est aussi. Est-il possible de la choisir? Est-il possible de choisir le nombre de niveau de hashage également? A priori, Lucene doit permettre de le faire. Est-ce le cas?
Sinon, est-il possible d'avoir des informations sur les temps de réponses de la bases pour pouvoir juger de la performance qui peut être une interrogation pour ce type de base de données?

A ma connaissance non, il

A ma connaissance non, il n'est pas possible de choisir la fonction de hashage par index.
Quant à la question sur les performances, parmi les benchmarks sur les moteurs XQuery que je connais (XMark, X007, MemBeR) je n'ai pas trouvé de résultats sur la version 1.4 d'eXist décrite dans cette fiche.