Я не знаю, каковы именно ваши требования, сколько документов и о каких размерах мы здесь говорим.
SQL Server 2005 действительно позволяет вам задавать схемы XML, чтобы вы могли определенно получить некоторую проверку в уравнении, что, безусловно, полезно.
Что касается индексации XML - вы можете индексировать по трем различным стратегиям после создания основного первичного индекса XML.
- первый тип индекса больше для оптимизации XPath для одного узла XML, когда вы выполняете много запросов на основе XPath для узлов (
CREATE XML INDEX ..... FOR PATH
)
- второй тип индекса больше для оптимизации доступа к значениям внутри ваших узлов XML, когда вы ищите больше на основе значений в документе XML (
CREATE XML INDEX ..... FOR VALUE
)
- третий - что-то вроде гибрида двух вышеперечисленных (честно говоря, я никогда не шутил;
CREATE XML INDEX ..... FOR PROPERTY
)
В наших примерах XML-индексы работали достаточно хорошо, но основным недостатком в нашем случае был большой размер индексов на диске. Наша база данных объемом 1,3 ГБ выросла до более чем 11 ГБ, просто добавив PRIMARY XML и индекс XML FOR PATH к примерно 45 000 записей с полем XML. Из-за ограничений диска нам пришлось убрать эти индексы: - (
Это на самом деле не так уж и удивительно, учитывая, как будет создаваться индекс XML с записями для каждого узла XML, атрибута и т. Д. - это просто много данных.
В итоге мы создали ряд хранимых функций, которые доходят до XML из нашей таблицы Entry
, и мы извлекаем те фрагменты, которые нам нужны чаще всего. Теперь они хранятся в таблице Entry
как вычисленные постоянные свойства. Это так же быстро, как «правильные» поля в таблице Entry
, оно всегда актуально и устанавливается автоматически при вставке новых данных, и нам вряд ли когда-либо понадобится действительно использовать какие-либо значимые запросы XQuery.
Что я могу сказать из личного опыта, так это то, что, на мой взгляд, поддержка XML в SQL Server 2005 действительно достаточно глубока и продумана. В общем, я бы сказал - иди попробуй! Вы действительно не сможете сказать, работает ли он и достаточно ли хорошо масштабируется в вашем конкретном случае, пока вы не попробуете.
Марк