Автор: Пользователь скрыл имя, 01 Мая 2012 в 17:05, курсовая работа
Цель данной работы – исследовать способы хранения XML в базах данных, выявить их достоинства, недостатки, область применения. Для достижения данной цели необходимо решить следующие задачи:
а) выявить особенности языка XML;
б) определить и проанализировать существующие способы хранения XML;
в) определить область применения способов хранения;
г) определить существующие на практике критерии выбора способа хранения;
д) реализовать один из способов хранения XML в базе данных.
Введение
1 ОБЩЕСИСТЕМНЫЙ РАЗДЕЛ
1.1 Языки разметки
1.2 Язык разметки XML
1.2.1 Особенности XML
1.2.2 Синтаксис XML
1.2.3 Структура XML
1.3 Базы данных и системы управления базами данных
1.3.1 Общие понятия о базах данных и системах управления базами данных
1.3.2 Реляционные системы управления базами данных
1.4 Хранение XML
1.4.1 Задача хранения
1.4.2 Документы и данные
1.4.3 Способы хранения XML-документов
1.4.3.1 Хранение в файловой системе
1.4.3.2 Хранение в реляционной базе данных
1.4.3.3 Хранение в БД поддерживающей XML
1.4.3.4 Хранение в специализированных xml-серверах (истинных БД)
1.4.4 Критерии выбора способа хранения
1.5 Обзор готовых продуктов
2 СПЕЦИАЛЬНЫЙ РАЗДЕЛ
2.1 Постановка задачи
2.2 Выбор способа представления XML в РСУБД
2.3 Разработка схемы базы данных
2.4 Выбор средств реализации
2.4.1 Выбор системы управления базами данных
2.4.2 Выбор языка программирования
2.5 Разработка интерфейсного ПО
2.6 Инструкция по применению
ЗАКЛЮЧЕНИЕ
Список использованных источников
Приложение
Приложение А
Приложение Б
node_id – идентификатор записи, первичный ключ;
doc_id – идентификатор документа;
nodeName – имя элемента XML (имя тэга);
nodeValue – значение элемента XML;
nodeLeft_id – левый номер элемента;
nodeRight_id – правый номер элемента:
attrList – список атрибутов элемента.
Для ускорения поиска сделаем столбцы doc_id, nodeName, nodeValue, attrList ключами (СУБД производит индексирование ключевых полей).
Далее необходимо решить вопрос с нормализацией таблицы. Для нормализации можно ввести дополнительные таблицы атрибутов и имен элементов. Тогда схема базы данных несколько изменится (смотри таблица 2.5, 2.6). Из главной таблицы исчезнет поле attrList и добавиться одна таблица для хранения атрибутов. В ней присутствуют следующие поля:
attr_id – идентификатор атрибута, первичный ключ;
node_id – идентификатор элемента, внешний ключ, ссылающийся на первичный ключ главной таблицы;
attrName – имя атрибута;
attrValue – значение атрибута.
Но, в общем случае, неизвестно, для хранения каких документов будет использована база данных. Многие элементы будут встречаться в документе только один раз, а скорость взаимодействия с БД снизится из-за усложнения запросов на выборку и добавление.
Таблица 2.5 - Структура главной таблицы для метода вложенных множеств
node_id | doc_id | nodeName | nodeValue | nodeLeft_id | nodeRight_id |
… | … | … | … | … | … |
|
|
|
|
|
|
Таблица 2.6 - Структура таблицы для атрибутов
attr_id | node_id | attrName | attrValue |
… | … | … | … |
|
|
|
|
Поиск по атрибутам достаточно редок, к тому же в спецификации XML не рекомендуется использовать много атрибутов, желательнее делать дочерние элементы. Поэтому из предложенных двух схем выберем первую, с одной таблицей. При таком подходе в текстовом поле attrList будем хранить список атрибутов вида «имя=значение», разделенных символом пробела, а для поиска использовать оператор like языка SQL.
Как было сказано выше (смотри § 1.4.), готовые продукты либо требуют написания собственного кода, либо сложной настройки, либо являются платными. Поэтому необходимо разработать новое приложение для решения поставленной задачи.
Сначала необходимо определить какая реляционная СУБД будет использоваться. Выбранная СУБД должна удовлетворять следующим требованиям:
простота изучения;
поддержка механизма транзакций;
надежность;
кроссплатформенность;
поддержка баз данных как можно большего размера.
Для того, чтобы у СУБД был потенциал для реализации в ней других способов хранения и модернизации существующих необходимо также выполнение дополнительных требований:
поддержка больших текстовых полей;
триггеры;
хранимые процедуры.
Поскольку выбранная база данных нужна скорее для демонстрации способов хранения, а не для коммерческого использования необходимо, чтобы она была свободно распространяемой.
Системы управления реляционными (СУБД) баз данных разрабатывают такие компании как IBM, Oracle, Microsoft, Sybase и Teradata и др. Из всех реляционных СУБД будем рассматривать только лидирующие [21]. Результаты сравнения смотри в таблице 2.7.
Таблица 2.7 - Сравнение СУБД
СУБД | Свобод. лицензия | Поддержка ОС | Поддержка транзакций | Простота изучения | Размер БД | Макс. размер BLOB | Поддержка триггеров, храним. процедур |
Firebird | * | Windows, linux, bsd, mac os, unix | * | * | Не ограничен | 2 Гб | * |
MySQL | * | Windows, linux, bsd, mac os, unix, | * | * | Не ограничен | 4 Гб | * |
PostgreSQL | * | Windows, linux, bsd, mac os, unix | * | * | Не ограничен | 1 Гб | * |
Oracle |
| Windows, linux, mac os, unix | * |
| Не ограничен | 2 Гб | * |
MsSQL |
| Windows | * |
| Не ограничен | Не ограничен | * |
Как видно из таблицы 2.7 все приведенные СУБД соответствуют необходимым критериям выбора. При прочих равных условиях решающим фактором выбора становиться изученность программистом той или иной СУБД, поэтому мы и воспользуемся СУБД MySQL.
Основные возможности данной СУБД [2]:
независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
транзакции;
поддержка SSL;
кэширование запросов;
полнотекстовая индексация и поиск;
вложенные запросы и производные таблицы.
полноценная поддержка Юникода (UTF-8 и UCS2);
хранимые процедуры и функции;
обработчики ошибок;
триггеры;
представления.
На сегодняшний момент последней стабильной версией данной СУБД является MySQL 5.5, которую мы и будем использовать.
Поскольку основная сфера использования XML – интернет, то и язык программирования должен обладать удобными средствами программирования для сети. К тому же необходимо избавить пользователей от установки какого-либо сложного программного обеспечения для взаимодействия с приложением. Весь код должен выполняться на сервере, пользователю нужен лишь браузер.
В настоящее время в качестве языков программирования для веб используются языки на основе .NET - C#, Visual Basic и др., и кроссплатформенные языки - Java, PHP, Perl и др.(смотри рисунок 2.2.).
Рисунок 2.2 - Популярные фреймворки и языки программирования для веб
Не существует одного языка программирования, который бы превосходил все остальные. Превосходство какого-либо языка программирования может проявляться только в контексте какой-либо задачи [1]. Многие задачи могут быть эффективно решены с помощью любого современного популярного языка программирования. Часто, выбор языка и фреймворка определяется тем, какими знаниями обладают программисты, готовые реализовать проект. Сравнение языков программирования смотри в таблице 2.8.
Как видно из таблицы 2.5. наиболее подходящим для решения поставленной задачи является язык программирования PHP - (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста) — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания веб-сайтов [6].
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом. В области программирования для Сети PHP — один из популярнейших скриптовых языков благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе открытой лицензии PHP. Последней стабильной версией PHP является PHP 5.3.2, который мы будем использовать.
Написание программы на PHP позволить пользоваться готовым приложение при помощи любого браузера, избавляя пользователей от необходимости устанавливать какое-либо программное обеспечение, так как весь код будет выполняться на сервере. В качестве сервера будет использоваться Apache HTTP-сервер (сокращение от англ. a patchy server) — свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживающим операционные системы GNU/Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Таблица 2.8 - Сравнение языков программирования для веб
Язык программирования | Кросс-платформенность | Скорость выполнения | Поддержка большинством хостингов | Средства для обработки XML | Простой синтаксис | Знание языка |
JavaScript, Adobe Flash, SilverLight | * |
| * |
| * |
|
C#, Visual Basic, Jscript |
| * |
| * | * | * |
PHP | * | * | * | * | * | * |
Perl | * |
|
|
|
|
|
Ruby | * |
|
|
| * |
|
Информация о работе Методы хранения XML в реляционных базах данных