XML - Microsoft

advertisement
Реализация поддержки
XML и XQuery в
Microsoft SQL Server 2005
Евгений Коган
Technical Lead
SQL Server Engine
Microsoft Corp
Содержание
XML и реляционные данные. Зачем вместе?
Краткий обзор XML в Microsoft SQL Server
2000
Серверные средства поддержки XML в
Microsoft SQL Server 2005
XML – встроенный тип
Поддержка XML Schema
Запросы к XML c XQuery и модификация XML
Индексирование XML
FOR XML – средство публикации XML
Разбор XML с помощью nodes()
XML
Самодостаточен – содержит данные и метаданные:
<Документ id="d1">
Это <пример>XML документ</пример>.
</Документ>
Может содержать данные сложной структуры
Деревья, рекурсия, графы
Структурированные данные: повторяющиеся однородные
структуры
Полуструктурированные данные: разнородные структуры,
нерегулярные и редкие данные
Данные с разметкой тэгами
Гарантирует порядок данных
Отношения между данными выражаются
Как "содержится в" / "включено в"
Атрибутами-ссылками на элементы – при наличии схемы
Реляционные данные
Табличные данные с жесткой схемой
Метаданные (схема) и данные хранятся
отдельно:
CREATE TABLE T (name nvarchar(50), age int)
INSERT INTO T(name, age) VALUES ('Zaphod', 42)
Полностью структурированы: повторяющиеся
однородные структуры
Связи между данными описываются через
Целостность ссылок - внешний ключ
Запросы и представления
Хорошо поддерживают свободное связывание
данных в зависимости от целей приложений
Сценарии использования XML
Транспорт данных/обмен данными
Business-to-business (B2B),
business-to-consumer (B2C),
application-to-application (A2A)
XML как формат обмена данными повсеместно распространен,
расширяем и платформно-независим.
Управление хранением документов
Office XML Documents, XHTML
Разделение хранения и презентации данных: XML документы и
транформации (XSLT) к ним
Обмен сообщениями - Simple Object Access Protocol (SOAP)
Обработка данных в среднем ярусе между сервером и клиентом
XML-документы для индивидуальных сценариев
часто это хранение объектов с редкими полями или со множеством
значений, которые не так хорошо моделируются в реляционных
схемах
→Транспортировка, Хранение и Выборка XML
SQL Server – интегрированная
платформа для данных
Базовые возможности БД распостраняются и
на XML и на реляционные данные:
Базовые возможности
Одновременный доступ к данным
Восстановление данных
Декларативные языки запросов и модификации
Среда выполнения БД и Оптимизатор
Триггеры, репликация, ограничение доступа, Bulk Load
Инструментальные средства управления данными
Интеграция с инструментами Business Intelligence
Выбор между XML и
реляционными данными
XML
Реляционные
Табличные и
структурированные
Иерархические и
структурированные
Полу-структурированные
Данные с тэгами



Только через PK-FK с
каскадным удалением


Нет специального типа
С фиксированным
порядком
Рекурсивные

Характер Данных

Нет специального
типа, полнотекстовый
поиск
Нет специального типа

