décembre
2010
Voici un extrait des recommandations de Microsoft pour s’orienter vers le modèle relationnel ou le modèle XML :
Si les données sont très structurées avec un schéma connu, le modèle relationnel est susceptible de fonctionner le mieux pour le stockage des données. Microsoft SQL Server offre la fonctionnalité et les outils nécessaires dont vous pouvez avoir besoin. En revanche, si la structure est flexible (semi-structurée ou non structurée) ou inconnue, vous devez sérieusement envisager la modélisation de ce type de données. Le langage XML est un bon choix si vous souhaitez utiliser un modèle indépendant de la plate-forme afin de vous assurer de la portabilité des données à l’aide du marquage structurel et sémantique. En outre, cette option est appropriée si certaines des propriétés suivantes sont remplies :
• Les données sont dispersées ou vous ne connaissez pas la structure des données, ou la structure des données peut varier considérablement dans le futur.
• Les données représentent une hiérarchie d’appartenance (par opposition aux références parmi les entités) et peuvent être récursives.
• L’ordre est inhérent aux données.
• Vous souhaitez exécuter une requête dans les données, ou mettre à jour des parties de ces données en fonction de leur structure.
Si aucune de ces conditions n’est remplie, vous devez utiliser un modèle de données relationnelles. Par exemple, si les données sont au format XML, mais que l’application utilise la base de données pour stocker et extraire les données, vous avez juste besoin d’une colonne [n]varchar(max). Le stockage des données dans une colonne XML offre d’autres avantages : le moteur vérifie que les données sont correctement formées ou valides, et prend en charge les requêtes à granularité fine et les met à jour dans les données XML.
Lire l’article complet « Recommandations XML pour Microsoft SQL Server 2005″
Le Book Online indique également les limites du type de données XML
• La représentation stockée d’instances de type de données xml ne peut pas dépasser 2 Go.
• Il ne peut pas être utilisé comme sous-type d’une instance sql_variant .
• Il ne prend pas en charge la conversion en text ni en ntext. Utilisez plutôt varchar(max) ou nvarchar(max).
• Il ne peut pas être comparé ni trié. Autrement dit, un type de données xml ne peut pas être utilisé dans une instruction GROUP BY.
• Il ne peut pas être utilisé en tant que paramètre d’une fonction scalaire intégrée autre que ISNULL, COALESCE et DATALENGTH.
• Il ne peut pas être utilisé en tant que colonne clé dans un index. En revanche, il peut être inclus en tant que donnée dans un index cluster ou ajouté explicitement à un index non-cluster à l’aide du mot clé INCLUDE lors de la création d’un index non-cluster.
—————————————————————————————————-
Etienne ZINZINDOHOUE
—————————————————————————————————-