eXist-db
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
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.
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.
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.
eXist n'implémente pas les fonctions 'import schema' et 'validate' de la spécification XQuery 1.0 (seule entorse à la spécification).
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.