Stocker du XML en BD

SGBDR-XML

  1. Mapping XML-Relationnel (en 1NF)

    • Chaque élément XML est extrait et stocké dans un attribut

    • Fonctionne pour les schémas simples, engendre des schémas très complexes et très fragmentés sinon, et la chute des performances

  2. En BLOB

    • Les contenus XML sont stockés en BLOB (ou CLOB)

    • Des attributs dérivés de description peuvent être automatiquement extraits

    • Les BD n'est plus en 1NF, mais des fonctions de parsing fournies par le SGBD XML peuvent redonner accès à l'intérieur du contenu XML

    • Redondance entre les attributs dérivés et le BLOB, mais les attributs peuvent être recalculés à chaque mise à jour du contenu XML (ou implémentés comme des méthodes en RO)

Bases XML natives

  • Basées sur un modèle logique de document XML et non plus un niveau logique relationnel

  • Stockage physique spécifique (fichier XML, DOM persistant, ...)

  • Gestionnaire offrant une logique transactionnelle orientée document XML

  • Langage d'interrogation propre : XPath, XSL-XSLT, XQuery

  • Plutôt pour les documents (volumineux) que les données

ExempleeXists

Base de données native XML Open Source

http://exist.sourceforge.net/

ExempleRequête XQuery

The MONDIAL Database - http://www.dbis.informatik.uni-goettingen.de/Mondial/mondial.xml
1
let $country := /mondial/country[name = 'France']
2
for $province in $country/province
3
order by $province/name
4
return $province/name
http://demo.exist-db.org/exist/sandbox/