Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования




НазваниеПетербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования
страница1/4
Дата16.10.2012
Размер0.53 Mb.
ТипДипломная работа
  1   2   3   4
Санкт-Петербургский Государственный Университет

Математико-Механический Факультет

Кафедра Системного Программирования


Сравнение различных методов хранения XML в реляционных базах данных и в разных системах.


Дипломная работа студентки 545 группы
Нгуен Тхань Хуен.




Руководитель
доктор ф.-м. наук, профессор





Б.А. Новиков










Рецензент


















«Допустить к защите»
Заведующий кафедрой
доктор ф.-м. наук, профессор





А.Н. Терехов



Санкт – Петербург

2007.


Содержание:

1. Введение …………………………………………………………….3

2. Научная область исследования ……………………………….....4

2.1 Языки XML ……………………………………………………...……4

2.2 Основы реляционных моделей ……………………………………..6

2.3 DTD и XML schema …………………………………………………..7

2.3.1 Определение типа данных – DTD ……………………....…....7

2.3.3 Схема XML ………………………………………………….10

2.4 XMark и его запросы ……………………………………………….10

2.4.1 Описание базы данных ……………………………………...11

2.4.1.1 Иерархическая структура ……………………...….11

2.4.1.2 Эталонные запросы ………………………………...13

2.5 XQuery – язык запросов XML ……………………………….….…20

2.6 Поддержка XML в СУБД ………………………………...….…..…21

2.6.1. В SQL Server 2005 ……………………...…………………...21

2.6.1.1 XML – Тип данных……………………………….......22

2.6.1.2 XQuery в SQL Server 2005………….……………......25

2.6.2. В Oracle ...…………………………………………….…....…27

2.6.2.1 Новый тип данных – XMLType………………….….27

2.6.2.2 XQuery в Oracle ………………………………….......29

2.7 Другие методы для хранения XML в реляционных данных…..29

2.7.1 Относительный подход DTD………………………………29

2.7.1.1 Побуждение для специальных методов преобразования схемы………………………….………..….29

2.7.1.2 DTD Xmark…………………………………………...30

2.7.1.3 Часть графа DTD Xmark……………………..….…33

2.7.1.4 Отношение схемы от графа DTD…………………34

2.7.2 Поход атрибутов…………………………………………….36

2.7.2.1 Подход Edge таблицы……………………………....36

2.7.2.2 Подход атрибута……………………………..…….37

3. Эксперименты и результаты……………………………………...…37

4. Заключение……………………………………………………...............…40

5. Список литературы…………………………………………...………....42


Аннотация

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


1.Введение

Расширенный язык разметки (eXtensible Markup Language, XML) широко распространен как платформо-независимый формат представления данных. Он полезен для обмена информацией между различными слабосвязанными системами, как в приложениях business-to-business (B2B), так и в других ситуациях. Обмен данными был главным двигателем развития технологий XML.

XML все больше используется в приложениях уровня предприятия для моделирования частично структурированных и неструктурированных данных. Одно из таких приложений - это управление документами. Документы, такие, как e-mail, являются изначально частично структурированными. Если документы хранятся внутри сервера базы данных в виде XML, то достаточно мощные приложения могут быть разработаны для получения документов, основанные на содержимом документов, объединении документов, и запросах на получение части содержимого документа, как, например, поиск главы документа с заголовком, содержащим слово "background". Такие сценарии становятся все более возможными с ростом количества приложений, которые генерируют и потребляют XML. Например, система Microsoft Office 2003 позволяет пользователям создавать документы Word, Excel, Visio и Infopath в виде XML.

Почему для данных XML используются реляционные базы данных?

  • Хранение данных XML в реляционной базе данных имеет свои преимущества при управлении данными и обработке запросов. SQL Server обеспечивает большие возможности для выполнения запросов к реляционным данным и изменения этих данных, которые были расширены для выполнения запросов по данным XML и их изменения. Это позволяет увеличить отдачу от инвестиций, как, например, в областях оптимизации затрат ресурсов и хранилищ данных. Например, методы индексирования в реляционной базе данных хорошо известны, и они были расширены для индексирования данных XML так, чтобы запросы могли быть оптимизированы с учетом затрат ресурсов.

  • Данные XML могут взаимодействовать с существующими реляционными данными и приложениями SQL так, чтобы XML мог быть добавлен в систему при возникновении новых потребностей без серьезного изменения существующих приложений. Сервер базы данных также обеспечивает административную функциональность для управления данными XML (например, резервное копирование, восстановление и репликация).

