Разделы презентаций


XML в MS SQL Server 2000 и технологиях доступа к данным

Содержание

Зачем XML нужен в СУБД?Передача запросов и результатов через ИнтернетXML прозрачно проходит сквозь сетевые экраныВ отличие, скажем, от СОМ-объектовВзаимодействие в гетерогенных средахXML сейчас понимают все независимо от платформы и ОСИнтеграция не

Слайды и текст этой презентации

Слайд 1XML в MS SQL Server 2000 и технологиях доступа к

данным
Алексей Шуленин
Microsoft, Moscow
Отдел стратегических платформ .NET
системный инженер

XML в MS SQL Server 2000 и технологиях доступа к даннымАлексей ШуленинMicrosoft, MoscowОтдел стратегических платформ .NETсистемный инженер

Слайд 2Зачем XML нужен в СУБД?
Передача запросов и результатов через Интернет
XML

прозрачно проходит сквозь сетевые экраны
В отличие, скажем, от СОМ-объектов
Взаимодействие в

гетерогенных средах
XML сейчас понимают все независимо от платформы и ОС
Интеграция не только с другими СУБД, но и с серверами B2B, электронной коммерции и пр.
Не требует установки дополнительного ПО на клиента
Клиент может быть сколь угодно тонким
Опять же потому, что средства его поддержки присутствуют изначально
Зачем XML нужен в СУБД?Передача запросов и результатов через ИнтернетXML прозрачно проходит сквозь сетевые экраныВ отличие, скажем,

Слайд 3Немного истории
ADO 2.1 (1999 г.)
Сохранить рез-ты запроса (ADODB.Recordset) в XML-формате
До

этого в ADO 2.0 поддерживался только ADTG
Частный бинарный формат, использовавшийся

при передаче recordset’a в удаленном доступе с помощью RDS
На выходе – нормальный XML со своей схемой
Можно делать все, что и с обычным XML-документом
Открыть при пом. DOM, запросить при пом. XPath, преобразовать при пом. XSL и т.д.

Посмотреть код

Немного историиADO 2.1 (1999 г.)Сохранить рез-ты запроса (ADODB.Recordset) в XML-форматеДо этого в ADO 2.0 поддерживался только ADTGЧастный

Слайд 4ADO 2.5
Промежуточное сохранение в файл – лишние затраты
Появилась возможность

напрямую в программе передавать полученный поток (stream) XML любому объекту,

подд. IStream


Возм. и обр.ситуация - чтение XML из потока и его запись в recordset
За счет введения нового сервисного провайдера
Microsoft OLE DB Persistence Provider ("Provider=MSPersist")

Немного истории

Посмотреть код

ADO 2.5 Промежуточное сохранение в файл – лишние затратыПоявилась возможность напрямую в программе передавать полученный поток (stream)

Слайд 5Появление XML в SQL Server
Рассмотренные ранее подходы имеют две

особенности
Преобразование в XML происходит на клиенте
XML получается по предопределенной схеме
Требуется

дополнительное XSL-преобразование
В SQL Server 2000 появилась возможность получения XML на стороне сервера
SELECT ... FOR XML ...

Посмотреть код

Появление XML в SQL Server Рассмотренные ранее подходы имеют две особенностиПреобразование в XML происходит на клиентеXML получается

Слайд 6Клиент
Сервер


SQLOLEDB
FOR XML
sqlxmlx.dll
XML-документ
XML
Поэтому все XPath- и updategrams-преобразования вып-ся на стороне клиента
SQLOLEDB
XML-документ
XML
SQLXMLOLEDB
FOR

XML
sqlxml3.dll
Документ получается на сервере, но ввиду отс-я встроенного типа XML

он может только отдать его клиенту
Его нельзя использовать как результат подзапросов, хранимых функций и всего остального, что предполагает дальнейшую обработку на SQL Server

SELECT ... FOR XML

Посмотреть код

КлиентСерверSQLOLEDBFOR XMLsqlxmlx.dllXML-документXMLПоэтому все XPath- и updategrams-преобразования вып-ся на стороне клиентаSQLOLEDBXML-документXMLSQLXMLOLEDBFOR XMLsqlxml3.dllДокумент получается на сервере, но ввиду отс-я

