|
Общая информация
Поступающим
Концепция специальности
Программа обучения
Правила приема
Учебные материалы
Форма и место проведения занятий
Документы об образовании
Стоимость обучения
Дни открытых дверей
Работы слушателей
Обучающимся
|
Разработка методики XML представлений реляционных данныхАннотацияНастоящий обзор выполнен на основе магистерской диссертации “Разработка методики XML представлений реляционных данных”. Магистерская программа№ 552808 "Информационное и программное обеспечение автоматизированных систем". Направление№ 552800 “Информатика и вычислительная техника” В работе рассмотрена методика построения XML представлений реляционных данных на основе реляционной схемы данных по умолчанию. Предложен XPath-подобный язык запросов поверх указанной схемы данных, сочетающий элементы XPath и SQL. Показана возможность его практического применения для автоматического генерирования простых ХML документов на основе анализа путей в графе ссылочной целостности БД. Для более сложных сценариев, имеется возможность ручной настройки запроса на основе CROSS JOIN соединений и использования связанных шаблонов. Исследованы границы применимости методики и представлены возможные варианты ее развития. Создана библиотека классов, реализующая рассмотренную методику, и тестовая программа, демонстрирующая ее возможности. Программа реализована на языке программирования С# в среде Microsoft Visual Studio 2003 и тестировалась на СУБД Microsoft SQL Server 2000. Проблема XML представления данныхБыстрый рост рынка Интернет-технологий, и в особенности систем B2B (Business-to-Business) и B2C (Business-to-Consumer), стимулировал интерес к проблеме представления данных и обмена данными между приложениями. Язык XML (Extensible Markup Language) с конца 1990-х годов стал де-факто стандартом представления и обмена данными, как на внутрисистемном уровне, так и на уровне презентации. На основе XML разработан ряд специализированных форматов данных (SOAP, WSDL и др.) и языков обработки (XSLT, XQuery, XPath и др.) При этом значительная часть существующих источников корпоративных данных находятся под управлением реляционных СУБД. Возникает естественная задача интеграции XML с существующими СУБД. В настоящее время предложен ряд подходов, которые различаются механизмами интеграции XML и СУБД, архитектурой системы и поддерживаемыми сценариями взаимодействия. Предлагаемый подход предполагает следующие особенности:
Обоснование предлагаемой методикиВ .NET Framework имеется механизм XML представления реляционных данных на основе ADO.NET классов DataSet и XmlDataDocument. Схема взаимодействия между указанными классами показана на следующем рисунке: Рис.1. Схема интеграции XML и реляционных данных в ADO.NET Как известно, архитектура ADO.NET предполагает работу с данными БД в отсоединенном режиме, т.е. объекты классов DataSet и XmlDataDocument размещаются в оперативной памяти. Этот механизм эффективен при работе с небольшими объемами данных, но если объем данных в выборке становится сравнимым с размером оперативной памяти, быстродействие системы резко снижается. Еще серьезнее при этом влияние сетевого трафика: чем больше объем данных, перекачиваемых между клиентским приложением и сервером БД, тем ниже быстродействие системы. Отсюда вытекает интерес к системам, обеспечивающим виртуальное представление XML над РСУБД, в которых результирующие XML документы генерируются “на лету” на основе компактного выражения некоторого языка запросов XML непосредственно из реляционных данных, минуя объемные промежуточные XML представления. В этом случае все тяжеловесные операции с данными переносятся в ядро СУБД, использующее эффективные механизмы оптимизации выполнения запроса. Модель типичной middleware-системы XML Publishing
Рис.2. Модель типичной middleware-системы XML Publishing Описание методикиМетодика реализована на платформе .NET Framework и предоставляет пользователю возможность получать выборку иерархически структурированных данных из реляционной СУБД, как если бы они были представлены в виде XML документа. Возможности методики
Язык запросовРазработан специальный XPath-подобный язык запросов, допускающий наличие предикатов и шаблонов связи. В силу специфики настоящей работы реализовано ограниченное подмножество языка XPath, семантика которого существенно изменена в соответствии с целями настоящей работы. Общий вид выражения – последовательность шагов пути: /nodetest[predicate] , где / – определяет дочернюю ось (в терминологии XPath) – единственный допустимый тип оси в нашем языке; nodetest – имя узлов, выбираемых относительно контекстного узла, т.е. ближайшего слева; соответствует названию таблицы; predicate – необязательное логическое условие отбора элементов на данном шаге. Ниже приведен список отличий нашего языка запросов от стандартного XPath:
Приведем несколько запросов на примере тестовой БД Northwind, поставляемой вместе с Microsoft SQL Server:
Табл.1. Примеры запросов Последние два примера демонстрируют возможность иерархических запросов. Глубина иерархии определяется числом таблиц, участвующих в соединении, и для каждого шага в выражении пути условие соединения можно либо явно задавать с помощью шаблона, либо опускать (в случае наличия соответствующего ограничения целоостности в схеме БД). Определение базового представленияБазовое представление низлежащей БД формируется посредством доступа к ее INFORMATION SCHEMA. Формируется граф ссылочной целостности, узлы которого соответствуют таблицам, а ребра – ограничениям целостности FOREIGN KEY/PRIMARY KEY. При трансляции XPath запроса выполняется обход соответствующего подграфа и в зависимости от его связности и направления связей принимается решение о способе реляционного соединения. В случае отсутствия связи между парой таблиц генерируется декартово произведение (CROSS JOIN), что позволяет задавать условие соединения вручную, с помощью предикатного выражения. Это существенно расширяет круг возможных запросов, практически приближая к возможностям низлежащей СУБД. Трансляция запросаВ текущей версии нашего языка запросов, результирующий SQL запрос состоит из единственной инструкции SELECT. Она может включать потенциально неограниченное число соединений таблиц, но в реальности очень быстро достигается предел такого роста, поскольку время исполнения запроса, грубо говоря, экспоненциально зависит от количества таблиц. Процедура трансляции включает два этапа. На первом производится синтаксический разбор выражения XPath по шагам и замена всех шаблонов в предикатах псевдонимами таблиц. В результате генерируется аннотированное дерево разбора. На втором этапе путем обхода дерева с использованием графа виртуального представления строится SQL запрос. Программно эта логика реализована в трех классах: XPathParser и QueryBuilder, соответственно, производят разбор XPath и синтез SQL запроса, а XPathTree представляет аннотированное дерево разбора. Постобработка результатовИнструкция SELECT направляется на выполнение ядру СУБД с помощью стандартного механизма ADO.NET. Обработка результатов производится в классе XmlTagger на основе информационной схемы InfoSchema и дерева разбора XPathTree путем построчного сканирования таблицы. Программная реализацияПрграмма реализована в виде двух библиотек классов (MyXmlSql.dll и MyControls.dll) и основного приложения XmlView.exe) на языке программирования С# в среде разработки Microsoft Visual Studio 2003. Схема взаимодействияСхема взаимодействия между классами и направления потоков данных показаны на следующем рисунке:
Рис.3. Схема взаимодействия между классами MyXmlSql Здесь зеленые пустые стрелки обозначают зависимости между классами (исходящий конец соответствует зависимому классу), синие заполненные стрелки показывают направление потоков данных. Приложение XmlView.exeПриложение XmlView.exe демонстрирует использование рассмотренной выше инфраструктуры классов MyXmlSql и графических компонентов MyControls. Оно расчитано на работу в следующем системном окружении:
XmlView.exe обеспечивает следующую функциональность:
Внешний вид главного окна приложения и несколько основных режимов представлены на серии скриншотов:
Рис.4. XmlView.exe: Главное окно, иерархия таблиц
Рис.5. XmlView.exe: XSD cхема базы данных
Рис.6. XmlView.exe: Результат выполнения запроса - закладка XML Text
Рис.7. XmlView.exe: Результат выполнения запроса - закладка XML Tree
Рис.8. XmlView.exe: Сгенерированный SQL запрос - закладка SQL Query Сводка результатовОсновными результатами настоящей работы является следующее:
Программа реализована на языке программирования С# в среде Microsoft Visual Studio 2003 и тестировалась на СУБД Microsoft SQL Server 2000. ЗаключениеПредложенная методика XML представления реляционных данных является синтетической, промежуточной между существующими системами XML-to-SQL Translation и реляционными СУБД с поддержкой XML. Ее основным преимуществом является простота и удобство языка запросов, сочетающего выразительность таких разных языков, как XPath и SQL. На данный момент структура выходных XML результатов ограничена только простыми иерархиями элементов и линейно-рекурсивные схемами фиксированной глубины. Развитие методики должно обеспечить возможность генерирования нелинейной иерархии, чтобы по своим выразительным способностям XmlView не уступал продуктам, базирующимся на “тяжелых” языках, таких как XSLT и XQuery. Конкретно возможны следующие направления развития:
Также возможно использование существующих XML процессоров с открытым кодом (Saxon, Xalan и др.) в качестве ядра модуля трансляции запросов, что приблизит XmlView по возможностям к существующим XML-to-SQL системам, но потребует существенного пересмотра архитектуры системы. Об автореШвалев Евгений Сергеевич
Контакты:
|
Официальные лицаКалендарь событий
Санкт-Петербург, ул. Обручевых, д. 1 +7 (812) 703-02-02