> Tech > Nouveau type de colonne XML

Nouveau type de colonne XML

Tech - Par iTPro - Publié le 04 avril 2013
email

De nos jours, les développeurs doivent faire cohabiter des données relationnelles avec des données XML dans leurs applications.

Mais ces derniers choisissent le plus de souvent de stocker leurs données XML directement dans des colonnes de type VARCHAR (32 Ko) ou CLOB (2 Go) voire dans des documents sous forme de texte stockés dans l’IFS (Integrated File System) et de le traiter avec des opérations classiques comme sur n’importe quelle chaîne. Voir figure 1.

Désormais, il est possible de stocker des documents XML nativement.  Son avantage sur un champ de type « texte » est qu’il vérifie que le document soit « bien formé » c’est-à-dire n’ayant pas d’erreurs de syntaxe et respectant toutes les règles qui régissent l’aspect d’un fichier XML. Ainsi, un crochet manquant fera qu’un fichier XML n’est pas bien formé et ne pourra être inséré dans la base de données sous peine d’une erreur SQ20398.

On entend par « document bien formé »  le respect des contraintes ci-dessous :

  • Le document doit posséder une racine
  • Chaque balise ouvrante possède une balise fermante, la casse devant être respectée
  • Chaque nœud XML est correctement emboîté.
  • Chaque attribut XML est encadré de guillemets

La conversion d’une constante (considérée comme un VARCHAR) en format XML se fait automatiquement (voir figure 2) mais il aussi possible d’utiliser la fonction scalaire XMLPARSE pour réaliser ce « casting ». Cette dernière permet en option, d’ajouter le paramètre  « STRIP WHITESPACE » (valeur par défaut) ou « PRESERVE WHITESPACE » qui permet de définir le comportement à adopter vis-à-vis des espaces blancs dans une valeur de chaîne de caractères. Le flux XML sera stocké en UTF-8 (1208) valeur par défaut indiquée dans le registre SQL_XML_DATA_CCSID de QAQQINI.

Bien évidemment on peut importer du contenu dans une colonne de type XML provenant d’un fichier de l’IFS (ou d’un fichier source) grâce à la fonction scalaire GET_XML_FILE ou GET_BLOB_FROM_FILE comme montré en figure 3.

Pourquoi une BD avec du XML ?

Si vos données sont très structurées, le modèle relationnel est sans doute le mieux adapté au stockage des données. En revanche, s’il s’agit de données semi-structurées voire non structurées, ou si la structure est inconnue voire variable dans le temps, mieux vaut envisager l’utilisation de XML.

Bien évidement comme toutes les nouveautés depuis de nombreuses années, ce nouveau type de champ n’est pas supporté dans les DDS.

Limites des types de données XML :
–    les types de données XML ne peuvent pas être utilisés dans une instruction GROUP BY ou ORDER BY
–    Ils ne sont pas permis avec les prédicats BETWEEN, DISTINCT, IN, LIKE
–    ils ne peuvent faire l’objet de contraintes de clé (primaire, unique ou étrangère) ou de vérification.
–    On ne peut pas créer un index sur une colonne XML, il faudra utiliser les « Index Text » du produit Omnifind Text Search for IBM i

Téléchargez gratuitement cette ressource

Protection des Données : 10 Best Practices

Protection des Données : 10 Best Practices

Le TOP 10 des meilleures pratiques, processus et solutions de sécurité pour mettre en œuvre une protection efficace des données et limiter au maximum les répercutions d’une violation de données.

Tech - Par iTPro - Publié le 04 avril 2013