Тип даних XML

Будучи вбудованим типом даних SQL Server, тип XML може використовуватися будь-яким з перерахованих нижче способів:

■ оголошуватися як локальна змінна T-SQL

■ використовуватися як параметр збереженої процедури або користувача функції

■ повертатися з користувальницької функції

■ створюватися як тип даних стовпця таблиці

дозволяє зберігати як цілий документ XML, так і його фрагмент, при максимальному обсязі в 2 Гбайт Фрагментом можуть бути рядки одного замовлення, в той час як повний документ може містити дані про всіх замовників разом з їх замовленнями і рядками замовлень

Дані XML повинні бути добре ВІДФОРМОВАНІ (тобто синтаксично коректними) і при необхідності можуть перевірятися щодо колекції схеми XML

Використання типу даних XML має ряд істотних переваг Ядро бази даних фактично розділяє окремі елементи і атрибути XML, а потім зберігає їх як звичайні двійкові дані, подібно типом VarBinary (Max) Дескриптори XML зберігаються як мітки, що вказують на фактичні дані Це істотно скорочує обсяг збережених даних, підвищує продуктивність і дозволяє ядру бази даних використовувати індекси XML і пересуватися за даними за допомогою XQuery

Розподіл і перетворення

Оскільки тип даних XML є новим, існують певні правила перетворення даних з типу XML і в нього У документ XML і його вузли можуть бути вставлені будь символьні дані

може бути перетворений в наступні повязані символьні типи і отриманий з них:

■&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Char, VarChar          ■ VarBinary (max)

■&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp NChar, NVarChar ■ SQL_Variant (за допомогою типу VarChar)

може бути отриманий з типів text і ntext, але не може бути перетворений в них

Обмеження типу XML

У звязку з тим, що тип XML зберігається не так, як звичайні реляційні дані, і має вкладений формат, при роботі з ним існує ряд додаткових обмежень

■ Його не можна трактувати як звичайні символьні типи

■ Він не може брати участь в операціях порівняння (таких як =,> або <), за винятком IS NULL і IS NOT NULL.

■ Він не може брати участь у сортуванні і угрупуванню (тобто в пропозиціях SORT BY і GROUP BY)

■ Він не може використовувати вбудовані скалярні функції, за винятком isnull О і coalesce ()

■ Він не може бути використаний як ключового стовпця або обмеження на унікальність

■ Він не може бути оголошений з зіставленням

Колекції схем XML

Ризик використання XML полягає в тому, що він настільки гнучкий і рухливий, що без наявності будь-яких обмежень його дані можуть містити все, що завгодно З тією ж проблемою зазвичай стикаються в стовпцях коментарів, які можуть містити все, що завгодно, від змін адреси до дат народження

Рішення полягає у створенні додаткового (але необовязкового) простору імен визначення схеми XML (XSD) і підключення до нього змінної чи шпальти XML Схема XML може бути визначена для застосування до документа в цілому або тільки до його деякого фрагменту

Першим кроком є ​​створення XSD як складової частини колекції схеми XML в базі даних Як тільки схема буде створена, можуть бути також створені стовпчики чи змінні, що посилаються на неї У наступному прикладі в схему навчальної бази даних XMLeam додається визначення XSD з назвою ItemSchema:

CREATE DATABASE XMLearn USE XMLearn

CREATE XML SCHEMA COLLECTION ItemSchema AS N

&ltxsd:schema xmlns:xsa=&quothttp://wwww3org/200l/XMLSchema&quot xmlns=&quotresume-schema&quot targetNamespace=&quotresume-schema&quot elementFormDefault=&quotqualified&quot&gt

&ltxsd:element name=&quotItem&quot type=&quotItemType&quot/&gt

&ltxsd:complexType name=&quotItemType&quot mixed=&quottrue&quot&gt

&ltxsd:sequence&gt

&ltxsd:element name=&quotSKU&quot type=&quotxsd:string&quot minOccurs=&quot1&quot/&gt

&ltxsd:element name=&quotSize&quot type=&quotxsd:string&quot minOccurs=&quot1&quot/&gt

&ltxsd:element name=&quotColor&quot type=&quotxsd:string&quot minOccurs=&quot1&quot/&gt

&lt/xsd:sequence&gt

&lt/xsd:complexType&gt

&lt/xsd:schema&gt’

Щоб переглянути встановлені схеми, виконайте запит до системного поданням sysxml_schema_col lections

Коли визначення схеми XSD встановлено в колекції схем XML, змінна або стовпець з типом XML при створенні можуть бути підключені до цього визначення:

CREATE TABLE XMLGeneric (

ID INT IDENTITY NOT NULL PRIMARY KEY,

Data XML (імя_схеми)

)

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

SQL Server 2005 не підтримує старі визначення типів документа (DTD), На замітку використовуючи виключно XSD

Індекси XML

Істотною перевагою використання типу XML є те, що вузли XML самі по собі можуть бути проіндексовані Індекси XML підвищують продуктивність запитів XQuery, проте не використовуються при витяганні даних XML за допомогою реляційних запитів У моїй практиці ці індекси зарекомендували себе дуже добре Створення індексів XML є багатокрокової операцією, що включає в себе створення первинного і вторинного індексів

Первинний індекс XML повинен створюватися перші Він повязує вузли XML з реляційним кластеризувати індексом і дозволяє створювати індекси, специфічні для XML

CREATE [PRIMARY] XML INDEX імя_індексу ON <об'єкт> (Імя_столбца_хт1)

[USING XML INDEX імя_індекса_хт1

[ FOR { VALUE | PATH | PROPERTY } ][ ]

Таблиця повинна мати кластерізованний індекс, який не може бути змінений, поки існують індекси XML

Як тільки первинний індекс створений, для підвищення продуктивності запитів XQuery можуть бути створені вторинні індекси

■ Value Індексування даних для пошуку за значенням

■ Path Індексування імен вузлів для пошуку за структурою XML

■ Property Оптимізація предикатів пар імя-значення.

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*