4 votes

Quels sont les problèmes courants liés au stockage de données XML dans des bases de données relationnelles ?

En relation avec une discussion commencée à cette question, j'ai décidé de la posera question en tant que communauté wiki.

Par conséquent, la question principale est de savoir s'il est approprié de stocker des données XML dans une base de données relationnelle? Existe-t-il généralement de meilleures façons de mettre en œuvre le même objectif? Quels moteurs de base de données offrent un bon support pour les types de données XML (comme SQL Server), et quels sont les problèmes entourant les "index XML"?

3voto

Bryan Oakley Points 63365

Les bases de données sont destinées à stocker des données. XML est une donnée. Par conséquent, dans les bonnes circonstances, il est parfaitement valide de stocker du XML dans une base de données. Que cela soit la chose la plus efficace à faire dépend de nombreux facteurs qui ne peuvent probablement pas être généralisés.

Par exemple, si vous avez un document XML structuré qui représente un objet (par exemple : un livre dans une librairie), il est probablement logique de parser les données et de les stocker dans des lignes et des colonnes appropriées dans une base de données conçue pour ces données.

En revanche, imaginez une base de données contenant des extraits de code. Vous avez des colonnes pour le langage, la description et le code. Dans le cas du XML, évidemment vous stockerez le XML dans la colonne du code.

Donc, comme tant de choses en informatique, "ça dépend".

1voto

sqlvogel Points 12567

Un problème lié au support de XML dans un SGBDR est qu'il n'existe à ma connaissance aucune règle universellement acceptée pour la comparaison de documents XML. Une base de données relationnelle peut en principe stocker toute valeur d'attribut qui peut supporter l'assignation et la comparaison - cela étant essentiel à la projection relationnelle par exemple car les valeurs de chaque attribut doivent être comparables entre elles. La comparaison n'est pas un problème pour la plupart des types : chaînes de caractères, nombres, binaires, etc. C'est potentiellement plus difficile pour un type de document XML.

Certains SGBD SQL (c'est-à-dire des SGBDR non relationnels) n'autorisent tout simplement pas la comparaison des valeurs XML du tout. Par exemple, Microsoft SQL Server autorise les colonnes de type XML mais elles ne peuvent pas être comparées et donc entre autres choses, SELECT DISTINCT n'est pas supporté.

0voto

pleasedontbelong Points 7264

En fait, cela dépend du type de données que vous stockez dans votre base de données, il est normal par exemple de stocker des informations XHTML dans la base de données.. l'un des principes d'une base de données relationnelle est que l'information est atomique, je veux dire, vous devriez stocker quelque chose comme

nom    |   professions
----------------------
Clark   |  écrivain, journaliste, superhéros

donc je suis contre le stockage de quelque chose comme

nom    |   information
----------------------
Clark   |   écrivain  journaliste  superhéros

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X