2.Научная область исследования

2.1.Язык XML.

XML (eXtensible Markup Language – расширяемый язык разметки) представляет собой подмножество языки SGML (Standard Generalized Markup Language – стандартный обобщенный язык разметки)

2.1.1 Объявление XML

Документы XML начинаются с необязательного объявления XML, которое в данном примере содержит обозначение версии XML, применяемой автором документа(1.0) и системы кодировки (UTF-8 соответствует стандарту Unicode), а также содержит сведения о том, имеется ли в документе ссылка на внешние объявления разметки (standalone = ‘yes’ указывает, что в документе отсутствуют внешние объявления разметки). Пролог так:



2.1.2 Элементы XML.

Элементы XML, называемые также дескрипторами, представляются собой наиболее широко применяемую форму разметки. Первый элемент документа должен быть так называемым корневым элементом, который может содержать другие элементы (субэлементы). Каждый документ XML должен иметь один корневой элемент. Любой элемент начинается с начального дескриптора и оканчивается конечным дескриптором. Элемент XML чувствительны к регистру, поэтому элемент отличный от элемента . Элемент может быть пустым, и в этом случае его можно сокращенно представить одним дескриптором, например . Элементы должны быть правильно вложенными.

2.1.3 Атрибуты XML.

Атрибуты представляют собой пары “имя-значение”, которые содержат описательную информацию об элементе. Атрибуты помещаются внутри начального дескриптора после соответствующего имени элемента, а значение атрибута заключаются в кавычки. Каждый конкретный атрибут может присутствовать в дескрипторе только в одном экземпляре, тогда субэлемент в одном и том же дескрипторе могут повторяться. Например, объявления атрибута: <Doc id = “id111”>.

2.1.4 Ссылки на сущности.

Сущностями называются элементы документа, которые выполняют следующие основные задачи:

  • Служат в качестве сокращений для обозначения часто повторяющегося текста или позволяют включить в документ содержимое внешних файлов.

  • Используются для вставки в текст произвольных символов Unicode (например, для представления символов, которые нельзя ввести непосредственно на клавиатуре);

  • Позволяют обозначить различие между зарезервированными символами и информационным наполнением. Например, левая угловая скобка ( < ) обозначает начало начального или конечного дескриптора элемента. Чтобы можно было отличить этот символ разметки от символа, содержащегося в самом информационным наполнении, а язык XML введена сущность lt, которая служит для замены символа <.

Каждая сущность должна иметь уникальное имя, и ее применение в документе XML называется ссылкой на сущность. Любая ссылка на сущность начинается с символа амперсанда (&) и оканчивается точкой с запятой (;), например <

2.1.5 Комментарии

Комментарии заключаются в дескрипторы и могут содержать любые данные, кроме литеральной строки “--”. Комментарии могут помещаться между дескрипторами разметки в любом месте документа XML, но процессор XML не обязательно должен передавать комментарии приложению.

2.1.6 Разделы CDATA и команды обработки.

Раздел CDATA является для процессора XML указанием, что процессор должен игнорировать содержащиеся в этом разделе символы разметки и передавать заключенный в нем текст непосредственно приложению без интерпретации. Для передачи дополнительной информации приложению могут также применяться команды обработки. Команда обработки имеет форму, где служит для приложения идентификатором команды обработки. Поскольку команды зависят от приложения, любой документ XML может содержать несколько команд обработки, позволяющих передать разным приложениям команду на выполнение одинаковых действий, он, возможно, различными способами.

2.1.7 Упорядочение.

В языке XML элементе рассматриваются как упорядоченные, таким образом, в языке XML следующие два фрагмента с переставленными элементами FNAME и LNAME считаются разными:



John

White





White

John



Но атрибуты в XML не являются упорядоченными, поэтому следующие два элемента XML считаются одинаковыми:





2.2. Основы реляционных моделей.

Реляционная модель основывается на математических принципах, вытекающих непосредственно из теории множеств и логики предикатов. Эти принципы впервые были применены в области моделирования данных в конце 60-х гг. доктором Е.Ф. Коддом, в то время работавшим в IBM, а впервые опубликованы — в 1970 г. Реляционная модель определяет способ представления данных (структуру данных), методы зашиты данных (целостность данных), а также операции, выполняемые с данными (манипулирование данными).

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

  • Все данные на концептуальном уровне представляются в виде упорядоченной организации, определенной в виде строк и столбцов и называемой отношением.

  • Все значения являются скалярами. Это означает, что для любой строки и столбца любого отношения существует одно и только одно значение.

  • Все операции выполняются над целым отношением, и результатом выполнения этих операций также является целое отношение. Этот принцип называется замыканием.

Основные операции легко определить в терминах универсальной алгебры. Универсальная алгебра – множество всех возможных значений с набором операций, результат которых лежит в том же множестве. Эти операции так,

  • Селекция: Среди кортежей выбираем те, которые удовлетворяют определённому предикату (он строится из простых предикатов, которые являются логическими выражениями на значениях атрибутов).

  • Проекция: Проектором называется оператор, квадрат которого есть он сам. Проекция производится на подмножество множества атрибутов. При выполнении проекции надо устранить дубликаты, что является весьма трудоёмкой задачей.

  • Произведение: При выполнении операции произведения результирующая таблица получается, как правило, очень большой.

  • Соединение: - композиция произведения и селекции, играет важную роль в теории баз данных. Эта операция имеет два операнда, может иметь разные виды зависимости от того,что происходить потом - кроме селекции может быть проекция.

  • Естественное соединение: Эта операция важна, так как для нее существует эффективный алгоритм. Мы можем конструировать новые отношения из уже имеющихся. Другие операции тоже позволяют конструировать нетривиальные отношения, большие по размерам.

2.3. DTD и XML schema

С тех пор XML - способ описать структурные данные должно быть средство определить структуру XML документа. Определения Типа документа (DTD) и XML Схемы - различные механизмы. Они используются, чтобы определить допустимые элементы, которые могут произойти в документе. Они могут произойти и сдержать некоторые аспекты этих элементов в порядке. Ниже печатает из различных средств, сдерживания содержания XML документа.

2.3.1 Определение типа документа (Document Type Definition - DTD)

DTD состоит из объявлений разметки (markup declarations), начинающихся с пары символов ELEMENT
,ATTLIST,ENTITY,NOTATION,указывающих, что именно объявляется: элемент, список атрибутов, сущность или обозначение. Объявление разметки заканчивается символом ”>”. Структура DTD выглядит следующим образом:

DOCTYPE
root_element [

element_name (component)>

other elements’ or attributes’ declarations

]>

  • Объявление типа элемента

Каждый элемент документ XML должен быть описан в объявление типа элемента(element type declaration).Объявление типа элемента начинается с символов ELEMENT
,после которых через пробел идет имя элемента и объявляется его содержимое.

Проще всего объявляется пустой элемент – отмечается словом EMPTY.Пример: ELEMENT
doc EMPTY>.

Следующее объявление можно считать полной противоположностью объявлению пустого элемента: ELEMENT
book ANY>.Элемент с обычным текстовым содержимым и без вложенных элементов объявляется так: ELEMENT
author (#PCDATA)> . Слово #PCDATA (Parsed Character DATA) означает строку символов, просматриваемую программой-анализатором документа XML.

Если объявляемый элемент содержит вложенные элементы, то объявление должно содержать список их имен, перечисленных через запятую, в скобках. Вложенные элементы должны следовать в документе XML в том порядке, в каком они перечислены в объявление. Кроме вложенных элементов, внутри элемента может встретиться обычный текст, и вложенный элемент может встретиться больше один раз. То обстоятельство, что вложенный элемент можно записать в объявляемом элементе несколько раз, отмечается звездочкой, плюсом или вопросительным знаком. И так:

  • Оператор * означает, что компонент может повторяться произвольное количество раз или вовсе отсутствовать.

  • Оператор + означает, что компонент должен присутствовать не менее одного раза.

  • Оператор ? означает, что компонент может отсутствовать или быть использован только однократно.

  • Для моделирования списка компонентов используется оператор списка, который представлен парой круглых скобок, в которых через запятую указаны компоненты.

  • Кроме того, в определениях элементов в DTD допускается использование оператора выбора |, разделяющего компоненты и позволяющего допускать присутствие только одного компонента, участвующего в выражении с этим оператором.

  • Объявление атрибутов

Атрибуты элемента объявляются уже после объявления самого элемента. Все атрибуты одного элемента объявляются сразу, одним списком. Список начинается с символов ATTLIST
, после них через пробел следует имя элемента, к которому относятся атрибуты. Затем идут объявления атрибутов. Список, как всегда, заканчивается символом “ > ”.

Для каждого атрибута записывается его имя, тип и признак обязательности. Тип атрибута записывается приведенными далее обозначениями.

  • CDATA- строка символов.

  • ID-уникальный идентификатор, однозначно определяющий элемент, в котором встретился этот атрибут; значения такого атрибута не должны повторяться в документе.

  • IDREF- идентификатор, содержащий одно из значений атрибутов типа ID, используется в качестве ссылки не другие элементы.

  • IDREFS- идентификатор, содержащий набор значений атрибутов типа ID, перечисленных через пробелы; тоже используется в качестве ссылки сразу на несколько элементов.

  • ENTITY- имя непроверяемой анализатором сущности.

  • ENTITIES- имена непроверяемых сущностей.

  • NMTOKEN- слово, содержащее только символы, применяемые в именах.

  • NMTOKENS- слова, перечисленные через пробелы.

  • NOTATION- обозначение.

  • Список значений атрибута, перечисляемых через вертикальную черту, в скобках.

Атрибуты типа ID играют ту же роль, что и первичные ключи в таблицах баз данных. Они позволяют различать элементы и индексировать их.

Объявление атрибута заканчивается признаком обязательности присутствия атрибута в элементе или подразумеваемым значением атрибута. Признак обязательности- это одно из трех слов, показывающих, всегда ли нужно записывать атрибут и что будет, если его нет в элементе :

  1. #REQUIRED – атрибут надо обязательно записывать в элементе.

  2. #IMPLIED – атрибут необязателен, у него нет значения по умолчанию.

  3. #FIXED – у атрибута есть только одно значение, которое записывается тут же, через пробел.

  • Объявление сущности

Все сущности можно разделить на три группы:

    1. Внутренние сущности – задаются при объявлении сущности.

    2. Внешние сущности – содержатся в отдельных файлах или встроены в программу- анализатор.

    3. Параметризованные сущности – используются только внутри описания DTD.

Объявление внутренней сущности (entity declaration) начинается с символов ENTITY
, после которых идет имя сущности. Через пробел записывается сама сущность – ее значение в кавычках.

После такого объявления программа- анализатор, увидев в документе ссылку на сущность &имя-сущности, ссылку на сущность можно применять тут же, в описании DTD. Такие сущности называются внутренними (internal entities), потому что для их объявления не нужен никакой внешний объект.

Для внешних сущностей (external entities) указывается только место их расположения в виде адреса URI. Перед указанием адреса записывается одно из слов SYSTEM или PUBLIC. Разница между пометками SYSTEM и PUBLIC заключается в том, что после слова PUBLIC идет какое-то общеизвестное объявление. Обычно здесь записывается известная ссылка, введенная консорциумом W3C или другой организацией. Если программа-анализатор не найдет эту ссылку, то она воспользуется адресом URI, идущим за ссылкой.

Объявление параметризованных сущностей (parametric entities), используемых только внутри описания DTD, выполняется точно так же, как объявление внутренних и внешних сущностей, только между началом объявления ENTITY
и именем сущности вставляется знак процента, отделенный пробелами. Ссылка на параметризованную сущность начинается с амперсанда, а со знака процента.

  • Объявление обозначение

Обозначение (notation) объявляется подобно сущности. Обозначения тоже могу быть внутренними и внешними. При объявлении внутренних обозначений после символов записывается имя обозначения, затем в кавычках – его расшифровка.

При объявлении внешних обозначений используются пометки SYSTEM или PUBLIC, причем за словом не обязательно должна следовать общеизвестная ссылка, так что слова SYSTEM и PUBLIC здесь равнозначны.

2.3.2 Схема XML.

Схемы данных (Schemas) являются альтернативным способом создания правил построения XML-документов. По сравнению с DTD, схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. Безусловным достоинством схем является также то, что они позволяют описывать правила для XML- документа средствами самого же XML.

Однако это не означает, что схемы могут полностью заменить DTD- описания - этот способ определения грамматики языка используется сейчас практическими всеми верифицирующими анализаторами XML и, более того, сами схемы, как обычные XML- элементы, тоже описываются DTD. Но серьезные возможности нового языка и его относительная простота, безусловно, дают основания утверждать, что будущий стандарт найдет широкое применение в качестве удобного и эффективного средства проверки корректности составления документов.

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

2.4. XMark и его запросы

XMark Эталонная описанная Версия 1.0 берет вызов и показывает набор инструментов чтобы оценить выполнение поиска памяти XML и процессоров запроса: спецификация рабочей нагрузки, масштабируемая база данных документа и всесторонний набор запросов. Чтобы помогать пользователям, каждый из запросов предназначен, чтобы бросить вызов процессору запроса с важным примитивом языка запросов. Это полезно множеством способов: Во-первых, мудрая особенностью экспертиза процессоров запроса оказывается выгодной, поскольку процессор запроса может оперировать разнообразие архитектуры, каждая из которой имеет тенденцию быть удовлетворенной для различных прикладных рабочих нагрузок и показывает специальные характеристики.

2.4.1 Описание базы данных

Дизайн XML Эталонного теста требует, чтобы тщательно смоделированная база данных примера делала поведение запросов, предсказуемых и учла формулировку запросов, что и чувствовать себя естественной и представлять краткие вызовы. Позвольте нам сначала выделять характеристики документа и затем иметь более близкий взгляд на технические проблемы производства таких документов.

2.4.1.1 Иерархическая Структура Элемента

Вложение элементов выполняет полную древовидную структуру XML документов. В этом подразделе мы описываем структуру документа, который смоделирован, после базы данных как развернуто сайтом аукциона Internet. Основные объекты: person, open auction, closed auction, item and category. Отношения между ними выражены через ссылки за исключением annotations и descriptions, которые берут после текста естественного языка и - центральные документом структуры элемента, внедренные в поддеревья, которым они семантически принадлежат. Семантика объектов, только упомянутых следующих:

  • Items - объекты, которые идут для продажи или что уже были проданы. Каждый 'item' несет уникальный идентификатор и имеет свойства подобно оплате (credit card, money order,...), ссылка seller, description т.д., весь закодированный как элементы. Каждый item назначен мировая область, представленная родителем item'а.

  • Open auctions - аукционы в прогрессе. Их свойства - состояние секретности, хронология предложения (то есть увеличения через какое-то время) наряду со ссылками претендентам и продавцу, текущему предложению, заданному по умолчанию увеличению, тип аукциона (Dutch, Featured, Regular), интервал времени, в пределах которого предложения приняты, состояние сделки и ссылки к продаваемому item'y.

  • Closed auctions - аукционы, которые закончены. Их свойства - продавец (ссылка person), покупатель (ссылка person), ссылка к соответствующему item’у, цене, количество проданных item , дата, когда сделка была закрыта, тип сделки, и аннотаций, которые были сделаны прежде, в течение и после процесса предложения цены.

  • Person характеризованы по имени, адрес электронной почты, номер телефона, отправляют по почте адрес, домашняя страница URL, номер кредитной карточки, конфигурация их интересов, набор открытых аукционов, которые они наблюдают.

  • Categories показывают имя и описание; они используются, чтобы осуществить классификацию item. Граф category связывает категории в сеть. Эти объекты составляют относительно структурную и ориентированную на данные часть документа: схема правильна на в основание объекта и исключения, типа того не, каждый человек имеет домашнюю страницу, предсказуем. Кроме случайных списков типа предлагающих цену хронологий, порядок ввода не особенно уместен. Это находится на абсолютном контрасте потомству annotations и description элементов, которые восполняют двойной характер, центральную документом сторону, XML. Здесь длина строк и внутренней структуры подэлементов изменяется очень. Пометка теперь включает перечисленные списки, ключевые слова, и даже форматирование команд и символьных данных, подражание характеристикам текстов естественного языка. Это гарантирует, что база данных закрывает полный диапазон XML воплощений образца, от наверх отмеченных структур данных до традиционной прозы. Приложение дает впечатление от документа, показывая некоторые отрывки.

Иерархическая схема изображена в Рисунке:



2.4.1.2 Эталонные запросы

Этот раздел перечисляет запросы, из которых эталонный тест состоит. Мы хотели выражать запросы в XQuery [CFR+01], преемник Quilt [CRF00], который является о быть стандартизированным. Обратите внимание, что запрос, установленный все еще предварителен.

Q1. Возвратите имя item'а с идентификатором ‘item20748’ зарегистрированный в North America

FOR $b IN document("auction.xml")/site/regions/namerica/item[@id="item20748"]

RETURN $b/name/text()

- Упорядоченный Доступ

Эти запросы должны помочь пользователям вникать, как система управления базой данных справляется со встроенным порядком XML документов и как эффективный они могут ожидать, что система управления базой данных обработает запросы с ограничениями порядка.

Q2. Возвратите начальные увеличения всех open auctions.

FOR $b IN document("auction.xml")/site/open_auctions/open_auction

RETURN $b/bidder[1]/increase/text()

Этот запрос оценивает стоимость поисков массива. Обратите внимание, что этот запрос может фактически быть тяжелее, чтобы оценить, чем это взгляды; особенно относительные внутренности, вероятно, придется изо всех сил пытаться с довольно сложными соединениями частей, чтобы выбрать элемент претендента индексом 1.

Q3. Возвратите кулак и текущие увеличения всех open auctions, текущее увеличение которых не дважды столь же высоко как начальное увеличение.

FOR $b IN document("auction.xml")/site/open_auctions/open_auction

WHERE $b/bidder[0]/increase/text() * 2 <= $b/bidder[last()]/increase/text()

RETURN
last=$b/bidder[last()]/increase/text()>

Это - более сложное приложение индексных поисков. В случае относительной системы управления базой данных, запрос может использовать в своих интересах оцененные набором агрегаты на индексном атрибуте, чтобы ускорить выполнение. Запросы Q2 и Q3 являются родственными соединениям частей в TPCD [Gra93] эталонный тест.

Q4. Перечислите резервы тех открытых аукционов, где некоторый человек выпустил предложение перед другим человеком.

FOR $b IN document("auction.xml")/site/open_auctions/open_auction

WHERE $b/bidder/personref[id="person18829"] BEFORE

$b/bidder/personref[id="person10487"]

RETURN $b/initial/text()

- Приведение

Строки - универсальный тип данных в XML документах. Запросы, которые интерпретируют строки, будут часто должны привести строки к другому типу данных, который несет больше семантики. Этот запрос бросает вызов системе управления базой данных в терминах примитивов приведения, которые это обеспечивает. Особенно, если нет никакой дополнительной информации схемы, или только DTD под рукой, приведения, вероятно, произойдет часто.

Q5. Сколько проданных items стоит больше чем 40?

COUNT (FOR $i IN document("auction.xml")/site/closed_auctions/closed_auction

WHERE $i/price/text () >= 40

RETURN $i/price)

- Правильные Выражения Пути

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

Q6. Сколько items перечислено на всех континентах?

FOR $b IN document("auction.xml")/site/regions

RETURN COUNT ($b//item)

Q7. Сколько частей прозы находится в нашей базе данных?

FOR $p IN document("auction.xml")/site

LET $c1 := count($p//description),

$c2 := count($p//mail),

$c3 := count($p//email),

$sum := $c1 + $c2 + $c3

RETURN $sum;

- Преследование Ссылок

Ссылки - неотъемлемая часть XML, поскольку они позволяют более богатые отношения, чем только иерархические структуры элемента. Эти запросы определяют горизонтальные обходы с увеличивающейся сложностью. Хороший оптимизатор запроса должен использовать в своих интересах количества элементов наборов, которые будут присоединены.

Q8. Перечислите имена людей и номера item'а, которые они купили. (Присоединяется к человеку, закрытый аукцион)

FOR $p IN document("auction.xml")/site/people/person

LET $a := FOR $t IN document("auction.xml")/site/closed_auctions/closed_auction

WHERE $t/buyer/@person = $p/@id

RETURN $t

RETURN COUNT ($a)

Q9. Перечислите имена людей и имен item, которые они купили в Европе. (Присоединяется к person, closed auction, item)

FOR $p IN document("auction.xml")/site/people/person

LET $a := FOR $t IN document("auction.xml")/site/closed_auctions/closed_auction

LET $n := FOR $t2 IN document("auction.xml")/site/regions/europe/item

WHERE $t/itemref/@item = $t2/@id

RETURN $t2

WHERE $p/@id = $t/buyer/@person

RETURN $n/name/text()

RETURN
$a


- Конструкция Сложных Результатов

Построение новых элементов может поместить механизм памяти под напряжением особенно в контексте создания осуществленных обозрений документа. Следующий запрос полностью изменяет структуру отчетов человека, группируя их согласно конфигурации интереса человека. Большие части отчетов человека неоднократно восстанавливаются. Чтобы избегать простого копирования оригинальной базы данных, мы транслируем пометку во французский язык.

Q10. Перечислите всех людей согласно их интересу; используйте французскую пометку в результате.

FOR $i IN DISTINCT

document("auction.xml")/site/people/person/profile/interest/@category

LET $p := FOR $t IN document("auction.xml")/site/people/person

WHERE $t/profile/interest/@category = $i

RETURN




$t/gender/text() ,

$t/age/text() ,

$t/education/text(),

$t/income/text()

,



$t/name/text() ,

$t/street/text() ,

$t/city/text() ,


$t/country/text()
,



$t/email/text() ,


$t/homepage/text()


,



$t/creditcard/text()


RETURN

$i ,

$p



- Объединения на значениях

Этот запрос проверяет способность базы данных обработать большие (промежуточные) результаты. На сей раз, объединения - на основе значений. Различие между этими запросами и ссылкой, преследующей запросы Q8 и Q9 - то, что ссылки определены в DTD и могут быть оптимизированы с логическими OID например. Два запроса Q11 и Q12 располагают каскадом в размере набора результата и обеспечивают различные возможности оптимизации. Мы обращаем внимание, что альтернативные формулировки запроса с ‘-> ’ оператор могут использоваться.

Q11. Для каждого человека, перечислите номер items в настоящее время в продаже, цена которых не превышает 0.02 % дохода человека.

FOR $p IN document("auction.xml")/site/people/person

LET $l := FOR $i IN document("auction.xml")/site/open_auctions/open_auction/initial

WHERE $p/profile/@income > (5000 * $i/text())

RETURN $i

RETURN COUNT ($l)

Q12. For each richer-than-average person, list the number of items currently on sale whose price does not exceed 0.02% of the person’s income.

FOR $p IN document("auction.xml")/site/people/person

LET $l := FOR $i IN document("auction.xml")/site/open_auctions/open_auction/initial

WHERE $p/profile/@income > (5000 * $i/text())

RETURN $i

WHERE $p/profile/@income > 50000

RETURN COUNT ($l)


- Реконструкция

Ключевой дизайн для XML! Отображения системы управления базой данных должны определить критерии фрагментации. Дополнительное действие должно восстановить оригинал документа от его разбитого представления. Сделайте запрос 13 испытаний на способность базы данных восстановить части оригинала XML документ.

Q13. Перечислите имена item, зарегистрированных в Австралии наряду с их описаниями

FOR $i IN document("auction.xml")/site/regions/australia/item

RETURN $i/description

- Полный Текст

Мы продолжаем бросать вызов текстовому характеру XML документов; на сей раз, мы проводим поиск по всей Справке в форме поиска по ключевым словам. Хотя полнотекстовая загрузка сдвигового регистра могла быть изучена в изоляции, мы думаем, что взаимодействие со структурной пометкой является основным, поскольку концепции считают ортогональными; так запрос Q14 ограничен подмножеству документа, объединяя содержание и структуру.

Q14. Возвратите имена всех items, описание которых содержит слово 'золото'.

FOR $i IN document("auction.xml")/site//item

WHERE CONTAINS ($i/description,"gold")

RETURN $i/name/text()

- Обходов Пути

В отличие от Раздела правильных Выражений Пути мы теперь пробуем определить количество затрат длинных обходов пути, которые не включают подстановочные знаки. Мы сначала убываем глубоко в дерево (Сделали запрос 15) и затем возвратились снова (Сделали запрос 16). Оба запросы только проверяют существование путей вместо того, чтобы выбрать пути с предикатами.

Q15. Печатайте ключевые слова в акценте в аннотациях закрытых аукционов.

FOR $a IN document("auction.xml")/site/closed_auctions/closed_auction/annotation//description/parlist/listitem/parlist/listitem/text/emph/keyword/text()

RETURN $a

Q16. Присудите Q15. Возвратите IDs продавцов тех аукционов, которые имеют один или более keywords в акценте

FOR $a IN document("auction.xml")/site/closed_auctions/closed_auction

WHERE NOT EMPTY ($a/annotation/description/parlist/listitem/parlist/\

listitem/text/emph/keyword/text())

RETURN


- Отсутствующих Элементов

Это должно проверить, как хорошо процессоры запроса знают к dealwith слабоструктурированный аспект XML данных, особенно элементы, которые объявлены дополнительными в DTD.

Q17. Какие люди не имеют homepage?

FOR $p IN document("auction.xml")/site/people/person

WHERE EMPTY($p/homepage/text())

RETURN


Фракция людей без домашней страницы довольно высока так, чтобы этот запрос также представил стимулирующий обход пути декластеризации систем.

- Функциональных Приложений

Этот запрос помещает приложение определяемых пользователем функций (UDF) к доказательству. В XML мире, UDFs имеет специфическое значение, потому что они позволяют пользователю назначать семантику на универсальные строки, которые идут вне принуждения типа.

Q18. Конвертируйте валюту резерва всех открытых аукционов к другой валюте.

FUNCTION CONVERT ($v)

{

RETURN 2.20371 * $v -- convert Dfl to Euros

}

FOR $i IN document("auction.xml")/site/open_auctions/open_auction/

RETURN CONVERT($i/reserve/text())

- Сортировок

Благодаря недостатку схемы, предложения SORT BY часто запускают роль SQL: ORDER BY и GROUP BY. Этот запрос требует сорта на универсальных строках.

Q19. Дайте в алфавитном порядке упорядоченный список всех items наряду с их местоположением.

FOR $b IN document("auction.xml")/site/regions//item

LET $k := $b/name/text()

RETURN $b/location/text()

SORTBY (.)

- Соединений частей

Следующий запрос вычисляет простое соединение частей, назначая каждого человека к категории. Обратите внимание, что соединение частей действительно слабоструктурированно, поскольку это также включает тех людей, для которых уместные данные не доступны.

Q20. Клиенты группы их доходом и выводом количество элементов каждой группы.




COUNT (document("auction.xml")/site/people/person/profile[@income >= 100000])


,



COUNT (document("auction.xml")/site/people/person/profile[@income < 100000

and @income >= 30000])

,



COUNT (document("auction.xml")/site/people/person/profile[@income < 30000])

,



COUNT (FOR $p in document("auction.xml")/site/people/person

WHERE EMPTY($p/@income)

RETURN $p)





2.5 XQuery – XML Query Language

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

XQuery - это интересный язык с некоторыми необычными понятиями.
  1   2   3   4

Похожие:

Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Сервис для моделей оптимизации на основе рекуррентных алгоритмов
Метод подстройки пользовательских приоритетов при поиске по коллекциям изображений 28
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconНаш курс санкт-петербургский государственный университет математико механический факультет 1947-1952
Перед вами коллективный портрет одного выпуска математико-механического факультета Санкт-Петербургского (Ленинградского) государственного...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Поддержка структурных изменений в процессах загрузки данных
Исследование необходимости поддержки структурных изменений в источниках данных 35
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования «Мультиагентные платформы и их применение в сетевых задачах»
Мас концентрируют все необходимые для таких технологий свойства с наибольшей выразительностью и полнотой. Результаты внедрения агентных...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Разработка системы сравнения производительности субд
Существует большое количество разнообразных субд (Система управления базами данных), предназначенных для разных задач, однако обычно...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Генерация веб-сервисов C#. net на основе bpel
Задача кодогенерации веб-сервисов возникла в рамках проекта «К700». «К700» — это проект создания рабочих мест оператора и инженера...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Разработка jre на ecma cli
Виртуальная машина, включая сборщик мусора и jit компилятор, является наиболее крупным монолитным компонентом среды управляемого...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconМатематико-механический факультет Кафедра системного программирования Создание режима быстрого прототипирования в case-системе qreal
Использование различных видов диаграмм и сущностей позволяет пользователям наглядно и подробно описать необходимые модули и поведение...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconПетербургский Государственный Университет математико механический факультет
При факультете работают 7-ми месячные подготовительные курсы по математике, информатике и русскому языку. Занятия по математике проходят...
Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования iconУральский государственный университет им. А. М. Горького Математико-механический факультет Программа выпускного экзамена по магистерской программе
Основные средства аппаратной поддержки функций ос. Управление памятью. Ядро ос. Специфика сетевого взаимодействия
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница