- •Iis и xml функции sql Server
- •Поддержка xml в Microsoft sql Server 2000
- •Примеры
- •Iis и xml функции sql Server
- •Шаблоны
- •Запросы xPath
- •Замечания по разделу
- •Возможности ado 2.5 Сохранение и загрузка из файла в формате xml
- •Выдача Recordset’а в формате xml непосредственно в поток Response
- •Трансформация с помощью domDocument
- •Возможности ado 2.6
- •Использование Command для формирования xml-документа на сервере
- •Выполнение шаблона
- •Выполнение запроса xPath
- •Шаблон с агрегатными функциями
- •Формирование xml-документа на клиенте с помощью ado
- •Апдейтаграммы и xml Bulk Load
- •Апдейтаграммы
- •Добавление данных
- •Обновление данных
- •Удаление
- •Создание новой таблицы и загрузка данных
- •Загрузка иерархических документов
- •Заключение
- •Литература
- •Предисловие
- •Настройка iis
- •Содержание wsdl-файла
- •Секция types
- •Секция message
- •Секция portType
- •Формы сообщений
- •Секция binding
- •Секция service
- •Создание Web-методов
- •Тестируем Web-сервис
- •Поддержка sqlxml в .Net Framework
- •Тестовый проект
- •Цели и ограничения
- •Реализация
- •Заключение
- •Литература
- •Тип данных xml Основы
- •Метод query
- •Метод value
- •Метод exist
- •Метод modify
- •Использование xml-типа
- •Хранение xml-типа
- •Поддержка xml Schema
- •Создание схемы
- •Удаление схемы
- •Ограничения текущей реализации
- •Безопасность
- •Вложенные запросы for xml
- •Генерация xsd на лету
- •Поддержка xQuery
- •Тело запроса
- •Конструкторы узлов
- •Операторы сравнения
- •Операторы сравнения атомарных значений
- •Общие операторы сравнения
- •Операторы сравнения узлов
- •Логические операторы
- •Условные выражения
- •Flwor-выражения
- •Кванторные выражения
- •Сортировка
- •Заключение
- •Литература
Заключение
Поддержка XML и сопутствующих технологий в SQL Server 2005 значительно расширена, но все еще не достаточно соответствует стандартам. Какие выгоды получает разработчик от такого расширения поддержки XML? Можно ли полностью полагаться на SQL Server как на высокопроизводительный и надежный XML Server? Это сложные вопросы и в данный момент на них нет однозначного ответа.
SQL Server хранит XML-документ в бинарном, но последовательном (линейном) виде. XML-документ не представлен в виде дерева – в нем открывающие и закрывающие теги просто заменены определенными кодами. Возможно, для запросов такой формат удобен, но мы же знаем, что перед исполнением любого запроса XQuery, SQL Server сначала строит реляционную модель XML-документа и транслирует запрос XQuery в запрос SQL. Данная модель хранения абсолютно не оптимизирована для изменения документа, так как при вставках данных приходится передвигать все дочерние и последующие узлы. Можно возразить, что хранить XML-документ как дерево очень не эффективно, так как дерево занимает в несколько раз больший объем. Совершенно верно, но есть модели, где не нужно хранить указатели на все дочерние узлы элемента.
ПРИМЕЧАНИЕ XML-индекс занимает больший размер по сравнению с деревом в памяти (кроме того, что он еще и полностью дублирует информацию исходного документа). |
Например, достаточно присвоить каждому узлу пару чисел (назовем их N и R) такую, что для всех прямых и косвенных дочерних узлов параметр N будет удовлетворять условию: Nparent > Ndescendant > R; а для всех последующих узлов параметр R будет удовлетворять условию: R > Nfollowing. В этом случае, узлы можно хранить обычным способом, как хранятся строки в РСУБД. Существуют и другие, более хитрые схемы [16, 17], но та, которая используется в SQL Server наиболее проста в реализации [12] и не оптимальна.
Скорость выполнения запросов XQuery пока также невелика по сравнению, например, с парсером XQuery из .NET Framework 2.0. Кроме того, что SQL Server-у необходимо преобразовать XML-данные в реляционную структуру, ему необходимо выбрать правильный план запроса. А как это возможно без статистики, я не представляю. Возможно, после построения индекса SQL Server начинает собирать определенную статистическую информацию, но это только догадки (вернее, пожелания). Почему разработчики не использовали тот же подход (или даже код), который используется в .NET Framework 2.0, где все запросы компилируются в MSIL, для меня также большая загадка.
Является ли SQL Server действительно подлинным XML database server? В [13] выдвигаются определенные требования к подобным серверам, среди которых:
возможность работать с коллекциями документов (отсутствует в SQL Server)
поддержка XML schema (присутствует в SQL Server)
поддержка версионности (отсутствует)
поддержка пространств имен (присутствует)
индексирование (присутствует)
авторизация доступа (отсутствует)
поддержка изменений XML-документа (присутствует)
представления XML-документа (xml views) (присутствует)
Часть из них SQL Server поддерживает, часть нет. Лично мое мнение такое: если к официальной версии разработчики исправят очевидные ляпы, повысят уровень соответствия последним стандартам и оптимизируют хранение XML-фрагментов и исполнение запросов – можно смело переносить все свои XML-приложения на SQL Server. В противном случае, SQL Server в качестве XML database server можно использовать только в очень узком диапазоне задач.
