Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BDlab / 7__sedna__1_.docx
Скачиваний:
36
Добавлен:
18.03.2015
Размер:
41.5 Кб
Скачать

Лабораторная работа № 7

Изучение возможностей xml-субд Sedna

по созданию и ведению баз данных

1. Цель работы

Целью работы является изучение возможностей XML-СУБД Sedna по созданию и ведению XML-ориентированных баз данных.

2. Задачи

Задачами лабораторной работы являются овладение навыками создания и заполнения XML-документов, запуска СУБД Sedna и создания новых баз данных в ней, загрузки XML-данных в базу данных из файла, программирования запросов XQuery, программных технологий реализации XSL-таблиц стилей для трансформации XML-данных.

3. Теоретическая часть

XML – Extensible Markup Language – переводится как «расширяемый язык разметки». Здесь разметка – это задание структуры данных в текстовых документах. Расширяемость языка в данном случае означает, что в язык можно вводить собственные обозначения, с помощью которых выполняется разметка. Иными словами, в XML можно вводить свои собственные теги разметки, а не пользоваться теми, которые определены разработчиками языка.

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

Элемент XML-документа – это то, что заключено между открывающим и соответствующим закрывающим тегами. Имя элемента задается именем тега. Внутри элемента могут располагаться текстовые фрагменты и другие элементы. В документе может быть несколько элементов с одинаковыми именами. Пустой элемент ничего не содержит внутри себя: <поставка></поставка>. Его можно обозначить кратко с помощью самозакрывающегося тега: <поставка/>.

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

Важная особенность имен элементов и атрибутов – чувствительность к регистру. Например, <студент/>, <Студент/> и <СТУДЕНТ/> – это разные элементы.

XML-СУБД. СУБД, работающие с XML данными, принято подразделять на две категории: прирожденные XML-СУБД (native XML DBMS, NXD), например «Tamino» Softwahre AG, и СУБД, поддерживающие XML (XML-enabled DBMS), например, SQL Server. Разница между ними состоит, во-первых, в полноте функциональных возможностей, поддерживаемых на логическом уровне представления и манипулирования XML данными и, во-вторых, в организации физического хранения (индексация и минимизация количества операций ввода-вывода), оптимизированного именно для XML данных.

Понятие Native XML Database было введено для отличия, что данный тип баз данных основан на использовании внутреннего представления XML в отличие от XML-надстроек над существующими реляционными базами данных (XML enabled DB), такими как Oracle, PosgreSQL, MS SQL Server, в которых реализована XML-надстройка (XML-SQL) в соответствии со стандартом доступа SQL-2003.

Основным требованием к XML native DB (NXD) является использование внутреннего представления (иногда употребляют – бинарное) DOM XML в базе данных.

Некоторые из направлений возможного применения NXD:

– использование в веб-службах;

– генерация суммарных отчетов данных из XML;

– поиск релевантных документов в слабоструктурированных данных;

– публикация данных для Web непосредственно в XHTML;

– объединение нескольких XML-документов, формирование сводных документов.

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

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

Фундаментальная единица (логического) хранения в прирожденные XML-СУБД – XML-документ (в то время как в реляционной базе данных – запись)

Sedna – российская прирожденная XML-СУБД, разрабатываемая исследовательской группой Modis в Институте системного программирования РАН. Текущая реализация Sedna базируется на спецификациях языка XQuery 1.0 и его модели данных.

Модель данных XML является иерархической, поэтому иерархические данные представляют собой естественный вариант использования прирожденных XML-СУБД. XML-ориентированная СУБД Sedna призвана решать задачи хранения большого объема XML-данных (до 1Гб и более) и эффективного управления этими данными, включая задачи поиска, изменения и трансформации данных.

Разработка Sedna не основана на использовании какой-либо существующей системы управления базами данных. Вместо того, чтобы создавать некоторую надстройку над существующей СУБД, систему управления XML-данными разрабатывали с нуля. 

В общей архитектуре СУБД Sedna выделено несколько компонентов. Регулятор (governer) служит «управляющим центром» системы. Все остальные компоненты регистрируются у регулятора, который «знает», с какими базами данных работает система, и отслеживает выполнение транзакций. Слушатель (listener) создает для каждого нового авторизованного клиента экземпляр компонента подключение (connection) и устанавливает между ними прямую связь. В компоненте подключения инкапсулируется сеанс клиента. Для каждой заявки клиента «начать транзакцию» («begin transaction») его компонент подключения создает экземпляр компонента транзакция (transaction). В этом компоненте инкапсулируются компоненты выполнения запросов: парсер (parser), оптимизатор (optimizer) и исполнитель (executor).

В СУБД Sedna для общения клиентов с сервером используется протокол обмена сообщениями, базирующийся на механизме сокетов TCP/IP. Этот протокол открыт и предназначается для реализации высокоуровневых интерфейсов прикладного программирования (API) для связи с различными языками программирования. К настоящему времени разработаны драйверы, реализующие API для языков Java и Scheme.