(С рекурсивными
запросами)
XML и реляционные данные вместе!
Сценарий
Обмен данными
Управление
документами
XML
Реляционные
Транспортировка,
преобразование в
реляционные
Естественное
хранение данных с
разметкой
Хранение и выборка
по запросам
Ссылочная
целостность и
полнотекстовый
поиск
Полуструктурированные
данные
Подотчетные
сообщения/формы
Содержит полуСодержит
структурированную структурированную
часть
часть
Естественное
хранение
Запросы по
извлеченным полям
Хранение сложных
объектов
Естественное
хранение
Запросы по
извлеченным полям
Архитектура XML в
SQL Server 2005
Relational
XML
XML
XML Parser
XML Schemata
Schema
Collection
Validation
OpenXML/nodes()
modify()
XML data type
(binary XML)
query()
Node
PRIMARY
Table
XML with
XMLFOR
INDEX
TYPE directive
PATH
Rowsets Index
PROP
Index
VALUE
Index
демо
XML как новый тип данных и XML Schema
Тип Данных XML
Новый тип данных SQL
Для колонок, переменных и параметров
Может содержать:
Документы XML 1.0
Фрагменты XML 1.0 (0 - n элементов и текстовых
нодов на верхнем уровне)
Может связываться с XML Schema collection
Запросы через XQuery
Модификация через XML-DML
Возможно индексирование XML
Проверка на корректность и соотвествие XML
Schema
Тип Данных XML
Хранение
Основной формат
LOB (2 GB на копию)
Оптимизированный двоичный формат:
Цель: быстрый разбор и сериализация
В среднем 20% сжатие по сравнению с UTF-16
Строковые данные в UTF-16
Индексирование (для ускорения запросов)
Первичный и Вторичные XML индексы
Первичный: 2-4X от размера XML
Индекс для PATH : 0.5 от размера XML
Преобразование (CAST) в/из varbinary,
(n)varchar и CLR UDT
Поддержка XML Schema
XML Schema – стандарт World Wide Web
Consortium [W3C]
Богатые возможности для определения
типов и ограничений (validation constraints)
Может связываться с XML документами
Преимущества типизации XML
Гарантия корректности
Дополнительная оптимизация хранения и
запросов
XML Schema хранится как метаданные
SQL в специальном формате
Совместная обработка SQL и XQuery
SELECT x.query(‘…’), y FROM T WHERE …
Static
Phase
Metadata
SQL Parser
XQuery Parser
Static Typing
Static Typing
Algebrization
Algebrization
XML
Schema
Collection
Static Optimization of
combined Logical and
Physical Operation Tree
Dynamic
Phase
Runtime Optimization
and Execution of
physical Op Tree
XML and
rel.
Indices
демо
XQuery и модификация XML
Возможности XQuery
Статус в W3C: Candidate Recommendation,
Recommendation ожидается в 2006
FLWOR: FOR / LET / WHERE / ORDER BY/
RETURN
Включает в себя XPath 2.0
(/doc[@id = 123])
Конструкторы XML элементов (<topic>)
Операторы, сохраняющие порядок:
Порядок XQuery последовательности: FLWR
Порядок XML документа: выражения XPath
Статическая типизация, строгая типизация c
XML Schema, нестрогая – без схемы
XQuery в SQL Server 2005
Реализовано подмножество XQuery
В соответствии с предварительным проектом XQuery
от июля 2004
Добавлена модификация XML
Касается одной копии XML – переменной, параметра,
ячейки
«Вызывается» через методы типа XML:
query(), value(), exist(), modify(), nodes()
T-SQL используется для итерации по ячейкам с XML в
колонке
Может ссылаться на реляционные данные
(переменные/колонки)
Эффективно использует XML Schema collection для
типизированного XML
Использует XML индексы
sql:column()/sql:variable()
Отображаeт значение из SQL в XQuery или в XML-DML
sql:variable(): доступ к SQL переменным/параметрам
declare @value int
set @value=42
select * from T
where T.x.exist(‘/a/b[@id=sql:variable(“@value”)]’)=1
sql:column(): доступ к колонке SQL
tables: T(key int, x xml), S(key int, val int)
select * from T join S on T.key=S.key
where T.x.exist(‘/a/b[@id=sql:column(“S.val”)]’)=1
Ограничение в SQL Server 2005:
Не поддерживается XML, CLR UDT, datetime и text/ntext/image
Модификация XML
Расширения XQuery по вставке, удалению и
модификации XML
Ещё не стандартизуется. Модификация
ожидается во 2-й версии стандарта.
Модификация поддерева XML:
Вставка или удаление поддерева
Модификация значений
Реализовано «частичное замещение» только
измененных данных – и в двоичном
представлении XML и в XML-индексе
Блокируется вся копия XML – row level
параллелизм
XML-DML:
replace
delete
insert value of
Customer
notes
notes
name: xs:string
Order
notes
“Vasya”
“Petya”
id: xs:int
insert
replace<notes/>
value of
delete
into
/Customer
(/Customer/name)[1]
/Customer/Order[id
= 42]
with “Petya”
insert
<notes/>
as last
into /Customer
insert <notes/>
as first
into /Customer
insert <notes/>
before
/Customer/name
insert <notes/>
after
/Customer/name
42
Target needs to be statically one node
Индексирование XML
Создание XML-индекса на колонке типа XML
CREATE PRIMARY XML INDEX idx_1 ON docs (xDoc)
Индексируются все тэги, значения и целые XML-пути
Вторичные XML-индексы отличаются кластеризацией
FOR VALUE – ускоряет запросы типа //city[.=“Bellevue”]
FOR PATH – Эффективен для выражений, содержащих XMLпути (XPath). Пример: /person/address/zip
FOR PROPERTY – для «выборки полей» (“property
extraction”); аналогичен FOR PATH, используется
оптимизатором в сочетании с другими (не-XML) индексами.
Убыстряются XQuery запросы
Результаты могут формироваться прямо из индекса
SQL запросы со многими XML подзапросами оптимизируются
как одно целое
Используется мощь стандартного оптимизатора SQL
Вновь созданные индексы используются немедленно
Полнотекстовый индекс
XML filter
XML-разметка воспринимается как
граница слов
Тэги и атрибуты игнорируются
Синтаксис – как и для всех остальных
типов
CREATE FULLTEXT INDEX ON docs (xDoc)
Можно комбинировать с XQuery:
Сначала full-text index
Потом XML-индекс, FOR PROPERTY индекс
полезен
Полнотекстовый индекс
Примеры
SELECT R.X.query ('//sec[@num=12]')
FROM
(SELECT * FROM docs
WHERE contains (xDoc, 'Wrd1 Wrd2')) R(X)
Поддержка аттрибута xml:lang
Использует word breaker для заданного
языка
SELECT * FROM docs
WHERE contains (xDoc, 'Visionen',
LANGUAGE 'German')
Разбор и публикация XML
На сервере:
Публикация (форматирование табличных
данных как XML): FOR XML
Разбор (преобразование XML в табличные
данные): nodes() или OpenXML
На клиенте:
SQLXML 4.0 XML Bulkload
ADO.NET DataSet
SQL Server Integration Services
демо
Разбор и публикация XML – FOR XML и nodes()
FOR XML и OpenXML
Обратная совместимость с SQL Server 2000
FOR XML
*
Новая директива TYPE – результат типа XML
Добавлена поддержка новых типов
Присваивание результата FOR XML
Вложенный FOR XML (sub-query)
Новый режим – PATH
PATH + Вложенный FOR XML = замена EXPLICIT
WITH XMLNAMESPACES (и для FOR XML и для XQuery)
Требуется явное преобразование из CLR UDT в XML
Режим RAW с форматированием элементами
Вложенная XSD схема для режимов RAW и AUTO
NULL как xsi:nil или отсутсвие элемента при элементном
форматировании
OpenXML
Базируется на более новом «движке» MSXML 3.0
Поддержка новых типов: [n]varchar(max), varbinary(max), XML
XQuery: nodes()
Новая альтернатива OpenXML с
естественной для типа XML семантикой
Производит ряд на каждый узел XML
Каждый ряд содержит специальную
копию типа XML, которая:
Ссылается на отобранный узел
Сохраняет первоначальную структуру и
типизацию
Может использоваться только в методах
XQuery (кроме modify()), count(*) и IS (NOT)
NULL
Резюме
SQL Server – интегрированная платформа
для оперирования данными; предоставляет
базовые сервисы БД и для XML и для
реляционных данных
Втроенная поддержка XML включает в себя:
Встроенный тип XML
Проверку по XML Schema
Поддержку XQuery
Поддержку расширений по модификации XML
(XML-DML)
XML-индексы
Улучшенные публикация и разбор XML
Что не вошло?
Подробнее про XQuery, система типов
Демо по индексации XML
Максимизация производительности
XQuery
Доступ к XML на стороне клиента и из
серверного CLR
Читайте XML Whitepapers;
(ссылка дальше)
Ресурсы по XML в SQL Server
Русскоязычные: http://www.sql.ru/forum/actualtopics.aspx?bid=1
SQL Server webpage: http://msdn.microsoft.com/SQL/
TechNet learning resources:
http://www.microsoft.com/technet/prodtechnol/sql/2005/learning/default.mspx
Особо рекомендую XML and Databases whitepapers:
http://msdn.microsoft.com/XML/BuildingXML/XMLandDatabase/
Online WebCasts:
http://msdn.microsoft.com/sql/2005/2005webcasts/
Newsgroups & Forum:
microsoft.public.sqlserver.xml
http://www.microsoft.com/technet/community/newsgroups/dgbrowser/enus/default.mspx?dg=microsoft.public.sqlserver.xml&lang=en&cr=US
http://forums.microsoft.com/msdn/ShowForum.aspx?
ForumID=89
Мой E-mail: Eugene.Kogan@microsoft.com
Научные публикации по
реализации XML
в SQL Server 2005
Indexing XML Data Stored in a Relational Database (VLDB 2004) http://www.vldb.org/conf/2004/IND5P2.PDF
ORDPATHs: Insert-Friendly XML Node Labels (SIGMOD 2004) http://www.cs.umb.edu/~poneil/ordpath.pdf
XQuery Implementation in a Relational Database System (VLDB 2005) http://www.vldb2005.org/program/paper/thu/p1175-pal.pdf
Optimizing Runtime XML Processing in Relational Databases (XSym-2005) –
http://springerlink.metapress.com/media/hpb9jdhack6twhae2bt7/contributions/2/
y/g/n/2ygncbbv2ukfk8vb.pdf
Вопросы?
Ask the Expert
В течение часа после доклада я буду
присутствовать на стенде “Спроси
эксперта”
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Download