IBM Books

Extension XML Administration et programmation

Planification des colonnes XML

Les sections ci-après décrivent les tâches de planification liées aux colonnes XML.

Validation

Une fois la méthode d'accès et de stockage choisie, vous pouvez valider vos données et indiquer la DAD applicable. Vous validez les données XML à l'aide d'une DTD. Celle-ci permet de vérifier la validité d'un document XML et de lancer des recherches structurées sur les données XML. Elle est stockée dans le référentiel des DTD.

Recommandation : Validez les données XML à l'aide d'une DTD, sauf si vous stockez les documents XML à des fins d'archivage. Pour cette validation, vous avez besoin d'une DTD dans le référentiel de l'Extension XML. Pour apprendre à insérer une DTD dans le référentiel, reportez-vous à la section Insertion d'une DTD dans le référentiel des DTD.

Vous pouvez valider des documents dans une même colonne XML à l'aide de DTD différentes. En d'autres termes, des documents peuvent être dotés d'une structure, d'éléments et d'attributs similaires, mais faire appel à des DTD distinctes. Pour utiliser plusieurs DTD, procédez comme suit :

Important : Prenez votre décision en matière de validation avant d'insérer des données XML dans DB2. L'Extension XML n'accepte pas la validation de données déjà insérées dans DB2.

Remarques :

Types XML définis par l'utilisateur (UDT)

Vous stockez dans une colonne XML un document XML en lui attribuant un type UDT (défini par l'utilisateur). Pour obtenir la liste des UDT disponibles, reportez-vous au Tableau 4.

Tableau 4. Types de données UDT Extension XML
Colonne UDT Type de la source de données Description
XMLVARCHAR VARCHAR(varchar_len) Stocke un document XML entier en tant que VARCHAR dans DB2.
XMLCLOB CLOB(clob_len) Stocke un document XML entier en tant qu'objet CLOB dans DB2.
XMLFILE VARCHAR(1024) Stocke le nom de fichier d'un document XML dans DB2 et le document XML dans un fichier local pour le serveur DB2.

Tables annexes

Lors de la planification des tables annexes, vous devez déterminer leur mode d'organisation, le nombre de tables à créer et la génération ou non d'une vue par défaut pour celles-ci. Ces décisions dépendent en partie de plusieurs facteurs : la répétition ou non d'éléments ou d'attributs et les exigences relatives aux performances de recherche.

Occurrences multiples 

Lorsqu'un document comporte des chemins d'emplacement à occurrences multiples, l'Extension XML ajoute une colonne DXX_SEQNO de type INTEGER dans chaque table pour y conserver l'ordre des éléments répétés. DXX_SEQNO permet d'extraire une liste d'éléments utilisant le même ordre que le document XML d'origine, par l'insertion de la clause ORDER BY DXX_SEQNO dans une requête SQL.

Vues par défaut et performances des requêtes 

Lorsque vous activez une colonne XML, vous pouvez indiquer une vue par défaut accessible en lecture uniquement, réalisant la jointure de la table d'application et des tables annexes sous un ID unique, ROOT ID. Avec la vue par défaut, vous pouvez recherchez des documents XML par l'interrogation de tables annexes. Par exemple, soient la table d'application SALES_TAB et les tables annexes ORDER_TAB, PART_TAB et SHIP_TAB :

SELECT sales_person FROM sales_order_view
   WHERE price > 2500.00

L'instruction SQL renvoie le nom des vendeurs figurant dans SALES_TAB et comportant dans la colonne ORDER des commandes dont le prix (PRICE) est supérieur à 2500,00.

L'interrogation de la vue par défaut présente l'avantage de fournir une vue virtuelle unique de la table d'application et des tables annexes. Cependant, le coût de la requête est proportionnel au nombre de tables annexes créées. Par conséquent, la création d'une vue par défaut n'est recommandée que lorsque le nombre total de colonnes de tables annexes est peu élevé. Les applications peuvent créer leurs propres vues, par la jointure des colonnes essentielles de tables annexes.

Indexation des données de colonnes XML

L'indexation ou non du document de colonne XML est une décision importante en matière de planification. Vous devez la prendre en fonction de la fréquence d'accès aux données et de l'importance des performances de recherche structurelle.

Lorsque vous utilisez des colonnes XML contenant des documents XML entiers, vous pouvez créer des tables annexes dotées de colonnes comportant des valeurs d'éléments ou d'attributs XML, puis définir des index pour ces colonnes. Vous devez déterminer les éléments et les attributs concernés par l'index.

L'indexation de colonne XML permet d'indexer, via le support d'index DB2 natif provenant du moteur de base de données, des données de type général (INTEGER, DECIMAL ou DATE) fréquemment interrogées. L'Extension XML extrait les valeurs d'éléments ou d'attributs XML des documents XML, puis les stocke dans les tables annexes, permettant de créer des index pour ces dernières.

Vous pouvez désigner chaque colonne de table annexe par un chemin d'emplacement qui identifie un élément ou un attribut XML et un type de données SQL. La Figure 8 représente une colonne XML associée à des tables annexes.

Figure 8. Colonne XML associée à des tables annexes


Colonne XML associée à des tables annexes

L'Extension XML remplit automatiquement la table annexe lorsque vous stockez des documents XML dans la colonne XML.

Pour accélérer les recherches, créez des index pour ces colonnes avec la méthode d'indexation en arbre B de DB2. Les méthodes d'indexation utilisées varient en fonction des systèmes d'exploitation et sont supportées par l'Extension XML.

Remarques :

Chemin d'emplacement 

Un chemin d'emplacement est une séquence de balises XML identifiant un attribut ou un élément XML. L'Extension XML utilise le chemin d'emplacement dans les cas suivants :

La Figure 9 donne un exemple de chemin d'emplacement et de ses relations par rapport à la structure du document XML.

Figure 9. Stockage de documents sous forme de documents XML structurés dans une colonne de table DB2


Stockage de documents sous forme de documents XML structurés dans une colonne de table DB2

Syntaxe du chemin d'emplacement 

La liste suivante décrit la syntaxe de chemin d'emplacement prise en charge par l'Extension XML :

1. /
Représente l'élément racine XML.

2. /tag1
Représente l'élément tag1 sous la racine.

3. /tag1/tag2/..../tagn
Représente tagn comme élément enfant de la chaîne décroissante allant de la racine, tag1, tag2, jusqu'à tagn-1.

4. //tagn
Représente l'élément tagn. La double barre oblique (//) indique zéro ou d'autres balises obligatoires.

5. /tag1//tagn
Représente tagn, élément enfant de tag1 sous la racine. La double barre oblique (//) indique zéro ou d'autres balises obligatoires.

6. /tag1/tag2/@attr1
Représente l'attribut attr1 de l'élément tag2, qui est l'enfant de l'élément tag1 sous la racine.

7. /tag1/tag2[@attr1="5"]
Représente l'élément tag2 dont l'attribut attr1 a la valeur 5. tag2 est l'élément enfant de tag1 sous la racine.

8. /tag1/tag2[@attr1="5"]/.../tagn
Représente tagn, élément enfant de la chaîne décroissante allant de la racine, tag1, tag2, jusqu'à tagn-1, où l'attribut attr1 de tag2 a la valeur 5.

Caractères génériques : Vous pouvez substituer un astérisque (pour une chaîne quelconque) à un élément du chemin d'emplacement.

Chemin d'emplacement simple 

Le chemin d'emplacement simple est une séquence de noms de types d'éléments connectés par une seule barre oblique (/). Les valeurs d'attributs sont indiquées entre crochets à la suite du type d'élément correspondant. Les descriptions de syntaxe 3 et 6 du paragraphe Syntaxe du chemin d'emplacement , présentent des chemins d'emplacement simples. Le Tableau 5 décrit la syntaxe.

Tableau 5. Syntaxe de chemin d'emplacement simple
Objet Chemin d'emplacement Description
Elément XML /tag1/tag2/..../tagn-1/tagn Contenu d'élément identifié par l'élément tagn et ses parents
Attribut XML /tag_1/tag_2/..../tag_n-1/tag_n/@attr1
Attribut attr1 de l'élément identifié par tagn et ses parents

Restrictions de l'Extension XML 

L'Extension XML comporte des restrictions quant à l'utilisation de chemin d'emplacement lors de la définition de l'élément ou de l'attribut dans la DAD. L'Extension XML utilisant un mappage de type biunivoque entre un élément ou un attribut, et une colonne DB2, le chemin d'emplacement doit répondre à certaines règles. Le Tableau 6, décrit les restrictions relatives au chemin d'emplacement. Les numéros figurant dans la colonne "Chemin d'emplacement pris en charge" désignent les syntaxes indiquées à la section Syntaxe du chemin d'emplacement .

Tableau 6. Restrictions de l' Extension XML relatives au chemin d'emplacement
Utilisation du chemin d'emplacement Chemin d'emplacement pris en charge
Elément dans la DAD 3, 6 (chemin d'emplacement simple décrit au Tableau 5)
Fonctions UDF d'extraction 1-9
Fonctions UDF de recherche de l'Extension Texte 1-9

Fichier DAD

Pour les colonnes XML, le fichier DAD indique essentiellement le mode d'indexation des documents qu'elles contiennent. Le fichier DAD est un document au format XML résidant sur le client. Si vous validez des documents XML avec une DTD, vous pouvez relier le fichier DAD à celle-ci. Le fichier DAD est associé au type de données CLOB.

Le fichier DAD de colonne XML comporte un en-tête XML, indique son chemin d'accès et celui de la DTD sur le client. Il fournit également une mappe des données XML à stocker dans des tables annexes pour indexation.

Pour indiquer la méthode d'accès et de stockage de colonne XML, vous insérez la balise ci-après dans le fichier DAD :

<Xcolumn>
Indique que les données XML doivent être stockées et extraites en tant que documents XML entiers dans des colonnes DB2 activées pour XML.

Une colonne activée pour XML est de type UDT. Les applications peuvent inclure la colonne dans toute table utilisateur. Les données de la colonne XML sont accessibles par des instructions SQL et par les fonctions UDF de l'Extension XML.

Vous pouvez créer et mettre à jour le fichier DAD à l'aide de l'assistant d'administration de l'Extension XML ou d'un éditeur.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]