Les sections ci-après décrivent les tâches de planification liées aux colonnes XML.
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 :
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. |
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.
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.
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.
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
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.
Par exemple, vous pouvez créer un index pour /Order/Part/ExtendedPrice et lui attribuer le type de données REAL. Dans ce cas, l'Extension XML stocke la valeur /Order/Part/ExtendedPrice dans la colonne PRICE d'une table annexe.
Si la clé primaire unique n'existe pas dans la table d'application, ou que vous ne voulez pas l'utiliser pour une raison quelconque, l'Extension XML modifie la table d'application pour ajouter la colonne DXXROOT_ID qui contient un ID unique créé lors de l'insertion. Toutes les tables annexes comportent une colonne DXXROOT_ID associée à l'ID unique. Si la clé primaire correspond à la valeur ROOT ID, toutes les tables annexes ont une colonne dont le nom et le type sont identiques à ceux de la colonne de clé primaire de la table d'application et les valeurs des clés primaires sont stockées.
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
La liste suivante décrit la syntaxe de chemin d'emplacement prise en charge par l'Extension XML :
Caractères génériques : Vous pouvez substituer un astérisque (pour une chaîne quelconque) à un élément du chemin d'emplacement.
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 |
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 |
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 :
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.