Le stockage de XML avec une structure standard dans SQL Server est-il une mauvaise utilisation du type de données XML?

Nous avons une table dans notre database qui stocke le XML dans l'une des colonnes. Le XML est toujours dans le même format sur un set de 3 formats XML différents qui sont reçus via des réponses de service Web. Nous avons besoin de searchr des informations dans ce tableau (et à l'intérieur du champ XML) très fréquemment. Est-ce une mauvaise utilisation du type de données XML?

Ma suggestion est de créer des tables séparées pour chaque structure XML différente car nous ne parlons que de 3 avec un taux de croissance d'une table peut-être par an.

Je suppose que c'est une question de preference, mais voici quelques raisons pour lesquelles je préfère ne pas stocker de teldatatables dans un champ XML:

  1. L'écriture de requêtes sur XML dans TSQL est lente. Peut-être pas trop mal pour une petite quantité de données, mais vous remarquerez certainement avec une quantité décente de données.

  2. Parfois, il existe une logique spéciale nécessaire pour travailler avec un blob XML. Si vous stockez le XML directement dans SQL, vous vous retrouvez à dupliquer cette logique. Je l'ai déjà vu à un travail où le gars qui a écrit le XML dans un champ était depuis longtime parti et tout le monde se demandait comment travailler avec. Parfois, des éléments étaient là, parfois non, etc.

  3. Similaire à (2), à mon avis, il brise la pureté de la database. De la même manière que beaucoup de gens déconseillent de stocker du HTML dans un domaine, je déconseille de stocker du XML brut.

Mais malgré ces trois points … cela peut fonctionner et TSQL supporte définitivement les requêtes contre cela.

Lisez-vous le champ plus que vous ne l'écrivez?

Vous voulez faire la conversion sur l'étape la less fréquente ou l'étape qui n'implique pas l'user.