Довелось поработать с XML в SQL Server 2005, впечатления отличные.
Во-первых, это быстро. Во-вторых, это гибко. Использовать стоит только для сильно динамичных данных, когда нужно обрабатывать, например, нестабильный набор свойств. Очень много подробной информации есть на
MSDN.
Теперь про технические подробности. Если XML-поле не будет часто использоваться, то можно просто добавить в таблицу столбец типа XML. Хотя при этом не все возможности XQuery в запросах будут применимы: часто требуется указание точного типа данных, что делается именно схемой. А если поле будет выбираться почти постоянно, надо не только его индексировать (create primary xml index on), но и создать на сервере схему, к которой привязать столбец.
Разница в скорости работы запросов получается, грубо говоря, трехкратная. Без схемы и индекса один мой тест показывал 30 мс, со схемой и индексом - 8 мс. Без схемы, но с индексом было порядка 16 мс. При значительном росте данных, в 30 раз, скорость обработки уменьшилась только в 10 раз, но я проводил тесты при порядке чисел в десятки тысяч, но не миллионов. Была возможность сравнить скорость с аналогичной логикой работы для обычных столбцов, и разница была в районе 30% - это цена динамики и возможности использовать XQuery в запросах.
Для создания схемы используется простая операция добавления схемы с глобальным именем в рамках базы (схемы попадают в Programmability \ Types \ XML Schema Collections):
create xml schema collection some_Usable_Schema as
'xml version="1.0" encoding="utf-8"?>
http://www.w3.org/2001/XMLSchema">
xs:complexType>
xs:element>
xs:sequence>
xs:complexType>
xs:element>
xs:schema>';
* This source code was highlighted with Source Code Highlighter.
Далее при создании столбца после указания типа (XML) в скобках добавляем ссылку на схему:
ColumnName xml (Content имя_схемы)
Подытоживая, могу сказать: использовать очень просто, возможности XML в БД дает огромные, но применение должно быть оправдано, т.к. усложняется разработка и возможно ухудшение производительности (а это обычно надо компенсировать).
Notas del Terrible