Автор: Пользователь скрыл имя, 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 Инструкция по применению
ЗАКЛЮЧЕНИЕ
Список использованных источников
Приложение
Приложение А
Приложение Б
Таблица 1.6 - Content (Document) Management Systems
Продукт | Разработчик | Лицензия | Тип базы данных |
Amaxus XML Content Management System | Box UK | Commercial | Relational |
Arca Document Management System | 3Squared | Commercial | Native XML (TEXTML Server) |
Astoria | LightSpeed Software | Commercial | Object-oriented |
Cascade Server | Hannon Hill Corporation | Commercial | Relational |
CMS | Sorman | Commercial | Object-oriented (POET) |
Content@XML | XyEnterprise | Commercial | Relational (Oracle) |
Documentum | Documentum, Inc. | Commercial | Relational |
Dynabase | Red Bridge Interactive | Commercial | Object-oriented (ObjectStore) |
eidonXportal | eidon | Commercial | Relational |
engenda | Red Bridge Interactive | Commercial | ObjectStore/Dynabase |
entrepid | Red Bridge Interactive | Commercial | Oracle 8i |
Как видно из приведенных выше таблиц, практически все программное обеспечение платное, а среди систем управления содержанием совсем нет свободного программного обеспечения.
В данной работе необходимо реализовать хранение XML на основе объектно-реляционного отображения документа в базу данных. Требования к приложению:
обеспечить возможность ввода XML документа;
обеспечить возможность сохранения XML документа любой структуры в базе данных;
обеспечить возможность поиска и извлечения документа из БД;
Далее предположим, что изменения в структуре XML документа вносятся реже, чем выполняются запросы на добавление документа в базу данных и извлечения документа из базы. Это предположение основано на фактах из реальной жизни. Бухгалтерские отчеты, бланки заявлений и многое другое имеют постоянную структуру, редко меняющуюся с течением времени. Гораздо чаще документы сохраняются и извлекаются из БД. Также предположим, что каждый документ, внесенный в базу данных, имеет уникальный номер.
Задачи, которые необходимо выполнить для реализации:
выбрать способ представления ХМЛ в РСУБД;
разработать схему БД в соответствии с выбранной моделью отображения;
выбрать средства реализации;
реализовать БД;
реализовать типовые запросы к данным.
В настоящее время для хранения древовидных структур в базах данных применяются два основных метода: метод матриц смежности и метод вложенных множеств (метод обхода).
Граф можно представить в виде матрицы смежности, где на пересечении i-ой строки и j-го столбца стоит "1", если между узлами (вершинами) графа, с номерами i и j, соответственно, есть связь (ребро, дуга), или "0" в противном случае. Для реализации этого способа в базе данных создается таблица, в которой хранятся элемент дерева и ссылка на родителя. Примерный вид таблицы базы данных смотри в таблице – 2.1.
Таблица 2.1 - Примерный вид таблицы БД для хранения деревьев в реляционной базе данных по методу матриц смежности
ID | Вершина графа | ID родителя |
… | … | … |
При таком способе хранения ID выступает в качестве первичного ключа а ID родителя в качестве внешнего ключа, ссылающегося на ID. Преимущества и недостатки данного метода смотри в таблице 2.2.
Для наглядного представления метода вложенных множеств смотри рисунок 2.1. Квадратик на рисунке обозначает узел, цифра в левом его углу является порядковым номером этапа маршрута при входе в узел, а цифра справа — при выходе, т.е. когда тем же способом пройдены все потомки. Отсюда следует и название метода – все номера потомков узла находятся в интервале между его левым и правым номером. Храня порядок обхода дерева, мы избегаем рекурсии при выполнении запросов. Очевидная сложность — пересчет порядка обхода при добавлении новых или перемещении имеющихся узлов (удаление можно игнорировать).
Таблица 2.2 - Преимущества и недостатки метода матриц смежности
Простота структуры (таблиц/ссылок/минимальное количество полей) | 1/1/3 |
Прямая выборка всех детей узла | да |
Прямая выборка поддерева (всех потомков узла) | нет, рекурсия |
Прямая выборка пути от узла до корня (всех предков узла) | нет, рекурсия |
Быстрое определение количества всех потомков узла | нет, рекурсия |
Быстрое определение уровня | нет, рекурсия |
Быстрая вставка новых узлов | да |
Быстрое перемещение поддерева | да |
Быстрое удаление поддерева | да, каскадное |
Избыточность хранения | нет |
Количество уровней дерева | неограничено |
Для нумерации дерева может быть использован алгоритм обхода графа в глубину. Обозначим стек для открытых вершин через S. Через top(S) обозначается верхний элемент стека (т.е. последний элемент, добавленный к стеку). Тогда процедура обхода одной компоненты связности методом поиска в глубину со стартовой вершиной A может быть записана следующим образом:
Начало
Посетить вершину A
Сохранить A в S (A=>S)
Пока S не пуст делай
x = top(S)
Если имеется неисследованное ребро (x, y), то
Исследовать ребро (x, y)
Все если
Если вершина y новая, то
Посетить вершину y
Сохранить y в S (y=>S)
Иначе
Удалить x из S
Все если
Все пока
Конец
Рисунок 2.1 - Нумерация узлов в методе вложенных множеств
Преимущества и недостатки данного метода смотри в таблице 2.3. Как следует из таблиц, метод матриц смежности обеспечивает быструю вставку и удаление вершин дерева, но медленное извлечение дерева. А метод вложенных множеств быстрое извлечение дерева, но медленную вставку и удаление вершин.
Таблица 2.3 - Преимущества и недостатки метода вложенных множеств
Простота структуры (таблиц/ссылок/минимальное количество полей) | 1/0/4 |
Прямая выборка всех детей узла | да |
Прямая выборка поддерева (всех потомков узла) | да |
Прямая выборка пути от узла до корня (всех предков узла) | да |
Быстрое определение количества всех потомков узла | да |
Быстрое определение уровня | да |
Порядок следования узлов при сортировке | да |
Быстрая вставка новых узлов | нет |
Быстрое перемещение поддерева | нет |
Быстрое удаление поддерева | да |
Избыточность хранения | да |
Количество уровней дерева | неограничено |
Поскольку в §2.1 было сказано, что изменения в структуре XML документы вносятся реже, чем выполняются запросы на добавление документа в базу данных и извлечения документа из базы, то наиболее оптимальным методом представления XML в БД будет метод вложенных множеств.
Для метода множенных множеств разработаем структуру таблицы базы данных (смотри таблица 2.4.).
Таблица 2.4 Структура таблицы для метода вложенных множеств
node_id | doc_id | nodeName | nodeValue | nodeLeft_id | nodeRight_id | attrList |
… | … | … | … | … | … | … |
|
|
|
|
|
|
|
Информация о работе Методы хранения XML в реляционных базах данных