Для работы с СУБД Sedna обычно используется инструмент командной строки (в случае реализации для операционной системы Windows). Для запуска СУБД используется команда se_gov, которая запускает одноименный exe-файл в папке BIN установочной директории Sedna. Здесь важно отметить, что установка Sedna является довольно простой – достаточно скачать дистрибутив СУБД с официального сайта (в виде архива) и развернуть его на локальной машине. По сути, вся структура СУБД представлена иерархией файлов и директорий такого архива – здесь хранятся как конфигурационные файлы СУБД (метаданные), так и информация, хранящаяся в базе данных (как правило, эти данные представлены в директории Data).

Создание новой базы данных выполняется посредством команды se_cdb (сокращение от sedna_create database), в качестве аргумента которой передается имя создаваемой базы данных.

Работа с базой данных возможна только в том случае, если она является активной (находится в состоянии running). Поэтому для выполнения дальнейших манипуляций с базой данных (независимо от того, когда она была создана), ее нужно запустить, активизировать. Для этого в Sedna используется команда se_sm, в качестве аргумента которой также передается название базы данных.

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

Sedna Admin – это инструментально-программное средство, в визуальном режиме поддерживающее работу с XML-СУБД Sedna. Для развертывания Sedna Admin достаточно загрузить дистрибутив (в виде архива, как и сама СУБД) и скопировать его на локальную машину. Для начала работы нужно выбрать активную базу данных, фактически, установить связь с ней. Изначально это средство позиционируется как инструментарий отладки и выполнения запросов XQuery (запуск запросов из командной строки или из специальных файлов довольно трудоемок и проблематичен). Sedna Admin позволяет в режиме реального времени написать программный код запроса XQuery и запустить его на выполнение. При наличии ошибок инструментальное средство дает их подробное описание и рекомендации к исправлению.

XQuery. Запросы к БД выполняются посредством формулирования запросов на специальном языке XML Query (XQuery). Этот язык стандартизирован консорциумомW3C.

Язык является функциональным, строго типизированным, модульным, весьма выразительным и изящным. В его разработке принимали участие ведущие специалисты отрасли СУБД. Язык XQuery позволяет извлекать древовидные данные, трансформировать их и генерировать в качестве результата опять же древовидные данные (XML).

Язык XQuery определяет синтаксис итераций инструкции FLWOR. Слово FLWOR — это сокращение от слов for, let, where, order by и return.

Инструкция FLWOR состоит из следующих частей.

Одно или несколько предложений FOR, которые привязывают одну или несколько переменных-итераторов к входным последовательностям.

Входные последовательности также могут быть выражениями XQuery (например, выражениями XPath). Они являются либо последовательностями узлов, либо последовательностями атомарных значений. Последовательности атомарных значений могут быть получены с помощью литералов или функций-конструкторов. В SQL Server нельзя использовать построенные XML-узлы в качестве входных последовательностей.

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

Переменная-итератор. Дополнительно для этой переменной с помощью ключевого слова as можно указать тип.

Необязательное предложение where. Это предложение применяется в качестве предиката фильтра при итерации.

Необязательное предложение order by.

Выражение return. Выражение в предложении return конструирует результат, возвращаемый инструкцией FLWOR.

XSLT – это расширяемый язык стилей для преобразований (от англ. eXtensible Stylesheet Language for Transformations), который используется для описания преобразований структуры документов. XSLT позволяет трансформировать одни документы в другие, пользуясь простыми наборами правил преобразования.

Технология XSLT – это технология, позволяющая преобразовывать (трансформировать) XML-документ в другой XML-документ; в HTML-документ для отображения Web-браузером; в документы иных форматов (WML, RTF, PDF, TEX и т.п.).

Таблица стилей – это XML-документ специального вида (обычно файл с расширением .xsl), содержащий набор правил преобразования исходного XML-документа, написанных на языке XSLT и предназначенных для XSLT-процессора. Когда XSLT-процессор подвергает преобразованию некоторый XML-документ в соответствии с некоторой таблицей стилей, говорят, что таблица стилей применяется к документу.

В первом приближении можно считать, что исходный документ, таблица стилей и конечный документ – все являются XML-документами. XSLT выполняет процесс преобразования, потому что вывод (конечный документ) и ввод (исходный документ) представляют собой объекты одного типа. Это дает прямые выгоды, например, сложное преобразование можно выполнить как ряд простых преобразований, кроме того, используя одну и ту же технологию, можно делать преобразования в любом направлении.

Таблица стилей – это корректный XML-документ. Его корневым элементом является элемент «stylesheet», естественно, принадлежащий пространству имен XSLT.

В корневом элементе объявляется пространство имен XSLT с помощью атрибута «xmlns:xsl», а также версия XSLT с помощью атрибута «version». Из так называемых элементов верхнего уровня, являющихся непосредственными потомками корневого элемента «stylesheet», обязателен хотя бы один элемент – шаблон. Роль шаблонов в преобразовании является ключевой. Таблица стилей должна содержать, по крайней мере, один шаблон; на самом деле их зачастую бывает много. В свою очередь, тело шаблона может содержать:

– поддеревья конечных литеральных элементов, которые непосредственно копируются в выходное дерево;

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

Соседние файлы в папке BDlab