Слайд 7Поддержка XML в SQL Server
Впервые появилась в составе SQL

Server 2000
Август 2000 г.
Дополняется и расширяется SQLXML веб-релизами
Выкладываются на сайт

SQL Server
Доступны для бесплатного скачивания и установки зарегистрированными пользователями
Текущий на данный момент – SQLXML 3.0
В составе Microsoft SQL Server 2000 Web Services Toolkit
http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/872/msdncompositedoc.xml&frame=true
Поддержка XML в SQL Server Впервые появилась в составе SQL Server 2000Август 2000 г.Дополняется и расширяется SQLXML

Слайд 8SQLXML Managed Classes для .NET
XmlReader
БД
SqlCommand
FOR XML
XML
Посмотреть код

SQLXML Managed Classes  для .NETXmlReaderБДSqlCommandFOR XMLXMLПосмотреть код

Слайд 9FOR XML на клиенте
Клиент
Сервер


XML
SQLXMLOLEDB
FOR XML
SQLOLEDB
Data Provider = SQLOLEDB
Команда
Rowset
Rowset
Какой-нибудь другой провайдер
Команда
Rowset
В

перспективе SQLXMLOLEDB можно использовать с любыми источниками данных
Provider= SQLXMLOLEDB;DataProvider=…
Однако в

настоящее время в качестве провайдера данных поддерживается только SQL Server

FOR XML

Rowset

Посмотреть код

FOR XML на клиентеКлиентСерверXMLSQLXMLOLEDBFOR XMLSQLOLEDBData Provider = SQLOLEDBКомандаRowsetRowsetКакой-нибудь другой провайдерКомандаRowsetВ перспективе SQLXMLOLEDB можно использовать с любыми источниками

Слайд 10Другие способы получения XML на клиенте. ADO.Net
Типовой сценарий
Получить внутри DataSet

таблицы как результаты запросов к источнику данных
Возможно, к разным
Связать

их между собой на основе объектов DataRelation
Создать XML-представление DataSet’a при помощи XmlDataDocument

Посмотреть код

Другие способы получения XML на клиенте. ADO.NetТиповой сценарийПолучить внутри DataSet таблицы как результаты запросов к источнику данных

Слайд 11Класс XmlDataDocument
Производный от DOMовского XmlDocument
Позволяет выполнять над DataSet все

стандартные XML-операции
XPath-запросы, XSL-преобразования
в част., данные источника можно модифицировать не

только напрямую через DataSet
ds.Tables[<Имя или номер таблицы в коллекции>].Rows[<Номер записи в коллекции>][<Имя или номер поля в коллекции>] = …
Но и через его XML-представление
Задавая координаты узлов в терминах XPath
Эти изменения отражаются в DataSet’е, над которым построен данный XmlDataDocument
А далее транслируются в источник
Если у DataAdapter’ов таблиц определены UpdateCommand’ы

Посмотреть код

Класс XmlDataDocument Производный от DOMовского XmlDocumentПозволяет выполнять над DataSet все стандартные XML-операцииXPath-запросы, XSL-преобразования в част., данные источника

Слайд 12Обратное тоже верно
В DataSet можно загрузить XML-документ, который затем читать

и модифицировать реляционными операциями
На основе XSD-схемы ADO.Net создает DataSet эквивалентной

реляционной структуры
Можно обращаться и модифицировать XML-документ, как если бы он был совокупностью связанных таблиц.

Посмотреть код

Обратное тоже верноВ DataSet можно загрузить XML-документ, который затем читать и модифицировать реляционными операциямиНа основе XSD-схемы ADO.Net

Слайд 13Прямые XPath-запросы к объектам SQL Server
Рассмотренные возможности ADO.Net по

своей сути результат эволюции простого сохранения ADODB.Recordset в XML
Вернемся к

серверной стороне вопроса
SQL Server понимает и отрабатывает не только SQL, но и XPath
На сервере XPath превращается в SELECT ... FOR XML
Можно посмотреть в Profiler
Ограничения
Пользуется схемой по умолчанию: строки – элементы, столбцы – атрибуты
Результат возвращается в виде строкового стрима в силу уже упоминавшегося отс-я типа XML

Посмотреть код

Прямые XPath-запросы к объектам SQL Server Рассмотренные возможности ADO.Net по своей сути результат эволюции простого сохранения ADODB.Recordset

Слайд 14Аннотированные схемы
Позволяют снять оба ограничения
Задают XSD-описание реляционной информации
С пом.

аннотированных схем XPath-запросы к SQL Server возвращают нормальный XML

Аннотации привязывают

реляционку к схеме

Сопоставляет элемент таблице БД

Указывает на поле таблицы

Задает набор полей, однозначно определяющих запись

Определяет связь «первичный/внешний ключ» между таблицами в БД
...
Определены в urn:schemas-microsoft-com:mapping-schema

XSD-схема

Аннотированная схема

Еще один пример

Аннотированные схемы Позволяют снять оба ограниченияЗадают XSD-описание реляционной информацииС пом. аннотированных схем XPath-запросы к SQL Server возвращают

Слайд 15XPath-запросы через аннотированные схемы
Таким образом, аннотированные схемы – это инструмент

для адресации XPath-запросов к SQL Server
Аннотации позволяют задать соответствия

между реляционной и XML-схемами
Через призму аннотированной схемы реляционная информация видится XPath-запросу, как обычный XML-документ

Посмотреть код

XPath-запросы через аннотированные схемыТаким образом, аннотированные схемы – это инструмент для адресации XPath-запросов к SQL Server Аннотации

Слайд 16Шаблоны
Аналог хранимых процедур SQL Server с той лишь разницей, что

в них могут сочетаться SQL- и XPath-запросы

sql:xsl='XSL FileName' >

..
.....n


sql statement(s)


XPath query


Возможность преобразования XML-результатов запроса SQL

Возможность передачи параметров SQL-запросу и установки их значений по умолчанию

SQL-запросы (включая вызовы процедур)

Наряду с SQL поддерживаются XPath-запросы

Посмотреть живой шаблон

Посмотреть пример вызова

ШаблоныАналог хранимых процедур SQL Server с той лишь разницей, что в них могут сочетаться SQL- и XPath-запросы

Слайд 17Шаблоны
Аннотированные схемы, на которые ссылается , могут находиться в

теле шаблона

Шаблоны – это не только хранимые процедуры
Шаблон можно приготовить

в ходе выполнения и подать как Stream

Частный случай – как строку

Посмотреть код

Посмотреть код

Посмотреть шаблон

ШаблоныАннотированные схемы, на которые ссылается , могут находиться в теле шаблонаШаблоны – это не только хранимые процедурыШаблон

Слайд 18Кэширование шаблонов
Шаблоны остаются в памяти после первого выполнения
Что улучшает производ-ть

при интенсивной работе с шаблонами
Емкость кэша задается здесь
HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML3\TemplateCacheSize
В штуках

шаблонов
По умолч. 31
Отмена кэширования
Virtual Directory Properties -> Advanced -> Disable Caching of template
Аналогично настраивается кэш для аннотированных схем
HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML3\SchemaCacheSize
Кэширование шаблоновШаблоны остаются в памяти после первого выполненияЧто улучшает производ-ть при интенсивной работе с шаблонамиЕмкость кэша задается

Слайд 19XML-обновление на сервере
До сих пор мы только читали данные в

виде XML
Возможность обновления косвенно затрагивалась 2 раза
Когда разбирали квантово-волновой ☺

дуализм ADO.Net (XmlDataDocument)
Это неинтересно, потому что происходит через клиента
И шаблоны, на с.д., если прописать INSERT/UPDATE/DELETE в

Это тоже неинтересно, п.ч. по сути делается ср-ми SQL, а не XML

Код

Шаблон

XML-обновление на сервереДо сих пор мы только читали данные в виде XMLВозможность обновления косвенно затрагивалась 2 разаКогда

Слайд 20XML-запросы на обновление
UpdateGrams
По своей природе – шаблон
Содержит updgr-аннотации, при помощи

которых описываются модификации в БД










Все удаления / вставки внутри одного sync происходят в одной транзакции

Аннотированная схема. Определяет связь между SQL- и XML-схемами

Посмотреть живую Updategrams

XML-запросы на обновлениеUpdateGramsПо своей природе – шаблонСодержит updgr-аннотации, при помощи которых описываются модификации в БД

Слайд 21XML BulkLoad
Не грузит весь XML целиком в память
Считывает поэлементно, определяя

область действия элемента по аннотированной схеме
Как и в случае UpdateGrams,

возможно наполнение связанных таблиц

Документ

Схема

Загрузка

XML BulkLoadНе грузит весь XML целиком в памятьСчитывает поэлементно, определяя область действия элемента по аннотированной схемеКак и

Слайд 22А как насчет доступа по HTTP?
В самом начале я называл

его одним из трех ключевых обоснований поддержки XML в СУБД
Однако

до сих пор в примерах разбирались по сути сценарии локальной сети
Настало время исправить эту несправедливость
А как насчет доступа по HTTP?В самом начале я называл его одним из трех ключевых обоснований поддержки

Слайд 23Организация взаимодействия с SQL Server по HTTP
Напрямую по HTTP

с SQL Server общаться нельзя
Во всяком случае, пока
Между клиентом и

SQL Server требуется IIS
ISAPI-фильтр sqlis3.dll (входит в SQLXML 3.0) принимает вызовы GET, HEAD, POST, вытаскивает запрос к SQL Server и передает ему
Т.о. участок IIS – SQL Server относится к локальному взаимодействию и сводится к задаче, к-ю мы умеем решать
Чтобы разобраться участком клиент – IIS, нужно понять две вещи
Как упаковать запрос в GET и POST
И как его отправить фильтру
Организация взаимодействия с SQL Server по HTTP Напрямую по HTTP с SQL Server общаться нельзяВо всяком случае,

Слайд 24То же на картинке –
схема публикации БД

То же на картинке – схема публикации БД

Слайд 25Как задействовать ISAPI-фильтр?
Не мудрствуя лукаво, создать вирт.дир. и повесить его

на нее
Все, кто к ней обращается, пропускаются через sqlis3.dll
Создается программным

путем или графически через Configure IIS Support в SQLXML 3.0
Что указывается при ее создании
Connectivity
Имя SQL Server и базы, на к-ю через нее собираемся ходить
Аутентификация
Windows Integrated, базовая на SQL Server или анонимная (Anonymous д.б. привязан к учетной записи на SQL Server)
Права
На выполнение SELECT ... FOR XML или ad hoc-templates
XPath
Templates
Как задействовать ISAPI-фильтр?Не мудрствуя лукаво, создать вирт.дир. и повесить его на нееВсе, кто к ней обращается, пропускаются

Слайд 26Как упаковать запрос
Типы подкаталогов виртуальной директории
dbobject
Позволяет адресовать запросы напрямую к

объектам БД
http://localhost/Northwind/DBObj/Employees[@EmployeeID=1]/@LastName
schema
Позволяет задавать аннотированную схему, преобразующую SQL в XML
http://localhost/Northwind/Schem/AnnotatedSchemaExample.xsd/Customer[@CustomerID=""ALFKI""]
template
Позволяет

оборачивать SQL/XPath-запросы в XML-шаблон
http://localhost/Northwind/Templ/GeneralTemplateExample.xml?Cntry=USA
soap
Превращает SQL Server в Web-сервис
Позволяет из клиентского приложения обращаться к процедурам, функциям и шаблонам как к методам Web-сервиса

GET

Или из браузера

POST

Или из формы

Как упаковать запросТипы подкаталогов виртуальной директорииdbobjectПозволяет адресовать запросы напрямую к объектам БДhttp://localhost/Northwind/DBObj/Employees[@EmployeeID=1]/@LastNameschemaПозволяет задавать аннотированную схему, преобразующую SQL

Слайд 27Что такое Web-сервис с точки зрения СОМ-разработчика?
Это DCOM, где компоненты

выходят за пределы локальной сети и могут быть распределены по

Интернету
IDL / Type Library = WSDL
HKEY_CLASSES_ROOT / IUnknown = UDDI
RPC = SOAP
Сейчас по HTTP гоняется в основном HTML
Он подходит для визуального восприятия, но малопригоден, если из URL нужно забрать информацию и передать в приложение
Что такое Web-сервис с точки зрения СОМ-разработчика?Это DCOM, где компоненты выходят за пределы локальной сети и могут

Слайд 28SQL Server как Web-сервис
Виртуальные поддиректории типа SOAP позволяют обращаться к

SQL Server как к Web-сервису
Хранимые процедуры / функции и шаблоны

видны как методы Web-сервиса
wsdl-файл генерируется автоматически
Результат возвращается как единственный DataSet, массив объектов DataSet, либо массив XmlElement

Пример

SQL Server как Web-сервисВиртуальные поддиректории типа SOAP позволяют обращаться к SQL Server как к Web-сервисуХранимые процедуры /

Слайд 29SOAP и Web Services
Генерируется WSDL-файл, описывающий «засвеченные наружу» хранимые процедуры

и шаблоны
Утилита для их выбора

SQL
Server
IIS/ISAPI
Message
SP
Template
Клиент
SOAP
Message
WSDL

SOAP и Web ServicesГенерируется WSDL-файл, описывающий «засвеченные наружу» хранимые процедуры и шаблоныУтилита для их выбораSQLServerIIS/ISAPIMessageSPTemplateКлиентSOAPMessageWSDL

Слайд 302001
1997
1998
1999
2000
Май 01 UDDI
Май 99 Internet Explorer 5.0
Окт. 97 Internet Explorer 4.0
Янв. 98 XSL Tech Preview
Июнь 00 SOAP Toolkit v1
Авг. 00 SQL Server 2000
Дек. 00 BizTalk Server
Окт. 00 MSXML 3.0
Апр.

01 SOAP Toolkit v2
XML в продуктах и технологиях Microsoft
Окт 01 MSXML 4.0
SQLXML 2.0
Авг.

01 Windows XP

Дек. 01 VS .Net

Фев. 01 SQLXML
1.0

SQLXML 1 – XML Updategrams, XML Bulkload, улучшения в производительности
SQLXML 2 – поддержка аннотированных XSD, FOR XML на стороне клиента (поддержка в SQL 7.0), SQLXMLOLEDB-провайдер, интеграция с ADO.Net (SQLXML Managed Classes)
SQLXML 3 – SOAP для SQL Server
SQLXML 4 – XQuery, гетерогенные запросы

20011997199819992000Май 01 UDDIМай 99 Internet Explorer 5.0Окт. 97 Internet Explorer 4.0Янв. 98 XSL Tech PreviewИюнь 00 SOAP

Слайд 31XQuery
Язык запросов XML, приходит на смену XPath
Отличительные черты – явное

конструирование элементов, возможность декомпозиции, более пригоден для работы оптимизатора
Планируется ввести

в SQL Server 2000 в SQLXML 4.0
Полная поддержка – в MS SQL Server «Yukon»

FOR $b IN //book WHERE
$b/publisher = “Morgan Kaufmann” AND $b/year = “1998”
RETURN $b/title

FOR $p IN //procedure[1], $e IN //* AFTER ($p//incision)[1] BEFORE ($p//incision)[2] RETURN $e

FOR $d IN /dept WHERE EVERY $e IN $d/emp SATISFIES count($e/skill) >= 2 UPDATE $d/skill_audit WITH "OK"

XQueryЯзык запросов XML, приходит на смену XPathОтличительные черты – явное конструирование элементов, возможность декомпозиции, более пригоден для

Слайд 32Выводы: XML в SQL Server 2000

Выводы:  XML в SQL Server 2000

Слайд 33Вопросы?

Вопросы?

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика